我目前正在用 Golang 版本编写简单的 Kinesis Client Library (KCL)。我希望它用于我的简单 KCL 的功能之一是跨多个记录处理器和 EC2 实例的负载平衡分片。例如,我有两个记录处理器(将在单独的 EC2 实例中运行)和四个 Kinesis 分片。负载平衡功能将允许每个记录处理器处理两个 Kinesis 分片。
我读到 Java KCL 实现了这个,但我在库中找不到实现。我的问题是我将如何在 Golang 中实现此功能?谢谢你。
我目前正在用 Golang 版本编写简单的 Kinesis Client Library (KCL)。我希望它用于我的简单 KCL 的功能之一是跨多个记录处理器和 EC2 实例的负载平衡分片。例如,我有两个记录处理器(将在单独的 EC2 实例中运行)和四个 Kinesis 分片。负载平衡功能将允许每个记录处理器处理两个 Kinesis 分片。
我读到 Java KCL 实现了这个,但我在库中找不到实现。我的问题是我将如何在 Golang 中实现此功能?谢谢你。
KCL 已经为您做了负载平衡。
以下是它今天如何工作的基本描述(请记住,这只是基础知识,随着亚马逊改进逻辑可能会发生变化):
您当然可以在 github 上查看 KCL 的源代码:https ://github.com/awslabs/amazon-kinesis-client - 希望这个解释为您提供更多关于如何理解 KCL 并使其适应您的需求的背景信息.
在您开始编写自己的客户端之前......看起来有些人已经这样做了:
您拥有的另一个选项是 KCL MultiLangDaemon。您可以安装一个小型运行程序来为您完成所有平衡,然后您只需听取守护程序发送给您的消息并将它们提交回来。
https://github.com/awslabs/amazon-kinesis-client#amazon-kcl-support-for-other-languages
对于对该主题感兴趣的人,VMWare 编写了 Java lib 的 Go 实现:https ://github.com/vmware/vmware-go-kcl/
但是,在撰写本文时,它不支持租约窃取:https ://github.com/vmware/vmware-go-kcl/issues/4