我正在开发Amazon Kinesis Api和Kinesis客户端库,我创建了一个生产者来将数据放入流中,并有多个消费者应用程序从该流中读取数据。
我有根据输入流大小和输出流大小动态增加和减少流大小的方案,并使用Consumer应用程序的计数。
我找到了一些有用的来源来计算来自亚马逊网站的碎片数量,但是没有得到如何计算。来源网址是: http://docs.aws.amazon.com/kinesis/latest/dev/how-do-i-size-a-stream.html
需要对此有所了解。
由于
答案 0 :(得分:4)
AWS支持建议查看以下开源项目。它是由他们的解决方案架构师之一创建的。
https://github.com/awslabs/amazon-kinesis-scaling-utils
可以手动运行(cli)或自动运行(部署WAR)以扩展/缩小应用程序。
答案 1 :(得分:2)
您可以查看Themis,这是一个支持自动缩放Kinesis流的框架,由Atlassian开发。该工具非常易于配置,带有Web UI,并支持不同的自动缩放模式(例如,主动和被动自动缩放)。
(在旧帖子中发帖道歉,但对于发现此帖子的读者来说,答案可能仍然很有趣。)
答案 2 :(得分:0)
您可以使用Amazon Cloud Watch服务动态调整流的大小,您只需使用不同的指标(如put.byteRecords和get.byteRecords)创建基于流的警报,并检测警报状态。
之后根据这些警报状态为" ALARM",使用重新分片增加流的容量,您可以执行相同的方案来减少流的容量。
有关详细信息,请访问此链接:http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-using-api-java.html
答案 3 :(得分:0)
自2016年11月起,您可以使用updateShardCount
功能,Lambda功能和Amazon Cloud Watch Alarms轻松扩展您的Amazon Kinesis流。
您可能会发现this post非常有用。
答案 4 :(得分:0)
我创建了npm模块,它有助于自动缩放kinesis流。
找到详细信息这是npm模块,根据当前的交通需求来扩展亚马逊运动。此模块持续监控kinesis流中的流量,并根据需要拆分和合并分片。 例如。如果你的应用程序需要处理5000 req / sec,那么你需要有5个分片。由于您的应用程序上的流量可能会有很大差异,因此碎片数量也会变化。 如果您的应用程序需要在高峰时间处理20000 req / sec,那么您需要有20个分片,但在其他时间您可能只需要5个分片。