Kafka 主题概述

Kafka Connect Neo4j 连接器是将 Kafka 与 Neo4j 集成的推荐方法,因为 Neo4j Streams 不再处于积极开发中,并且在 Neo4j 4.4 版本之后将不再支持。

Kafka Connect Neo4j 连接器的最新版本可以在 此处找到。

kafka partitions

每个主题(消息队列)被分成任意数量的分区,这些分区可以独立接受读写操作。生产者将消息推送到队列的末尾,而消费者则通过分区偏移量向前移动。

分区和偏移量

Kafka 中的分区通常由客户端以“循环”方式读取。分区偏移量描述了给定消费者在给定分区中的位置。在一个简单的例子中,给定一个分区,Bob 当前可能正在读取偏移量 3,而 Sarah 则在偏移量 11。如果需要,任何消费者都可以有选择地“倒带”或“重放”消息队列的任何部分。

压缩和保留

Kafka 主题可以配置各种“压缩”和“保留”设置,这些设置控制 Kafka 集群保留主题部分的时间。如果保留了主题上的所有历史记录,那么理论上您可以通过从头开始播放来重建所有历史记录。

数据库复制

Kafka 中的所有数据库都可以被认为是通用的数据桶,可以发出消息(生产者)或使用消息(消费者)。Kafka 中的一种常见技术是设置一个数据库,将所有正在进行的更改流(CDC)发布到 Kafka 主题。通常,Debezium 格式用于此目的,但并非排他性。

这是数据库复制的一个重要概念,这很常见。如果您从 Kafka 主题中提取数据,并且您的设置具有良好的性能,那么您可能能够通过将“重放主题”到新的 Neo4j 数据库中来 100% 重新创建数据库。

多语言持久性

鉴于所有这些,需要注意的一个重要的架构模式是拥有一个单一的“真相来源”数据库(例如 Oracle)——它将所有更改发布到 Kafka,为多个下游“辅助系统”提供数据,例如 ElasticSearch 和 Neo4j。这样,数据的副本将存在于 3 个不同的位置。“辅助系统”可能不接受写入,而只是为现有数据添加新的查询功能。高可用性对于辅助系统来说可能不是一个问题,因为它们始终可以从主题中重新创建。