相同
- 都是消息队列
不同
- NSQ自带lookup服务,方便集群下部署拓展,kafka则需要zookeeper配合服务发现
- NSQ用golang实现,kafka用java实现,语言不同
- NSQ中consumer是被动接受消息,kafka可以主动选择消费类型
- NSQ消息是无序的,kafka消息是有序的
- NSQ消息默认储存在内存中,只有超过–mem-queue-size才会存储到硬盘中,kafka默认存储在硬盘中
kafka优点
NSQ优点
参考调研文档
怎么选择
- 语言层面考虑,如果团队技术用的语言是golang或java,建议分别用对应的NSQ或者kafka,这样未来可以看对应的项目源码,对碰到难以理解的问题很有帮助