中通訊息服務運維平臺實踐(已開源)
中通快遞 (歡迎進入?中通快遞官網瞭解更多資訊) 每天有數千萬的運單在各個環節運轉,每個環節都有對應的多套業務系統來支撐,業務系統之間上下游關係較為密切,從上游的客戶訂單到下游轉運、結算、分析等每個環節都離不開訊息中介軟體,它主要解決了系統之間的耦合、業務的削峰填谷、非同步通訊、資料同步和冗餘儲存等等功能需求,是現有系統架構中不可或缺的重要一環。
在2015年中通開始大量採用訊息中間解決一些特定的問題,隨著業務的增長,各環節有了更精細化的產品,我們訊息中介軟體的資料體量越來越大,叢集規模越來越多,中介軟體也越來越多樣化,統一管理這些訊息中介軟體變得尤為重要,因此我們研發了中通訊息中介軟體平臺 ZMS,主要基於 RocketMQ+Kafka 兩套業界比較主流訊息中介軟體,提供了自動化部署、主題/消費者的申請稽核、統一的SDK、管理控制檯、監 控告警到無感知擴容遷移等一系列運維的功能,目前ZMS管理了17個叢集,包括 7個 Kafka 叢集和 10個 RocketMQ 叢集,主題近2000個,消費組3000+,訊息儲存空間超過140TB,日均訊息流轉更是達到千億級別。
ZMS 從最初的版本演進到現在基本根據每個階段的痛點不同,解決不同的問題。 其發展階段大概分為 如下三個維度展開。
經公司內部評估,ZMS 已經成長為一套相對成熟的訊息中介軟體雲平臺化解決方案,可以正式對外開放,與社會上的同行共同打磨,故決定於2020年5月26號正式開源,將程式碼推送到 github 倉庫。
★ 倉庫地址:
zms-portal:
zms 管理後臺,可同時管理多個環境的資源,包括:新增主機、服務,訊息叢集狀態監控、配置訊息叢集告警規則,訊息叢集資源管理等。
備註: 所謂的環境我們可以簡單看成是開發環境、測試環境、高保真環境、生產環境。
運維人員只需要去指定的機器上覆制上述命令即可。這樣實現的目的是 zms-portal 無需管理宿主機器的使用者名稱、密碼等敏感資訊,做到安全可控。zms 能自動感知安裝了 zms-agent 的機器並將其納入 zms-portal 的管理運維體系。
基於中通業務的特點專案中主要採用了 Kafka 與 RocketMQ 兩種不同的訊息中介軟體,如果業務方在自己專案中既要使用 Kafka 的訊息中介軟體,又要使用 RocketMQ 的訊息中介軟體,對於訊息中介軟體的使用來說要求非常高,因為需要了解這些相似又不同的 API,分別瞭解其配置引數與其代表的含義,因此為業務方提供統一的 API 顯得尤為重要與迫切。
zms-sdk 的主要設計理念:
﹡ 遮蔽底層訊息中介軟體型別,提供統一標準的API。
﹡ 提供標準的埋點,方便打造完備的監控體系。
主要的互動與設計要點如下:
﹡ 運維人員透過 zms-portal 線上安裝叢集,叢集的後設資料將會存在 zookeeper 中。
﹡ 開發人員透過在 zms-portal 申請 topic、消費組。
﹡ 運維人員在 zms-portal 中對使用者的申請進行審批,並根據使用者的需求分配到適合的叢集中,topic 所在叢集等元資訊會寫入到 zookeeper中。
整個設計的核心是引入 zookeeper 作為後設資料的儲存倉庫,並充分利用其事件監聽機制,能完成很多“高大上”的功能,例如主題線上遷移功能。
試想一下在雙十一等大促場景,如果一個叢集負載很高從而達到瓶頸,一方面是可以對叢集進行擴容,另外一種可行的方法是 將該叢集中的 topic 遷移到其他空閒叢集,正是依託於 zookeeper 的事件機制,應用客戶端無需重啟就可以自動感知 topic 的配置發生了變化,從而重新構建到新叢集的客戶端物件,完成訊息傳送的不停機線上遷移。
對訊息中介軟體進行監控並進行視覺化展示是運維最基本的需求,RocketMQ、Kafka 訊息中介軟體本身提供了監控資料的採集並儲存在各自的伺服器記憶體中,但是是非持久化的,在記憶體中只儲存當前時間段的呼叫資訊,並隨著時間的推進,舊的資料將被刪除。當然 RocketMQ、Kafka 都提供了相應的API方便客戶端採集儲存在服務端記憶體中的監控資料。
ZMSCollector 的職責就是定時向 RocketMQ、Kafka 叢集採集相關的呼叫資訊並持久化到 influxdb 中,為後續的視覺化展示提供必要的基礎,ZMSCollector 已經被服務化,可以透過 zms-portal 線上安裝。
ZMSCollector 的整體設計比較簡單,一方面透過定時排程的方式呼叫底層訊息中介軟體提供的 API,將監控指標儲存到 influxDb,另外一方面採集 zms-sdk 採集的監控資料,zms-sdk採集的監控資料會傳送的一個固定的 topic ,ZMSCollector 訂閱指定的 topic,對訊息進行加工後儲存在 influxDb 中。
目前中通在異地容災方面還剛剛起步,目前只需要實現同城機房冷備,即一個機房的入口網路發生故障,將流量切換到另外一個備份機房即可。ZMS 訊息中介軟體運維平臺天然支援多機房的部署架構,因為在 ZMS 的視野中,一個不同的機房就相當於一個環境,可以直接在 zms-portal 中完成一個新機房的安裝部署服務。但由於發生故障後,兩個機房內部的網路有可能會斷開,故兩個機房中的後設資料應該分開儲存,即 zms-sdk 所依賴的 zookeeper 叢集不同,故需要完成 zookeeper 後設資料的同步,該工作由 ZMSBackupCluster 服務來承擔,其架構設計如下圖所示:
其基本的設計思路是 ZMSBackupCluster 訂閱待同步機房的 zookeeper,一旦後設資料有發生變化,會按照配置叢集後設資料對映關係將其同步到目標機房的 zookeeper中,這樣部署在備份機房中的應用可以無感知的接管主機房中所有的訊息傳送與訊息消費任務。
zms-portal 提供了叢集自動化安裝部署、主題消費組審批、各種監控報表視覺化報表,接下來展示部分介面,詳細請移步 zms 開源倉庫。
0 6
Z MS 開源資訊
中通科技正式開源內部的訊息Pass雲平臺化產品ZMS,倉庫地址: ,包含了 ZMS 的使用說明、架構設計文件、技術交流群。開源只是完成萬里長征第一步,後續希望更多的開源愛好者加入到該專案中,共同打造一體化的智慧訊息運維平臺。
歡迎大家前往我們的倉庫,關注我們、加入我們。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69960698/viewspace-2706441/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微眾銀行-訊息服務平臺建設實踐
- JEESZ-kafka訊息服務平臺實現Kafka
- 使用開源ntfy訊息推送服務釋出通知實現全平臺接收通知
- 訊息佇列 RocketMQ 5.0:從訊息服務到雲原生事件流平臺佇列MQ事件
- 雅虎開源釋出/訂閱訊息平臺Pulsar
- 網易遊戲運維實踐:服務架構及全球通服-AWS峰會演講實錄遊戲運維架構
- 今日頭條在訊息服務平臺和容災體系建設方面的實踐與思考
- 跨平臺開源通訊元件elastic communication元件AST
- Netflix開源Mantis:基於微服務的運維監控平臺微服務運維
- Tcloud 雲測平臺-多服務框架開源Cloud框架
- 案例實踐|Apache Pulsar 在移動雲智慧運維平臺的實踐Apache運維
- RabbitMQ實戰:訊息通訊模式和最佳實踐MQ模式
- 【PWA學習與實踐】(5)在Web中進行服務端訊息推送Web服務端
- .Net Core開源通訊元件 SmartRoute(服務即叢集)元件
- 期待微軟平臺即服務技術Service Fabric 開源微軟
- 阿里海量大資料平臺的運維智慧化實踐阿里大資料運維
- 手淘千牛IM即時通訊-星巴克訊息開放實踐
- golang實時訊息平臺NSQ的使用Golang
- [ 智慧運維服務平臺 ]PIGOSS TOC 多資料中心多監控工具的運維解決方案運維Go
- 【筆記】《app後臺開發運維和架構實踐》筆記APP運維架構
- 某大型運營商微服務能力中臺落地實踐微服務
- AgileEAS.NET SOA 中介軟體平臺.Net Socket通訊框架-簡單例子-實現簡單的服務端客戶端訊息應答框架單例服務端客戶端
- IT運維服務管理的實施步驟運維
- 【開源】C#跨平臺物聯網通訊框架ServerSuperIO(SSIO)C#框架Server
- 數倉服務平臺在唯品會的建設實踐
- EMR重磅釋出智慧運維診斷系統(EMR Doctor)——開源大資料平臺運維利器運維大資料
- 如何用 RocketMQ 打造金融級訊息服務平臺?微眾銀行這麼做MQ
- 活動運營自動化平臺實踐
- 如何降低 Flink 開發和運維成本?阿里雲實時計算平臺建設實踐運維阿里
- Ocado客戶服務中運用了TensorFlow和Google雲平臺Go
- iOS專案開發實戰——實現蘋果本地訊息通知推送服務iOS蘋果
- 阿里巴巴雲原生大資料運維平臺 SREWorks 正式開源阿里大資料運維
- Glance基礎服務運維運維
- 從平臺到中臺 | Elasticsearch 在螞蟻金服的實踐經驗Elasticsearch
- 影片服務平臺如何解決直播平臺開發中具有挑戰的工作
- gRPC-微服務間通訊實踐RPC微服務
- 小紅書近線服務統一排程平臺建設實踐
- IT統一運維平臺案例運維