彩虹桥上的棱镜塔:Web3 与中间件 — Kafka

HashHunter
2022年8月7日 20:14
收藏
奥丁召来了弗雷的使者,光精灵史基尼尔。他向史基尼尔描述了一条叫做格莱普尼尔的绳索。史基尼尔骑着马,通过彩虹桥到达了萨法塔夫汉。向矮人们描述怎样制造一条前所未有的绳索。

来源:Confluent Kai Wahner 
编译:Masterdai

 

一:背景和展望

 

早在2016InfoQ的国际会议上,Kai Wahner 发表了一场演讲名为《区块链——中间件的下一件大事》。他在当时提出了一种新颖的基于区块链数据和中间件的参考架构,这一套架构现如今被大量的技术集成商和供应商所采用。

image

然而,他并没有加入任何一家加密初创公司。而是在2017年加入了Confluent,因为他认为“通过事务和分析型工作负载来处理任何规模的动态数据是更加重要的范式转变。”对于加入Confluent 这个决策Kai认为他是正确的,正如同Kai在博客中写道,“现如今大部分的企业都利用Kafka作为MQETLESB工具的替代中间件,或者使用无服务Kafka实现云原生iPaaS。”

故事并没有在这里戛然而止,区块链、加密技术和NFT的出现和规模化采用激增了对中间件等开源基础软件的需求。出于充分的理由(规模性、可靠性、实时性),有许多的加密市场网站、区块链监控基础设施和托管银行建立在Kafka之上。这些客户成功的关键就在于将区块链、加密货币与企业服务软件、数据库和数据湖进行了集成。

如果我们把Chainlink这类预言机比作一道连接链上网络和链下世界的彩虹桥,而像KafkaFlink 这样的中间件就是用来折射虹光的棱镜塔。

 

二:什么是中间件

 

中间件是位于操作系统和在其上运行的应用程序之间的软件,其支持分布式应用程序之间的通信和数据管理。它有时候也被称为管道,因为将两个应用程序连接在一起,因此数据和数据库可以轻松地在“管道”之间传递。常见的中间件包括数据库中间件、应用服务器中间件、面向消息中间件等等。换句话说,它实现了一组\一个应用程序与另一个\一组应用之间的对话和通信,就像是一个跨国派对中的中间介绍人加翻译。而Kafka就是消息中间件的一种。

Apache Kafka

Kafka 是一个开源分布式事件流处理平台,最初由2011年在LinkedIn创建并且开源。

Kafka 通过三个关键功能使得用户可以搭建一个实现端到端解决方案的事件流

  • 发布(写入)和订阅(读取)事件流,包括从其他系统持续导入或导出数据。

  • 持久并且可靠的存储事件流。

  • 处理瞬时发生或者回顾发生的事件流。

事件流:以流式事件的形式将数据从各个数据源(数据库、传感器、移动设备、云服务、应用程序)进行抓取;为后续的检索进行持久的存储;以实时和可追溯的方式操纵处理和响应事件流;并且根据需要将事件传递到不同目标的技术。事件流确保了数据的连续流动和表达,从而使正确的信息在正确的时间出现在正确的位置。

image

Apache Kafka 的用例

  • 消息传递Kafka可替代传统的消息代理。消息代理常被适用于数据存储和处理的解耦,缓冲未处理响应的消息等等。

  • 网站活动跟踪:将跟踪用户活动的管道重建为一组实时的发布—订阅源。将用户在站点的活动(页面查看、搜索、点击等其他操作)发布到中心主题,每一个活动类型都有一个主题。这些订阅源可以用于订阅一系列用例,包括实时处理、监控以及加载到Haadop或者离线数仓系统进行处理和报告。

  • 日志聚合:使用Kafka作为日志聚合方案的替代品。日志聚合通常从服务器收集日志文件,并将它们放在一个中心位置(文件服务器或者HDFS)进行处理。Kafka抽象出文件的细节,并将日志或事件数据抽取为更清晰的数据流,这使其在多个数据源和分布式数据库情况下拥有更低延迟的数据处理。

 

三:kafkaweb3的关系

 

下图是一个非常经典的Dapp技术实现原理,但他却给了很多人一个错觉。似乎只需要一个前端来向以太坊网络请求数据,就能够实现链上和链下行为的交互了。在实际的开发过程中,往往会更加复杂,并且会在区块链后端和前端之间增加一层结构。

image

在这样的一层结构中我们可以实现:

Kafka 以侧链或者链下的方式来进行大规模实时数据计算;区块链技术与企业其他软件部分的集成,包括CRM、大数据分析、和任何其他自定义的业务应用程序。Kafka作为区块链集成的中间件。

image

