VoltDB 让 Kafka 支持复杂数据流驱动的实时业务决策
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 框架管理如下过程:
轮询外部系统是否有新的可用数据
导入数据
逐条处理数据
在同一个存储过程中,依次传递数据给应用程序的业务逻辑,完成用户的自定义业务处理
可以在配置文件中或通过 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 感兴趣,欢迎私聊,与更多小伙伴一起探讨。
评论