技術分享:消息中間件之NSQ

  NSQ被設計爲:sql

  支持高可用和消除單點故障的拓撲結構緩存

  實現更強的消息交付保證設計

  單個進程的內存佔用(經過將一些信息持久化到磁盤)3d

  極大地簡化生產者和消費者的配置要求cdn

  提供直接升級的路徑blog

  提升效率進程

  1簡化的配置和管理內存

  

https://img3.mukewang.com/5d005c3d0001631604640302.jpg
https://img.mukewang.com/5d005c9200013b6904360278.jpg


  nsqdit

  單個nsqd實例一次性能夠處理多個數據流。每一個數據流被稱爲一個「topic」,每一個topic擁有一個或多個「channels」。每一個channel都會收到從topic發出的全部message的副本(a copy)。一般一個channel是爲下流提供消費topic內信息的服務。io

  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 端點。

相關文章
相關標籤/搜索