鍍金池/ 教程/ 數(shù)據(jù)庫/ 特性和擔(dān)保
nsqadmin
常見問題
安裝
編譯客戶端庫
特性和擔(dān)保
工具
拓?fù)淠J?/span>
設(shè)計(jì)
Docker
nsqd
內(nèi)幕
性能
TCP 協(xié)議規(guī)范
nsqlookupd
介紹
產(chǎn)品配置
客戶端庫
快速開始

特性和擔(dān)保

NSQ 是分布式實(shí)時(shí)消息系統(tǒng)。

特性

  • 支持無 SPOF 的分布式拓?fù)?/li>
  • 水平擴(kuò)展(沒有中間件,無縫地添加更多的節(jié)點(diǎn)到集群)
  • 低延遲消息傳遞 (性能)
  • 結(jié)合負(fù)載均衡和多播消息路由風(fēng)格
  • 擅長面向流媒體(高通量)和工作(低吞吐量)工作負(fù)載
  • 主要是內(nèi)存中(除了高水位線消息透明地保存在磁盤上)
  • 運(yùn)行時(shí)發(fā)現(xiàn)消費(fèi)者找到生產(chǎn)者服務(wù)(nsqlookupd)
  • 傳輸層安全性 (TLS)
  • 數(shù)據(jù)格式不可知
  • 一些依賴項(xiàng)(容易部署)和健全的,有界,默認(rèn)配置
  • 任何語言都有簡單 TCP 協(xié)議支持客戶端庫
  • HTTP 接口統(tǒng)計(jì)、管理行為和生產(chǎn)者(不需要客戶端庫發(fā)布)
  • 為實(shí)時(shí)檢測集成了 statsd
  • 健壯的集群管理界面 (nsqadmin)

擔(dān)保

對于任何分布式系統(tǒng)來說,都是通過智能權(quán)衡來實(shí)現(xiàn)目標(biāo)。通過這些透明的可靠性指標(biāo),我們希望能使得 NSQ 在部署到產(chǎn)品上的行為是可達(dá)預(yù)期的。

消息不可持久化(默認(rèn))

雖然系統(tǒng)支持消息持久化存儲(chǔ)在磁盤中(通過 --mem-queue-size ),不過默認(rèn)情況下消息都在內(nèi)存中.

如果將 --mem-queue-size 設(shè)置為 0,所有的消息將會(huì)存儲(chǔ)到磁盤。我們不用擔(dān)心消息會(huì)丟失,nsq 內(nèi)部機(jī)制保證在程序關(guān)閉時(shí)將隊(duì)列中的數(shù)據(jù)持久化到硬盤,重啟后就會(huì)恢復(fù)。

NSQ 沒有內(nèi)置的復(fù)制機(jī)制,卻有各種各樣的方法管理這種權(quán)衡,比如部署拓?fù)浣Y(jié)構(gòu)和技術(shù),在容錯(cuò)的時(shí)候從屬并持久化內(nèi)容到磁盤。

消息最少會(huì)被投遞一次

如上所述,這個(gè)假設(shè)成立于 nsqd 節(jié)點(diǎn)沒有錯(cuò)誤。

因?yàn)楦鞣N原因,消息可以被投遞多次(客戶端超時(shí),連接失效,重新排隊(duì),等等)。由客戶端負(fù)責(zé)操作。

接收到的消息是無序的

不要依賴于投遞給消費(fèi)者的消息的順序。

和投遞消息機(jī)制類似,它是由重新隊(duì)列(requeues),內(nèi)存和磁盤存儲(chǔ)的混合導(dǎo)致的,實(shí)際上,節(jié)點(diǎn)間不會(huì)共享任何信息。

它是相對的簡單完成疏松隊(duì)列,(例如,對于某個(gè)消費(fèi)者來說,消息是有次序的,但是不能給你作為一個(gè)整體跨集群),通過使用時(shí)間窗來接收消息,并在處理前排序(雖然為了維持這個(gè)變量,必須拋棄時(shí)間窗外的消息)。

消費(fèi)者最終找出所有話題的生產(chǎn)者

這個(gè)服務(wù)(nsqlookupd) 被設(shè)計(jì)成最終一致性。nsqlookupd 節(jié)點(diǎn)不會(huì)維持狀態(tài),也不會(huì)回答查詢。

網(wǎng)絡(luò)分區(qū)并不會(huì)影響可用性,分區(qū)的雙方仍然能回答查詢。部署性拓?fù)淇梢燥@著的減輕這類問題。

上一篇:nsqadmin下一篇:編譯客戶端庫