如何用 Aeron 替换 Kafka

How to replace Kafka with Aeron

目前我们生产环境的交易系统使用的是Kafka。因为Kafka延迟太高,我们希望用Aeron替代Kafka。如何正确使用Aeron?

Aeron 并不是 Kafka 的开箱即用替代品,尽管它确实提供了允许您复制大部分功能的原语。

Kafka 延迟在 order of milliseconds whereas Aeron latencies are typically measured in microseconds

您究竟需要在 Aeron 中构建什么在很大程度上取决于您的用例。

Kafka 的主要用途之一是用作持久队列。

为单个发布者用例构建一个简单的持久队列。你需要:

出版商

  • ArchivingMediaDriver - 该组件运行,Aeron MediaDriver 通过网络处理 send/receiving 消息,Archive 允许您录制和重播流。
  • A Publication 发送要由存档记录的消息。参见 AeronArchive.addRecordedPublication

订阅者

  • MediaDriver - 该组件通过网络处理 send/receiving 消息。
  • A Susbcription 从记录的消息流中的特定位置重播数据。参见 AeronArchive.replay

aeron-samples 中有这方面的例子。

通过让发布者通过 multicast/MDC 发送消息并让订阅者使用 ReplayMerge 从录制流无缝过渡到实时流,可以进一步减少延迟。

值得注意的是,实逻辑确实提供商业支持。