此博客文章讨论了事件流、Apache Kafka、分布式分类帐 (DLT) 和区块链背后的概念、用例和体系结构。比较不同的技术,如汇流、AIBlockchain、Hyperledger、以太坊、波纹、IOTA和天秤座,探索何时将 Kafka、Kafka 原生区块链、专用区块链或 Kafka 与其他区块链结合使用。
使用区块链进行安全和防篡改数据处理的用例
区块链是一个炒作的话题多年。虽然许多公司都在谈论流行语,但很难找到区块链是最好的解决方案的用例。以下示例显示了区块链的潜力。在这里,它可能有意义:
- 供应链管理 (SCM):制造、运输、物流和零售查看各种用例,包括交易结算、跟踪社会责任、准确的成本信息、精确的运输和物流数据、使用集成的 ERP 和 CRM 系统的自动采购和规划、合作伙伴合同的执行、食品安全。
- 医疗保健:管理患者数据(尤其是访问控制)、管理和使用学术研究数据、防止违反法规、减少人为错误、跨领域更新患者信息、安全身份管理。
- 金融服务:使用加密货币(包括数字美元或 EURO)即时全球支付,降低最终用户的成本、审计透明度、数据来源、数据血统、欺诈减少、业务运营/财务报告/合规节约。
这些都是伟大的,有效的用例。但是你应该问自己一些关键问题:
你需要区块链吗?您需要”区块链”的哪些部分?防篡改存储和加密数据处理?具有各种组织的访问权限的联盟部署?它能增加商业价值吗?值得付出额外的努力、复杂性、成本、风险吗?
区块链技术的挑战与关注
为什么我对区块链如此怀疑?我喜欢的概念和技术!但我在现实世界中看到了以下关注和挑战:
- 技术复杂性:区块链技术还很不成熟,实施区块链项目的努力是巨大的,而且往往被低估
- 组织复杂性:在多个组织上部署区块链需要巨大的努力,包括合规性和法律概念。
- 交易速度:比特币速度慢
一些解决方案正在改进,从每天数百条消息改进到数千条消息。对于金融交易、供应链、物联网和许多其他用例来说,这种规模仍然不够好。
因此,只有在区块链技术有意义时才选择它,这一点很重要。我多年来看到的项目都是关于评估技术和进行技术POC的。类似于 5- 10 年前的 Hadoop 数据湖。我担心与 Hadoop 时代相同的结果: 技术证明已经解决, 但没有真正的商业价值或巨大的额外和不必要的复杂性和成本被添加。
分布式分类账和区块链技术
关键是要明白,当人们说”区块链”时,他们往往不是指”区块链”。它们实际上的意思是”分布式分类帐技术”(DLT)。区块链和DLT之间是什么关系?
区块链:分布式分类账技术 (DLT) 的流行语
下面更详细地探讨了区块链和 DLT:
分布式分类帐技术 (DLT):
- 分散数据库
- 由各种参与者管理。没有中央当局充当仲裁员或监测员
- 分布式记录日志,提高透明度
- 欺诈和操纵更加困难,更复杂,以破解系统
区块链:
- 区块链只不过是具有一组特定功能的 DLT
- 共享数据库 ( 记录日志 ) 但在这种情况下,使用形成链的块共享
- 块由一种称为”哈希”的加密签名类型关闭;下一个块以同样的 “哈希” 开头, 一种蜡封
- 哈希验证加密信息未作且无法作
区块链概念
区块链是无权限的(即公共的,每个人都可以访问,如比特币),要么被许可(使用一组公司或财团)。
存在不同的共识算法,包括工作证明 (POW)、风险证明 (POS) 或投票系统。
区块链在所有节点上使用全球共识。相反,DLT 可以建立共识,而无需在整个区块链上验证
区块链是一个不断增长的记录列表,称为块,使用加密链接。每个块都包含上一个块、时间戳和事务数据的加密哈希。
在我去年看到的大多数成功故事中,区块链都是一个流行语。您在互联网上阅读的许多文章都说”区块链”,但底层实现是 DLT。在评估这些技术以找到最适合您的项目的解决方案时,请注意这一点。
卡夫卡与区块链的关系
现在,您已经了解了区块链和 DLL 的用例和概念。
区块链和 DLT 与事件流和 Apache Kafka 生态系统之间如何相关?
我不会在这里介绍阿帕奇卡夫卡。只需提及以下几个原因:为什么使用 Apache Kafka 的事件流在当今任何行业都用于各种用例:
- 实时
- 可 伸缩
- 高吞吐量
- 降低成本
- 24/7 = 零停机时间,零数据丢失
- 分离 + 存储、域驱动设计 (DDD)
- 数据(重新)处理和有状态的客户端应用程序
- 集成 – 连接到物联网、传统、大数据、一切
- 混合架构 – 本地、多云、边缘计算
- 完全管理的云
- 无供应商锁定
单个 Kafka 群集甚至可以部署在多个区域和全球。对于区块链和许多其他用例来说,任务关键型部署(没有停机或数据丢失)至关重要。”分布式、混合、边缘和全局 Apache Kafka 部署的体系结构模式“详细探讨了这些主题。高可用性是考虑在区块链项目上下文中使用 Kafka 的关键基础!
卡夫卡不是区块链!
卡夫卡不是区块链。但它提供了现实世界中”企业区块链”项目所需的许多特性:
- 实时
- 高吞吐量
- 分散数据库
- 分布式记录日志
- 不可变日志
- 复制
- 高可用性
- 应用程序/客户端的分离
- 基于角色的数据访问控制
对于”真正的区块链项目”,Kafka 缺少三个基本要求:
- 防篡改
- 加密有效负载
- 在各种独立组织部署
这些缺失部分对于实现区块链至关重要
卡夫卡与区块链结合 – 用例和架构
早在 2016 年, 我在 Infoq 上就写了关于[区块链+ 中间件的下一件大事] 。需要集成区块链和企业的其他部分。
有趣的是,从那个时候开始的许多项目在今天已经不复存在了,例如,微软在Github上提出的将区块链与企业其他部分集成的Bletchley项目已经死气沉沉。许多传统的中间件(MQ,ETL,ESB)被认为是遗留的,并取代了Kafka在全球的企业。
今天,区块链项目以两种不同的方式使用 Kafka。您将 Kafka 连接到一个或多个区块链,或者实现 Kafka 原生区块链:
让我们看一下Kafka与区块链解决方案的一些不同示例。
卡夫卡和区块链 – 金融服务平台
Nash是使用区块链的加密货币现代交易平台的一个很好的例子。纳什平台的核心利用了阿帕奇·卡夫卡。他们的社区页面的以下引文说:
“纳什正在使用汇流云,谷歌云平台来提供和管理其服务。Kubernetes 和 apache Kafka 技术将帮助其更快地扩展,维护一流的记录,提供实时服务,而这些服务在今天甚至难以想象。
Nash 为传统交流提供了速度和便利性,也为非保管方法提供了安全性。客户可以投资、支付比特币、以太坊、近地天体和其他数字资产,并交易比特币。该交易所是同类交易所中的第一家,提供非保管性跨链交易,拥有真实订单簿的全部力量。Kafka 的分布式、不可变提交日志可随时按其精确顺序实现确定性可重播性另一种选择是使用或构建 Kafka 原生区块链基础结构。与比特币或以太坊等”传统区块链部署”相比,实时实现高可扩展性和大容量数据处理是使用 Kafka 的关键选择。
Kafka 支持区块链,通过单个平台实时处理和分析历史数据:
以下各节介绍了卡夫卡原生区块链解决方案的两个示例:
- 超莱格结构:一个复杂、强大的框架,用于在各种独立组织上部署
- AIBlockchain:在企业内构建区块链基础架构的灵活、直接的方法
超杠杆织物利用阿帕奇卡夫卡在胡德下交易订购
Hyperledger Fabric 是使用卡夫卡在引擎盖下使用卡夫卡的一个伟大的区块链解决方案。
在 Hyperledger Fabric 中订购是您可能从其他区块链中知道的作为”共识算法”的。它保证交易的完整性:
超莱格结构为事务提供了三种排序机制:SOLO、Apache Kafka 和简化拜占庭容错 (SBFT)。超莱格织物和阿帕奇卡夫卡有许多共同的特点。因此,这种组合是一个自然适合。为事务排序选择 Kafka可实现容错、高度可扩展和性能的基础结构。
AIBlockchain – 防篡改的 Kafka 本机区块链实现
AIBlockchain 已经实施并申请了卡夫卡本地区块链的专利。
项目卡夫卡块链在Github 上可用。它提供了一个使用 Kafka 进行篡改证据的 Java 库。消息可选地按顺序加密和哈希。库方法在 Kafka 应用程序的消息创建者代码中调用,以包装消息,并在应用程序的使用者代码中调用方法来解包消息。
由于区块链必须严格按顺序排序,因此 Kafka 区块链主题必须具有单个分区,或者每个分区的使用者必须合作对记录进行排序:
Kafka 已经为消息流实现校验和来检测数据丢失。但是,攻击者可以提供具有正确校验和的虚假记录。加密哈希(如标准 SHA-256 算法)很难伪造,这使得它们非常适合篡改证据,尽管计算比校验和多一些:
Github 项目中提供的示例存储了 ZooKeeper 中每个区块链主题的第一个(起源)消息 SHA-256 哈希。在生产中,可以使用保管库等保密设施。
有关开源 KafkaBlockchain 库、其区块链专利以及客户区块链项目的信息,请联系 AIBlockchain 团队。下面讨论的点播网络研讨会也详细介绍了这一点。
何时选择卡夫卡和/或区块链?
价格与价值是决定是否应该选择区块链技术时要回答的基本问题。
如果您考虑区块链 / DLT, 进行比较并做出正确的选择非常简单:
使用 Kafka 原生区块链,如 AIBlockchain
- 企业基础架构
- 开放、可扩展、实时的要求
- 灵活的架构,适合许多用例
使用真正的区块链 / DRT, 如海勒格, 以太坊, 波纹, 天秤座, Iota 等
- 在各种独立组织部署(参与者验证分布式分类帐内容本身)
- 特定用例
- 服务器端由多个组织管理和控制
- 业务价值推翻增加的复杂性和项目风险的方案
使用 Kafka 和区块链一起将两者的好处结合起来
- 区块链/DLT 技术与企业其他部分(包括 CRM、大数据分析和任何其他自定义业务应用程序)之间的集成
- 使用 Kafka 实时进行数据处理,用于内部使用案例
- 通过各种独立组织进行安全通信的区块链
带分层存储的阿帕奇卡夫卡无限长期存储
如今,Kafka 可很好地处理最近发生的事件、短视距存储和手动数据平衡这种组合内存和存储的概念通常是好的。但有时,您需要长时间存储大量数据。
区块链就是这样一个用例!
因此,让我们来谈谈使用分层存储在 Kafka 中的长期存储。
卡夫卡的汇合分层存储
(免责声明:以下内容写于 2020 年 7 月 – 稍后,请务必检查 Kafka 的分层存储状态,因为它预期很快就会演变)
[KIP-405 – 向 Kafka 添加分层存储支持” 正在为 Kafka 实施分层存储。汇合正积极与开源社区合作。优步正在领导这项倡议。
汇合分层存储如今已在汇流平台中提供,并在汇合云的引擎盖下使用:
阅读这里的细节和动机。Kafka 的分层存储创造了许多好处:
- 重新处理历史数据的用例:新的消费者应用程序、错误处理、合规性/法规处理、查询和分析现有事件、使用机器学习/深度学习框架(如 TensorFlow)进行模型培训。
- 将数据永远存储在卡夫卡:旧数据被卸载到廉价的对象存储,允许随时使用。 使用 AiB,存储可以防篡改且不可移动。
- 节省 $$:存储限制(如容量和持续时间)在利用廉价的对象存储(如 S3、GCS、MinIO 或 PureStorage)时实际上未封顶。
- 即时向上和向下扩展:您的 Kafka 群集将能够自动自平衡负载,从而弹性扩展。
区块链需要永远存储无限数据。基于事件,具有时间戳、加密和防篡改。AiB 使用 KafkaBlockchain的防篡改区块链是一个很好的例子,可以利用 Kafka 的分层存储。
幻灯片和视频:卡夫卡 + 区块链
我与康共的合伙人AIBlockchain更详细地讨论了这个话题。
查看幻灯片:
正如你在这篇文章中学到的,Kafka用于各种区块链场景;补充与区块链/分布式分类账技术和企业的其余部分集成,或 Kafka-native 实现。
你在区块链基础架构方面有什么经验?区块链是否增加价值?这是否值得增加技术和组织的复杂性?您是否计划使用阿帕奇卡夫卡及其生态系统?你的策略是什么?让我们在一LinkedIn讨论吧!