13.app後端為什麼要用到訊息佇列,13.app後端訊息佇列

來源:互聯網
上載者:User

13.app後端為什麼要用到訊息佇列,13.app後端訊息佇列
       很多沒有實際項目經驗的小夥伴,對訊息佇列系統非常陌生,看著很多架構的介紹中,都提到訊息佇列。但是,不知道為什麼要用訊息佇列?什麼是訊息佇列?常見的訊息佇列產品有哪些?


  通過閱讀本文,幫你解開以上的疑惑。


1. 為什麼要用訊息佇列?

  假設一個老大,接到一個任務要處理完。在處理這個任務時,把這個任務分解為幾個小任務,只要分別完成了這幾個小任務,整個任務也就完成了。


  做到某個小任務時,發現這個小任務需要花很多時間完成,而且這個小任務遲點完成也不影響整個任務的完成進度。於是,老大把這個小任務交個一個小弟去做,自己去接著完成其他的任務。


  在上面的例子中,老大就是後台系統,小弟就是訊息佇列系統,當後台系統發現完成某些小任務需要花很多時間,而且遲點完成也不影響整個任務的,就會把這些小任務交給訊息佇列系統。


  在實際的app後端中,發送郵件,傳送簡訊,推送等這些任務,都非常適合在訊息佇列系統中做的。大家想想,這些任務是不是都需要花比較多的時間,而且遲點完成也不影響的。把這些任務放在隊列中,可加快請求的回應時間。


2. 訊息佇列是怎麼工作?

  訊息佇列系統,一般都包含3個角色:佇列服務端,隊列的生產者,隊列的消費者。


  訊息佇列系統類別似於這個情境:有一條資訊傳送帶不停地運轉。在傳送帶的起點,工人a不斷地把資訊放在一個盒子,把盒子放到傳送帶上,盒子被傳送帶傳送到終點。在終點上,工人b把盒子上的資訊取出來,進行處理。


  在上面的情境中,不停運轉的傳送帶就是佇列服務端,在傳送帶起點不斷放盒子的工人a就是隊列的生產者,在傳送帶終點不斷取盒子的工人b就是隊列的消費者。


  訊息佇列的服務端,現在有大量的開源的應用,例如RabbitMQ ,ZeroMQ ,redis等。


  隊列的生產者和服務者,是針對訊息佇列服務端開發的用戶端,例如,RabbitMQ就有針對java,php等語言開發的用戶端。


  例如,在app後端中,用代碼調用 java用戶端,把要發送的簡訊資訊放在ZeroMQ中,這裡java用戶端是充當隊列的生產者。


  寫一個守護進程,在守護進程中,通過代碼調用 java用戶端把要發送的簡訊資訊不斷地從ZeroMQ取出來,然後發送出去。


3. 常見的一些訊息佇列產品

  RabbitMQ:


  是使用Erlang編寫的一個開源的訊息佇列,本身支援很多的協議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合於企業級的開發。同時實現了一個經紀人(Broker)構架,這意味著訊息在發送給用戶端時先在中心隊列排隊。對路由(Routing),負載平衡(Load balance)或者資料持久化都有很好的支援。


  同時,RabbitMQ內建了一個web監控介面,可方便監控隊列的情況。


  Redis:


  雖然是一個key-value系統,但自身也支援隊列這種資料結構,可看做是一個輕量級的訊息佇列系統。


  在app後端架構中,redis是被廣泛使用,如果同時把它作為訊息佇列使用,就減少了營運上的成本。


  ZeroMq:


  號稱最快的訊息佇列系統,尤其針對大輸送量的需求情境。


  ActiveMQ:


  是Apache下的一個子項目。 類似於ZeroMQ,它能夠以代理人和點對點的技術實現隊列。


---------------------------------------------------------------------------------------------------------------------------

開啟連結  app後端系列文章總目錄 總目錄 ,能查看本人發表過的所有原創“app後端”文章。

【作者】曾健生
【QQ】190678908
【qq群】254659220 
【公眾號】 appbackend
【新浪微博】 @newjueqi
【部落格】http://blog.csdn.net/newjueqi 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.