扩展AWS Kinesis流并提高消费者端的性能

时间:2018-07-13 09:00:43

标签: amazon-web-services amazon-kinesis

Kinesis流用于从调用应用程序中馈送消息,我们从Kinesis流和进程中获取消息。 KPL(内部部署)用于将数据生成(提要)到Kinesis中,而KCL(@ AWS EC2)在消费者端使用 KPL正在以良好的速度生成消息,但是由于处理时间的原因,消费者花费了更多时间 问题1 >>如何提高消费者的消费率?我们假设使用者将同时从流中读取消息(并发与分片计数成正比) Question2 >>我们需要根据用户使用率对分片进行自动缩放,对于基于使用率进行缩放的度量建议采用什么度量标准?

1 个答案:

答案 0 :(得分:0)

Kinesis使用者应该非常快地使用数据,就像您正确使用KCL一样,实际上它会将转发给使用者进程的数据批处理。要回答您的问题:

  1. 确保您在消费者上使用“推送模型”。这个 意味着AWS将负责尽可能多地批处理记录 减少网络IO并允许快速处理。在我的应用程序中 一次可以批处理700条记录,从而确保快速处理。有关推/拉模型的详细信息,请参见link here
  2. ad-hoc个用于自动缩放碎片的解决方案(不确定可以 现在可以通过运动学直接进行自动缩放),但是您需要监控指标,例如 每个碎片都有MillsBehindLatest,这将在消费者端。但是,这变得很棘手,因为您需要检查流中的每个分片。另外,您还需要监视生产方

我的观点很简单,仅提供更多的容量,因为Kinesis甚至可以在几个分片上处理大量数据,并提供几个实例来处理不同可用性区域中的数据。随着数据随着时间的推移,增加分片/实例的数量。