Disque:Redis之父新開源的分布式記憶體作業隊列

來源:互聯網
上載者:User

標籤:

Disque是Redis之父Salvatore Sanfilippo新開源的一個分布式記憶體訊息代理。它適應於"Redis作為作業隊列"的情境,但採用了一種專用、獨立、可擴充且具有容錯功能的設計,兼具Redis的簡潔和高效能,並且用C語言實現為一個非阻塞網路伺服器。

Redis的作者Salvatore Sanfilippo(網名Antirez)發表的一篇部落格文章,介紹了自己幾個月以來在晚上和周末開發的新項目——Disque。

開發初衷

Antirez之所以動念開發Disque,是因為看到很多人用Redis來處理隊列,但這樣做的優勢和劣勢都很明顯:Redis很快、易用而且很多基礎設施裡已經在用;但是Redis的高可用性/叢集特性的設計完全偏向可變資料結構,這與不可變的訊息非常不同,並非最佳方案。

訊息中介重要的功能是保證至少一次或者最多一次發送訊息,而且前者更重要。Antirez開始想通過少量修改Redis來實現,但幾天后發現用戶端演算法太複雜了。Redis已經有很多功能,再增加功能並非什麼好主意。何況訊息佇列的運作方式與Redis很不同。

那麼,是不是可以新開發一個訊息佇列呢?

世界上已經有很多訊息佇列了,新做一個有價值嗎?Antirez想,既然有這麼多人用Redis來處理訊息佇列,已有的方案看上去要麼太簡單要麼太複雜,其中必有機會,於是他動手了。

開發過程

他頭一次沒有直接寫代碼,而是花了幾個星期思考設計,嘗試從使用者角度理解什麼樣的訊息佇列會讓人更爽。主要的使用情境沒變:延遲作業。Disque是通用系統,但主要針對的問題,是發送可能要處理的作業的訊息。如果有什麼違背了這一情境,就會被幹掉。

設計有了,Antirez直接從Redis代碼入手。幸運的是Redis部分就是編寫C分布式系統的一個架構。協議、網路程式庫、用戶端處理、結點到結點的訊息匯流排已經有了,無需重頭再寫。但他又不想影響Redis本身,於是採取了比較實際的辦法:開一個Redis分支,然後將Redis專用的東西全部刪掉,只剩一個架構,再開始實現設計。

很幸運的是有C#的用戶端來操作Disque: https://github.com/ziyasal/Disque.Net .

相關連結:

Disque:Redis之父新開源的分布式記憶體作業隊列

Disque 使用教程(DisqueBook.com)

Disque:Redis之父新開源的分布式記憶體作業隊列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.