Redis作者新開發的消息隊列:Disque
Disque是一個分布式的消息隊列。與Redis有單結點和分布式模式不同,單一Disque結點也是只有一個結點的集群。它是一個AP系統,也就是具有Availability(可用性)和Partition tolerance(分區容錯性)。另外它能在各種情形下保持高擴展性:無論是多生產者和多消費者處理多隊列,還是所有生產者和消費者都在一個隊列。
另外,Disque的設計中有一點重大犧牲,就是只盡力提供而不保證消息的排序。
Disque的特性:
- 消息發送可以選擇至少一次或者最多一次。
- 消息需要消費者確認。
- 如果沒有確認,會一直重發,直至到期。確認信息會廣播給擁有消息副本的所有結點,然后消息會被垃圾收集或者刪除。
- 隊列是持久的。
- Disque默認只運行在內存里,持久性是通過同步備份實現的。
- 隊列為了保證最大吞吐量,不是全局一致的,但會盡力提供排序。
- 在壓力大的時候,消息不會丟棄,但會拒絕新的消息。
- 消費者和生產者可以通過命令查看隊列中的消息。
- 隊列盡力提供FIFO。
- 一組master作為中介,客戶端可以與任一結點通信。
- 中介有命名的隊列,無需消費者和生產者干預。
- 消息發送是事務性的,保證集群中會有所需數量的副本。
- 消息接收不是事務性的。
- 消費者默認是接收時是阻塞的,但也可以選擇查看新消息。
- 生產者在隊列滿時發新消息可以得到錯誤信息,也可以讓集群異步地復制消息。
- 支持延遲作業,粒度是秒,最久可以長達數年。但需要消耗內存。
- 消費者和生產者可以連接不同的結點。
本文由用戶 y37f 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!