当前位置:  开发笔记 > 编程语言 > 正文

卡夫卡或SNS还是其他什么?

如何解决《卡夫卡或SNS还是其他什么?》经验,为你挑选了2个好方法。

对不起,如果是新手问题.但我试图了解我应该使用什么.据我所知,卡夫卡是:

Apache Kafka是一个分布式发布 - 订阅消息传递系统.

而SNS也是pub/sub系统.

我的目标是在AWS上使用一些队列消息传递系统,该应用程序将分布在少数服务器上.顺便说一句(主要语言是Python).因为它是在亚马逊上,我的第一个想法是使用SNS和SQS.但是我看到很多人在AWS上使用Kafka.一个又一个有什么优势?



1> adamw..:

Kafka和Amazon SQS/Amazon SNS的用例完全不同.

正如您所写,Kafka是一个分布式发布 - 订阅系统.它专为高吞吐量而设计,每秒处理数千条消息.当然,您需要自己设置和集群.它支持多个阅读器,可以随时"赶上"消息流(只要消息仍然在磁盘上).您既可以将其用作队列(使用使用者组),也可以将其用作主题.

一个重要的特征是您不能选择性地将消息确认为"已处理"; 唯一的选择是确认直到某个偏移量的所有消息.

另一方面,SQS/SNS:

没有设置/没有维护

队列(SQS)或主题(SNS)

各种限制(大小,消息存在多长时间等)

有限的吞吐量:您可以执行批量和并发请求,但仍然实现高吞吐量将是昂贵的

我不确定邮件是否被复制; 但至少有一次保证在SQS中提供保证将表明如此

SNS有内置电子邮件,短信,SQS和HTTP的通知.使用Kafka,您可能需要自己编写代码

没有"消息流"的概念

总的来说,我认为SQS/SNS非常适合于较简单的任务和具有较少消息量的工作负载.



2> nichochar..:

这是一个经典的权衡:

AWS工具(SQS,SNS)

这些将更容易设置,并与您的架构的其余部分集成,特别是如果其中大部分已经在AWS上运行.一开始也可能会更便宜,因为他们有一个很好的报酬模型,但成本也不会扩大,所以你必须考虑这一点.

阿帕奇卡夫卡

在这里,你正在使用一个非常受欢迎的(非流行的)分布式(如果你认为你会扩展很多,这很重要)PUB/SUB模型.如今,这个模型似乎更受欢迎,因为对通过管道的数据进行分析是非常常见的,并且通常使用SOA体系结构,您可以拥有大量小型服务来消费消息并完成他们的工作,而无需数据从队列中删除.您还可以获得许多配置选项,因此根据您的使用情况,您可以根据需要对其进行微调.这意味着更多的工作,但在未来的道路上提供更优化的服务.

摘要

这是开发速度和易开发性的经典权衡,与最佳,非常模块化和个性化的解决方案相比,第一次实施的开销更大,但扩展性更好.

个人建议

如果您正在进行原型设计,那么有利于开发速度,那么AWS工具就是如此.如果您的要求被冻结并需要大规模,请务必花时间使用kafka.我也非常相信使用开源让世界变得更好,但这并不是最常用的论据.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有