
在2015杭州雲栖大會上,阿裡雲飛天事業部資深總監李津釋出了一款海量消息,使命必達的消息服務産品(http://www.aliyun.com/product/mns)。該産品能夠提供高效,可靠,安全,便捷,彈性擴充的消息服務;能夠幫助我們輕松的建構松耦合,高并發的分布式系統;能夠友善我們做跨域資料安全傳輸。目前,消息服務也是阿裡雲唯一商用消息産品,其服務穩定性和可靠性都有sla保障。下面讓我一起來詳細了解一下這款産品。
架構優勢帶來海量,高可靠,高可用特性
在了解消息服務前,不得不提的是阿裡雲飛天系統。飛天是阿裡雲的核心平台,提供了分布式存儲和分布式計算服務。阿裡雲大部分産品都是基于核心這個平台,消息服務也不例外。下圖是消息服務基于飛天的架構圖:
消息服務在研發之初就是以海量,高可靠性,高可用性為目标來設計的。這是消息服務和其他通過軟體雲化,以主從同步實作資料可靠性的消息中間件最根本的差別。
消息服務無論是資料節點還是中繼資料節點,都采用了完全分布式的設計,具有非常好的線性擴充能力。使用者資料被打散存儲到整個叢集,突破了單實體機的存儲上限,進而實作了海量的資料存儲能力。使用者隊列個數和單隊列堆積消息數都無上限限制;
消息服務每條消息在傳回給使用者寫成功之時就確定資料已被複制3份寫到不同實體機上,并且背景資料複制機制能夠保證任何一台實體機故障時其上的資料能夠快速的做遷移,時刻保證使用者資料3份copy可用,進而實作了非常高的資料可靠性(99.99999999%);
同樣的,消息服務的每個使用者隊列都同時有2個以上實體機提供服務,并且發生實體機故障時,隊列服務單元會做快速自動遷移,這就保證了任何時刻出現機器故障,都不會影響使用者對于隊列的使用,進而保證了消息服務的高可用性。
六大特色功能
除了上述3大基本特點外,消息服務還提供了一系列特色功能,
特色功能1:保證消息至少被消費一次。通常的消息隊列,在消息被取出後就認為使用者程式已經消費成功。在阿裡雲的消息服務裡,隻有消息在被使用者主動删除後,才會被認定為消息被使用者程式消費成功。否則,消息服務會保證消息在使用者設定的時間後繼續可以消費,進而保證消息“使命必達”。 這個機制在分布式系統中單點故障成為常态的情況下非常有用,使用者不用擔心自己的程式崩潰而導緻丢失正在進行中的消息,也無需在程式重新啟動後做任何消費狀态設定。
特色功能2:所有api包括管理api,都采用标準http restful 接口,支援公網通路,無平台依賴。使用者可以輕松的做跨域的資料傳輸,而不需要在防火牆開特殊端口;也不需要等待官方某種特定語言的sdk,可以很友善的用各種語言以自己想要的方式實作sdk,做到自主可控。
特色功能3:優先級消息。在現實生活中,我們在銀行,火車票售票排隊視窗,會看到對于xxx優先等字樣,其實在程式世界也是一樣。我們會有特殊緊急的消息/任務需要優先處理。消息服務為此專門提供了優先級消息功能,能夠讓優先級高的消息“插隊”,優先被使用者程式處理。
特色功能4:延遲消息。我們也會碰到有些任務需要在一定時間後被執行的場景。例如:使用者下完訂單後,需要在15分鐘後檢查使用者訂單是否完成付款,這時我們隻需要消息服務的隊列裡發送一條延遲15分鐘的消息即可。處理程式15分鐘後從隊裡讀取消息,并檢查訂單狀态是否為支付成功,如果沒有則取消訂單,并更新商品庫存。
特色功能5: 批量消息功能。有時候,我們需要一次性往隊列裡發送或擷取多條消息,以提高處理速度。這時消息服務的批量消息功能就可以幫助我們實作這一目的。
特色功能6: 通知消息功能。該功能是消息服務即将公測的功能,已經應用于阿裡雲的對象存儲服務和媒體轉碼等雲服務。目前已經支援http回調方式,後續還會支援移動推送,郵件,短息通知。可以輕松幫助我們實作真正的異步通知場景。
多種應用場景,零運維成本
消息服務提供的上述功能,能夠幫助使用者輕松實作系統解耦,削峰填谷,資料交換,通知回調,定時任務,優先級任務等場景,并且不需要自己購買伺服器,搭建開源消息中間件軟體以及後續繁瑣的運維擴容工作。消息服務提供了一鍵開通,按需使用,彈性擴容,按量計費的全方位貼心服務。讓企業可以專注于自己的系統元件間的業務邏輯,而不需要為底層消息中間件穩定性擔憂,真正實作了0運維成本。
消息産品雲服務化趨勢,阿裡雲消息服務使命必達
在雲計算越來越普及,soa架構大行其道的今天,消息中間件已經成為了必不可少的元件,我們預測傳統的自己搭建伺服器做為消息中間件的方式也會慢慢退出曆史舞台。國外雲計算起步較早的國家這個趨勢越加明顯,湧現出了不少商用消息中間件雲服務。國内阿裡雲憑借着自己堅實的核心技術實力和服務電商大資料的經驗已經取得了國内雲計算的領先地位。消息服務也正是經過了阿裡雲産品内部近4年的錘煉而成的商用産品,是以在成熟度和穩定性要遠超其他國内同類産品,并承諾使命必達,不丢消息。