我所在的公司正在尝试利用 Kinesis 或托管 Kafka (Amazon MSK) 作为消息队列和流服务来扩展部分工作负载。
我们的所有系统都在 AWS 上运行。我们的大部分计算工作负载都是由 Lambda 函数处理,有时这些 Lambda 位于 API Gateway 之后。 Lambda 函数内可能会发生大量消息生成和消费,至少一开始是这样。
最初,我们的用例是将服务用作消息队列,我们计划每天服务 10k 到 20k 条小(100-300 字节)消息。
最终,我们将开始在更多地方使用该服务,通过生成和消费更多消息(这可以使消息数量增加 5-10 倍),并将该服务的使用扩展到将消息流式传输到 Redshift、S3 和可观察性仪表板。
我想对于所有这些用例,这两种服务都绰绰有余。
从我所做的比较研究(这很棘手,因为比较两者的许多资源现在已经过时),Kinesis 似乎更容易设置和管理,对于较小的工作负载,它可能更容易比 MSK 便宜很多。
考虑到 MSK 可能更昂贵并且需要更多的学习、设置、配置和管理,Kinesis 似乎是一个显而易见的选择。
但是,我想确保我没有遗漏任何重要信息。 Kinesis 是否存在我未考虑到的严重限制或缺点?是否存在 MSK 具有而 Kinesis 不具备的重要特性或功能?如果我们对可扩展性或灵活性的需求达到一定程度,我们是否会后悔选择使用 Kinesis?
我真的想对我的公司尽可能负责的技术选择。
我尝试做一些研究,但这很困难,因为比较这两种服务的许多资源现在已经过时了。
Kinesis 和 MSK 都是生产就绪且功能强大的事件流平台,对于您的用例,从可用性和性能的角度来看,您使用什么并不重要。
我会考虑两件事: