kafka和nsq的对比

2 篇文章 0 订阅

kafka有topic和partition的概念,而nsq有topic和channel的概念,topic这一层上大家概念还比较类似,都是说一种订阅的消息类型。到partition和channel这一层就不同了。

工作原理

kafka的producer产生特定种类的topic,分发到各个partition中,是没有重复消息的,comsumer本身订阅的是某一个topic,而每个partition只能连接1个comsumer,1个comsumer是可以处理多个partition的,而且其中会根据comsumer的数量做负载均衡。

nsq的channel就不同了,所有的channel都会拿到一份topic传来全部信息传到1个nsqd里,comsumer订阅的不是不仅是topic,还要包含指定channel,一个nsqd接的comsumer数量也可以是多个,nsqlookup会根据comsumer的订阅的channel将其指到特定的nsqd上。

使用场景

kafka更像是一个消息的分发器件,对于消息的分发实现topic级别的负载均衡,是针对不同消息的处理模式。对同一消息的不同处理,因为kafka本身会将所有消息固化,接不同的comsumer组去处理的时候只要将offset置到指定位置即可。

nsq比kafka多了一层,对同一消息可能不同业务场景需求也不同,因此用不同的channel去接topic,这样consumer连接channel对应的nsqd去做处理,这是因为nsq本身不做消息的固化,处理完了除了内存里的其他就丢了(除非将 –mem-queue-size 设置为 0),因此用这种处理模式。

区别
  1. kafka消息会固化,存文件,nsq默认是不保存的
  2. kafka消息因为固化下来,所以是保序的,nsq传递时候通常是无序的,当然你也可以保留下信息去check时间戳,因此nsq更适合处理数据量大但是彼此间没有顺序关系的消息。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值