我正在尝试使用 Amazon Kinesis 作为平台的中央事件日志来实施事件驱动架构。这个想法与Nordstrom 在 Hello-Retail 项目中提出的想法几乎相同。
我以前用 Apache Kafka 做过类似的事情,但 Kinesis 似乎是 Kafka 的一种具有成本效益的替代品,我决定试一试。然而,我面临着一些与事件持久性和重放相关的挑战。我有两个问题:
- 你们是否将 Kinesis 用于此类用例,或者您是否推荐使用它?
- 由于 Kinesis 不能永远保留事件(就像 Kafka 一样),如何处理来自消费者的重播?
我目前正在使用 lambda 函数(Firehose 也是一个选项)将所有事件持久保存到 Amazon S3。然后,可以从存储中读取过去的事件,然后开始监听来自流的新事件。但我对这个解决方案不满意。消费者无法使用 Kinesis 的检查点(Kafka 的消费者偏移量)。另外,Java 的KCL 还不支持 AFTER_SEQUENCE_NUMBER,这在这种实现中会很有用。