我所在的公司正试图通过利用Kinesis或托管Kafka(Amazon MSK)作为消息队列和流服务来扩展部分工作负载。
我们所有的系统都在AWS上运行。我们的大部分计算工作负载都是由Lambda函数处理的,有时这些Lambda函数位于API网关之后。可能大量的消息生产和消费将发生在Lambda函数中,至少在一开始是这样。
最初,我们的用例将使用服务作为消息队列,我们计划每天服务10 k到20 k的小(100-300字节)消息。
最终,我们将通过产生和消费更多消息(可能是消息数量的5- 10倍)来在更多地方使用该服务,并将我们对该服务的使用扩展到将消息流传输到Redshift,S3和可观察性 Jmeter 板。
我可以想象,对于所有这些用例,这两种服务都绰绰有余。
从我所做的比较研究(这很棘手,因为许多比较两者的资源现在已经过时了)来看,Kinesis似乎更容易设置和管理,对于较小的工作负载,它可能比MSK便宜得多。
考虑到MSK可能要昂贵得多,并且需要更多的学习、设置、配置和管理,Kinesis似乎是一个显而易见的选择。
但是,我想确保我没有错过任何重要信息。Kinesis是否有我没有考虑到的严重限制或缺点?MSK是否具有Kinesis不具有的重要特性或功能?如果我们对可扩展性或灵活性的需求达到某个点,我们是否会后悔选择使用Kinesis?
我真的想为我的公司做出尽可能负责任的技术选择。
我试着做了一些研究,但这很困难,因为许多比较这两个服务的资源现在已经过时了。
1条答案
按热度按时间n3h0vuf21#
这不是一个编程问题,可能会被删除。但是,我会试着从我的Angular 来回答。
Kinesis和MSK都是生产就绪且功能强大的事件流平台,对于您的用例,从可用性和性能的Angular 来看,您使用什么并不重要。
我会考虑两件事:
1.成本:选择提供最佳性价比主张的一个。
1.如果将来需要,可移植到不同的Hyperscaler。Kinesis是一个仅限AWS的平台,移植需要完全重写。MSK是Kafka在幕后,你应该能够很容易地移植。