01 简介

VoltDB是一个高速决策引擎,为必须在数毫秒内做出响应的应用程序提供基础架构支持,适用场景包括BSS(策略和收费)、预防欺诈、客户价值管理(即个性化)和实时工业自动化等等,那些通过实时决策可以增加收入或减少损失的场景。

这些应用程序通常需要VoltDB运行在一个多样化和异构计算的软件生态里,它需要与各种技术集成对接,包括Apache Kafka。实际上,Kafka已然成为企业消息队列的首选中间件。Kafka Connectors丰富的生态系统让其它技术框架与VoltDB集成变得很简单。

虽然有很多技术可以从Kafka里提取数据来并交给下游进一步处理,但能够同时完成实时数据决策需求的技术就屈指可数了。

通过订阅Kafka Topic,VoltDB可以直接从Kafka上提取数据,并在10毫秒内完成数据决策,然后立即把结果发送回Kafka,在诈骗实施得手或者失去盈利机会前,完成相关决策执行。

VoltDB让企业在Kafka技术生态的投值增值,它实现了在复杂流数据上的实时决策能力,让应用开发重心放在处理重要的业务逻辑上,在实时完成数据的分析、处理和修改。

我们的客户通过集成VoltDB和Kafka,赋能让各种应用场景,比如:让电话接线员给在90多个国家的用户提供实时的个性化服务,帮助需要大规模、高并发、实时响应的大型体育运动平台提供流畅的个性化用户体验。

在已经建立成熟的事件驱动型软件架构中,只需要加入VoltDB,您的应用程序就可以获得实时分布式事务决策的能力,可以有效应对5G时代下的物联网、机器学习的实时推理决策需求。

随着5G、机器学习和物联网的迅猛发展,VoltDB和Kafka技术的对接已经非常成熟,它使Kafka能够快速并无缝地查询复杂的流数据。Kafka建于2011年,用于处理流数据,那时5G,物联网和机器学习等实时处理的需求还并不是特别旺盛,因此,尽管Kafka在某些场景下可以正常工作,但可能不适用于当代快速查询复杂流数据的场景。

02 Kafka的强大之处

当今的经济是建立在知识和数据的基础上的。与往日的石油经济一样,现代公司需要搭建基础设施,并快速并有效地处理这些知识和数据。

通过创建一个只为了让线性数据流动的中央管理系统,Apache Kafka在很大程度上降低了系统的复杂程度。Kafka完全是从头开始建造的吞吐量明显高于任何连接组件。最后,它是作为实时流数据平台构建的,始终可以让数据流实时传递。

Kafka不只是在信息传输上面表现出色,它还有其它优势:无限制的水平扩展性和简单的数据存储,在实时的流数据传递过程中可以无性能损耗的存储数据。

虽然Kafka加上KsqIDB可以通过类SQL语言读取实时流数据,如果需要进行储存和运算数据的话则需要多种辅助工具比如NoSQL数据库、流处理技术和规则引擎等。为了达到5G、工业物联网及它们相关的实时控制回路所需要的低延迟标准和智能化要求,我们需要将这些技术封装到一个中间件里,这就是VoltDB。

03 你的选择:集成还是替换

根据架构和事件驱动架构的发展程度,应用程序可以通过使用importer-exporter框架将VoltDB与Kafka消息队列集成,或者可以使用新的Topics功能本身将VoltDB用作Kafka消息队列。以下是这两个选项的简要概述。

3.1用importer-exporter框架来进行整合
VoltDB的importer-exporter框架提供了与其他技术(如Kafka,Kinesis,JDBC,Elastic,Hadoop等)的无代码集成。
导入程序将数据流传输到VoltDB中以按事件进行提取,同时确保消息/记录在存储后的持久性导入到VoltDB。然后,exporter可以以At-Least Once语义,将后处理消息/记录推送到下游系统。

3.2 导入
Importer框架让用户程序集成VoltDB到事件驱动型架构。VoltDB的Importer框架管理如下过程:

  1. 轮询外部系统是否有新的可用数据
  2. 导入数据
  3. 逐条处理数据
  4. 在同一个存储过程中,依次传递数据给应用程序的业务逻辑,完成用户的自定义业务处理

可以在配置文件中或通过VoltDB的用户界面声明性地配置用于不同系统的Importer。这些内置的导入器在数据库启动时自动运行,在数据库停止时自动停止,使数据导入成为数据库操作过程的一部分。此外,Importer连接器还为摄取的事件提供持久性,以确保在灾难情况下不会丢失任何数据。可以在正在运行中的数据库上创建导入程序实例,而无需停机。

VoltDB Kafka Importer使用Kafka Consumer API从多个Kafka代理和多个Topic提取数据。开发人员可以使用与Kafka Consumer相同的属性配置导入程序。

