Distributed message queue NSQ and Comparative Kafka

Distributed message queue NSQ and Comparative Kafka

[https://www.liuin.cn/2018/07/11/%E5%88%86%E5%B8%83%E5%BC%8F%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97-NSQ-%E5%92%8C-Kafka-%E5%AF%B9%E6%AF%94/]

Action message queue
  1. Decoupling, adding a layer of a flow data interface split into two portions, dedicated notification upstream, downstream processing focused
  2. A buffer, a sudden rise in response to changing traffic, the message queue has good cushioning effect clipping
  3. Asynchronous, the upstream message can be returned immediately after transmission, the downstream processing to be
  4. Broadcast message is processed so that a plurality of downstream
  5. Redundancy, save the message processing, message processing to prevent data loss caused by failure
1. Same
都是消息队列
2. Different
NSQ自带lookup服务,方便集群下部署拓展,kafka则需要zookeeper配合服务发现
NSQ用golang实现,kafka用java实现,语言不同
NSQ中consumer是被动接受消息,kafka可以主动选择消费类型
NSQ消息是无序的,kafka消息是有序的
NSQ消息默认储存在内存中,只有超过–mem-queue-size才会存储到硬盘中,kafka默认存储在硬盘	中
3. Comparison

a. store

- NSQ 默认是把消息放到内存中,只有当队列里消息的数量超过–mem-queue-size配置的限制时,才会对消息进行持久化。

- Kafka 会把写到磁盘中进行持久化,并通过顺序读写磁盘来保障性能。持久化能够让Kafka做更多的事情:消息的重新消费(重置offset);让数据更加安全,不那么容易丢失。同时Kafka还通过partition的机制,对消息做了备份,进一步增强了消息的安全性。

b. Push model

- NSQ 使用的是推模型,推模型能够使得时延非常小,消息到了马上就能够推送给下游消费,但是下游消费能够无法控制,推送过快可能导致下游过载。

- Kafka 使用的拉模型,拉模型能够让消费者自己掌握节奏,但是这样轮询会让整个消费的时延增加,不过消息队列本身对时延的要求不是很大,这一点影响不是很大。

c. sequence of the message

- NSQ 因为不能够把特性消息和消费者对应起来,所以无法实现消息的有序性。

- Kafka 因为消息在Partition中写入是有序的,同时一个Partition只能够被 Consumer Group 中的一个Consumer消费,这样就可能实现消息在Partition中的有序。自定义写入哪个Partition的规则能够让需要有序消费的相关消息都进入同一个Partition中被消费,这样达到”全局有序“
Published 17 original articles · won praise 1 · views 736

Guess you like

Origin blog.csdn.net/u013328965/article/details/104797868
Recommended