在加密企业架构中更加普遍的用例是利用Kafka作为区块链与企业应用程序之间的可扩展实时数据中心。下面是一些例子,并且探讨一些Kafka可以提供帮助的技术用例

3.1.Kafka作为元宇宙的数据中枢

零售商家和用户之间的交流必定是实时的,无论你是想要卖实体的衣服、手机、或者在NFT交易市集之中和虚拟人商家进行讨价还价。而以下架构通过编排各种加密和非加密应用程序之间的信息流来实时支持任何规模的虚拟世界架构。

image

3.2.Kafka在加密交易、市场中作为数据中枢的角色

用户在移动钱包执行比特币交易。实时应用程序监控链下数据、关联数据、在仪表盘中显示并发送推送通知。另外一个完全独立的部门在批处理的过程中回放来自Kafka日志的历史事件,以使用专用分析工具进行合规性检查。

image

Kafka 生态系统中提供了许多功能,可以将来自区块链和加密世界的数据与来自传统IT的数据一起使用。

 

四:Kafka可以提供的技术用例

 

  • 监控区块链基础设施、加密货币和Dapp的健康状况,以避免停机,保护基础设施并使得区块链数据可访问。——基础设施维护

  • 通过Kafka StreamksqlDB进行流处理可以在DefiNFT等相关交易市场进行实时数据处理。——链上数据分析

  • Kafka作为预言机的集成通道:例如从Chainlink传递到Kafka再到IT基础设施。

  • 通过Kafka 主干上的节流和随机数管理来处理背压(在数据流从上游生产者向下游消费者传输的过程中,上游生产速度大于下游消费速度,导致下游的Buffer溢出),并将事务流式传输到链上。——GamefiSocialfi 

  • 同时处理多个链:并行监控和关连以太坊、solanaBsc区块链上的交易。——跨链相关

我们可以看到,未来随着新一代gamefidefisocialfi、移动端Dapp的增长,过去仅仅是将链上数据摄取到数据库和数据湖的方法已经不能满足现有新应用的需求了。在架构设计中充分地利用消息中间件的特性,可以满足大部分用户对于实时性、可靠性的需求。

 

五:加密和Defi世界中Kafka的真实案例

 

  • TokenAnalyst : 加密市场的可视化

  • EthVM:区块链浏览器和分析引擎

  • Kaleido:用于区块链和智能合约的REST API 网关

  • Chainlink:用于将智能合约从区块链连接到现实世界的Oracle 网络

5.1.TokenAnalyst  加密市场的可视化

TokenAnalyst 是一个链上数据分析工具,用于可视化和提供企业级API服务。该项目于20205月宣布停止运营,其团队大部分成员加入Coinbase。不过他的案例仍然值得借鉴——其利用Kafka堆栈(ConnectStreamsksqlDBSchema Registry)将来自比特币和以太坊的区块链数据与其分析工具集成在一起。

“访问链上数据需要节点,而这并不如人们想象中断那么容易(各个版本和地区之间的数据差异)。此外,另一个挑战是使他们与网络保持同步。为了实现零停机,并且确保最高标准的数据质量和可靠性,我们决定使用Kafka Confluent 平台。”

TokenAnalyst 开发了一个名为Ethsync的内部解决方案。每个节点加上 Ethsync 都将数据推送到其对应的 Kafka 主题。如同下图所示,其需要运行多个节点以实现冗余。推送到主题的块更新并且客户端接受为新的有效块的块。但是,由于区块链的性质,可能会发生区块链的分叉(一条替代链变长并导致另一条链失效)。因此,以前有效的块可能会变得无效。(笔者注:这个问题现在的很多项目方也会遇到。)

image

基于Kafka Streams的区块确认器:为了防止在下游聚合计算中使用无效块,TokenAnalyst开发了一个基于 Scala 中的Kafka Streams 的块确认器组件。它通过临时保留块来解决重组场景,并且仅在达到一定数量的确认块(挖掘该块的子块)时才传播它们。

确认器不仅解决了验证规范链的问题,并且能够通过确认丢弃和已经注册的块,来输出具有有效一次性语义(Exactly-once semantics)的确认块。通过该组件可以使其充分利用容错恢复机制,适用于零停机环境的滚动部署。

5.2.EthVM  区块链浏览器和分析引擎

比特币和以太坊等公共去中心化区块链的美妙之处在于其透明度,防篡改日志使得区块链浏览器能够监控和分析所有的交易。

EthVM 是一个开源的以太坊区块链数据处理和分析引擎,由 Apache Kafka 提供支持。该工具支持区块链审计和决策。EthVM 验证交易和智能合约的执行,检查余额并监控gas 价格。该基础设施是使用Kafka ConnectKafka Streams  Schema Registry 构建的。还包括一个客户端可视化块资源管理器。