3.3导出
导出会自动执行与导入相反的过程,捕获写入到导出表或流中的所有数据并将其发送到关联的外部目标,无论是文件,服务(例如Kafka)还是其它数据库。
开发者可以选择导出特定记录或迁移由于TTL过期而从表中删除的行。导出过程是事务性的,因此开发人员可以确保导出期间不会丢失任何记录。VoltDB保证每条数据记录将至少导出一次(At – Least Once)。

3.4替换

VoltDB Topic特性(测试版)

在v10.1版本里,Topic特性允许应用程序使用发布和订阅语义与VoltDB连接。除了提供更好的语义以与其它系统集成外,这该功能还允许将VoltDB用作消息队列,一站式完成VoltDB实时数据流管理和实时数据处理。
通过标准的Kafka Consumer API和Producer API来集成此功能,VoltDB可以轻松替换Kafka,特别是对于需要低延迟事务处理的数据流场景。
图片
新的Topic特性带给应用程序带来的好处在于:

  • 通过缩减Kafka集群的大小来降低成本
  • 减少跨越组件带来的网络延迟,从而降低整体的端到端延迟
  • 更简单的架构设计
  • 复用Kafka Connect生态

VoltDB实现Kafka API Topic的优势之一是可以复用Kafka Connect,让VoltDB可以无缝替换Kafka,与那些已经和Kafka集成绑定的流行技术方案更容易集成VoltDB。应用系统架构中只用替换少量组件,就可以将发布者和使用者直接嵌入,充分复用丰富的Kafka Connect生态组件。

通过使用Source和Sink Kafka连接器将各种系统与VoltDB集成在一起,开发人员可以轻松地将其数据管道连接在一起,以充分利用将消息队列与复杂的决策引擎结合在一起的独特优势。

04 结束语

现代的大数据和5G的场景需求,与传统的基础软件架构系统适用性有大量的冲突。传统基础设施,因为没有足够能力去应付瞬息万变的应用场景而即将成为历史。Kafka是在2011年被发明的,那是还是没有5G和物联网概念的时代,简单查询处理能力的程序还适用于那个时期。如今时代已经不一样了,Kafka虽然目前还是一个强大的流数据处理器,但是它仍需要一些场外援助,才能在复杂流数据上完成实时决策。

如果您正在使用Kafka,VoltDB与Kafka的集成也是容易的。但由于相信并了解Kafka的强大功能以及客户的需求,我们一直在寻找更多方法来与诸如Kafka的这类关键技术集成,这就是我们创建Kafka Importer和Exporter工具的原因,也是我们开发新的pub-sub功能的原因。

最重要的是:无论客户是否使用Kafka,我们都希望客户的数据库体系结构支持并加速其业务目标,而不是提供让人困扰的方案。这也是我们总是提供各种选项,以及与客户讨论数据架构需求的原因。

关于VoltDB

VoltDB支持需要实时智能决策的应用程序,以实现互联世界,同时又不影响ACID要求。没有其他数据库产品可以同时为需要低延时、大规模、高并发数和准确性相结合的应用程序加油。

VoltDB由2014年图灵奖的获得者Mike Stonebraker博士创建,他对关系数据库进行了重新设计,以应对当今不断增长的实时操作和机器学习挑战。Stonebraker博士对数据库技术研究已有40多年,在快速数据,流数据和内存数据库方面带来了众多创新理念。

在VoltDB的研发过程中,他意识到了利用内存事务数据库技术挖掘流数据的全部潜力,不但可以满足处理数据的延迟和并发需求,还能提供实时分析和决策。VoltDB是业界可信赖的名称,已经由诺基亚,金融时报,三菱电机,HPE,巴克莱,华为等领先组织合作有实际场景落地。

如果您对VoltDB感兴趣,欢迎私聊,与更多小伙伴一起探讨。

©著作权归作者所有:来自51CTO博客作者voltdb的原创作品,如需转载,请注明出处,否则将追究法律责任

好知识,才能预见未来

赞赏

0人进行了赞赏支持

更多相关文章

  1. 一文带你了解 Flink Forward 柏林站全部重点内容
  2. 基于 Flink 的实时数仓生产实践
  3. 你说的 Flink 和搜索引擎有什么关系
  4. 藏不住了,Flink 未来发展的最新方向在这里!
  5. 深度分析: Google 和 Apple 从来就不是死对头
  6. 百度大佬10分钟教会你是前端bug还是后端bug
  7. 2年java,蚂蚁一面,卒
  8. MySQL痿了,放不下这么多数据!
  9. Flink 消息聚合处理方案

随机推荐

  1. 关于 Golang 协程调度
  2. golang实现二倍均值算法和抢红包的方法
  3. Go语言中如何使用模板引擎
  4. Golang如何实现简单的API网关
  5. 了解Go 扁平化项目结构
  6. Golang中select的实现机制
  7. 用go实现路由的链式定义
  8. Go 1.15 版本的优化清单【总结】
  9. 详解Golang的context
  10. 详解Go 语言中的方法