技术分享:消息中间件之NSQ

  NSQ被设计为:

  支持高可用和消除单点故障的拓扑结构

  实现更强的消息交付保证

  单个进程的内存占用(通过将一些信息持久化到磁盘)

  极大地简化生产者和消费者的配置要求

  提供直接升级的路径

  提高效率

  1简化的配置和管理

  


  nsqd

  单个nsqd实例一次性可以处理多个数据流。每个数据流被称为一个“topic”,每个topic拥有一个或多个“channels”。每个channel都会收到从topic发出的所有message的副本(a copy)。通常一个channel是为下流提供消费topic内信息的服务。

  topics 和channels并不是提前设置好的。topic是在第一次使用时被发布出来,或者在有channel订阅时被命名的。channel也是同样。

  topic和channel都是独自缓存数据的,这防止了存在有缓慢的消费者而导致其他channel堵塞消息的情况。

  一个channel通常具有多个消费者连接。如果所有的消费者都在同一个分区里的话,那么从channel分发过来的message将会随机落到每个接受数据流的consumer那里。

  message是被topic多路广播的到channel的,channel会将接受到的message随机分发给所有连接了它的consumers,也就是每个consumer只能收到channel通道里的一部分数据。

  nsqlookupd

  nsqlookupd是为nsqd提供帮助consumer寻找应该订阅的topic的路径服务的帮助程序。根据配置文件,consumer和producer只需要知道去哪里连接nsqlookupd实例就好了,consumer和producer之间是相互独立无需知道对方存在的,这减少了维护的复杂性。

  nsqd对nsqlookupd有一个长期的TCP连接,用来通知nsqd的定时的状态,同过这个数据,nsqlookupd会决定向consumer展示哪些nsqd的地址。而consumer则将公开自己的HTTP/lookup 端点。


转载于:https://juejin.im/post/5d034509e51d45599e019da8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值