image

EthVM使用Kafka的契机来源于Boerge Svingen Confluent博客上发表的一篇名为《在纽约时报上使用Apache Kafka 发布》的文章,其描述了标志性的纽约时报如何从混杂的API、服务、生产者和消费者转变为用Kafka驱动的基于日志的架构。

而区块链本质上就是一个不断增长的记录列表,合并成块并且用密码学来链接——用程序员的话说就是链表。Kafka的术语中,以太坊客户端就是生产者——负责创建日志的新条目。

5.3.Kaleido  用于加密和智能合约的 Kafka 原生网关

Kaleido 提供企业级区块链 API 来部署和管理智能合约、发送以太坊交易和查询区块链数据。它隐藏了以太坊交易提交、Web3客户端库、nonce管理、RLP 编码、交易签名和智能合约管理的区块链复杂性。

image

Kaleido 为链上逻辑和数据提供 REST API。它由完全托管的高吞吐量Apache Kafka 基础架构提供支持。

在基于区块链的分布式事务系统中,对事件的检测和反应是不可避免的要求。没有一个参与者或应用程序可以控制状态变化,链上的智能合约逻辑不可能直接与链下系统通信——否则逻辑的确定性就会受到损害。

事件(通过事务“日志”传递)是编程模型的核心部分,使用丰富的类型系统很容易发出。

这些事件不仅可以用来触发逻辑,还可以作为数据流从链中流出。

  • 用于在web端和移动端的高效数据检索

  • 实时分析引擎和数据湖

  • 无服务或传统计算来触发应用程序和业务流程

Kaleido 提供了两种内置功能来处理这些事件,无需直接使用复杂的原始 JSON/RPC 接口、处理检查点重启/恢复或RLP 解码和类型映射。(分别是Chainlink Event streaming

image

事件流:使用与REST API 网关集成的REST API 进行订阅,并通过简单的Webhook 将事件传递到任何HTTP 接口,或者通过Apache Kafka 支持的加密App 2 App Messaging 层。

5.4.Chainlink  用于将智能合约从区块链连接到现实世界的 Oracle 网络

Chainlink 是用于将智能合约连接到现实世界的行业标准预言机网络。“借助 Chainlink,开发人员可以构建混合智能合约,将链上代码与由去中心化 Oracle 网络提供支持的大量安全链下服务相结合。由数十万人组成的全球去中心化社区管理,Chainlink 引入了更公平的合约模型。它的网络目前为去中心化金融 (DeFi)、保险和游戏生态系统等领域的智能合约提供数十亿美元的价值。Chainlink网络的完整愿景可以在Chainlink 2.0白皮书中找到。”

image

Chainlink并没有在任何公开的博客文章和会议中讨论其设计架构。我们只能从其招聘人员的工作栈要求中窥见其设计——Chainlink正在从传统的基于时间序列的监控过渡到事件驱动的架构。

 

六:小结

 

在这些节点设施服务商出来之前,普通人想要获取链上的数据信息是非常困难的。而现在,任何一个能够上网的人都可以通过区块链浏览器或者链上数据分析工具看见相对实时的区块数据。

然而,能够看见数据和大规模的使用数据是完全不同的概念。

“神祇们不会攀爬世界之树。他们用彩虹桥穿行于几大世界之间。只有神才能用彩虹桥。如果冰霜巨人或者别的巨人试图通过彩虹桥爬上阿斯加德,他们的脚就会被烧伤。”

尽管我们现在有了节点托管、Web3API等服务的帮助,链上和链下之间进行高效实时沟通的成本依然很大。如同北欧神话中的彩虹桥,它依然是某些神祇们的专属通道。原因就在于链上数据和链下业务之间存在大量的空白环节。Kafka仅仅只是消息传递的一个环节,在此之间还有数据的实时抓取、清洗和存储。而过去服务于传统IT业务的中间件、数据库等并不一定完全适用于现有的Web3 IT架构。随着越来越多的企业和业务迈入加密领域,未来也可能会出现一种全新的基于区块链网络的开源中间件和数据分析架构。

我希望有一天,人人都能拥有开启彩虹桥的能力。我们将自由的穿梭在世界之树所缔造的九界之间,与众生灵交流。

链捕手ChainCatcher提醒,请广大读者理性看待区块链,切实提高风险意识,警惕各类虚拟代币发行与炒作, 站内所有内容仅系市场信息或相关方观点,不构成任何形式投资建议。如发现站内内容含敏感信息,可点击 “举报”,我们会及时处理。
ChainCatcher 与创新者共建Web3世界