用运动式采购活动 - 重播和持久性



我正在尝试使用Amazon Kinesis作为平台的中心事件日志来实现事件驱动的体系结构。这个想法与Nordstrom的helly-Retail Project所提出的想法几乎相同。

我以前曾与Apache Kafka做过类似的事情,但是Kinesis似乎是Kafka的成本效益替代方案,我决定试用它。但是,我面临与事件持久性和重播有关的一些挑战。我有两个问题:

  1. 你们是在使用运动量来进行这种用例还是建议使用它?
  2. 由于Kinesis无法永远保留事件(就像Kafka一样),因此如何处理消费者的重播?

我目前正在使用lambda功能(也是FireHose的选项)将所有事件都持续到Amazon S3。然后,人们可以从存储空间中阅读过去的事件,然后开始聆听来自流的新事件。但是我对此解决方案不满意。消费者无法使用运动式检查点(Kafka的消费者偏移)。另外,Java的KCL还不支持After_sequence_number,这在此类实现中很有用。

第一个问题。是的,当我需要在存储S3之前处理接收到的日志/事件数据时,我正在使用运动流。当我不使用运动式消防时。

第二个问题。运动流可以存储长达7天的数据。这不是永远的,但应该是足够的时间来处理您的活动。取决于正在处理的事件的价值..

如果我不需要在S3中存储之前处理事件流,则我将Kinesis Firehose写入S3。现在,我不必担心事件故障,持久性等。然后,我使用最佳工具处理存储在S3中的数据。我经常使用亚马逊雅典娜和亚马逊红移。

您没有提及您正在处理多少数据或如何处理。如果它很大,多个MB/sec或更高,那么我肯定会使用运动式消防。您必须通过运动流来管理性能。

我在运动型流中遇到的一个问题是我不喜欢客户端库,所以我更喜欢自己写所有东西。Kinesis Firehose仅将数据存储在S3中,然后再处理后处理。

。 。

我喜欢将S3视为我的大数据湖。我更喜欢将所有内容都扔进S3中而无需预处理,然后使用各种工具来删除所需的数据。通过这样做,我删除了许多需要管理的故障点。

最新更新