專案背景
CAT(Central Application Tracking),是美團點評基於 Java 開發的一套開源的分散式實時監控系統。美團點評基礎架構部希望在基礎儲存、高效能通訊、大規模線上訪問、服務治理、實時監控、容器化及叢集智慧排程等領域提供業界領先的、統一的解決方案,CAT 目前在美團點評的產品定位是應用層的統一監控元件,在中介軟體(RPC、資料庫、快取、MQ 等)框架中得到廣泛應用,為各業務線提供系統的效能指標、健康狀況、實時告警等服務。
本文會對 CAT 的客戶端、效能等做詳細深入的介紹,前不久我們也發過一篇 CAT 相關的文章,裡面詳細介紹了 CAT 客戶端和服務端的設計思路,欲知更多細節,歡迎閱讀《深度剖析開源分散式監控CAT》
產品價值
- 減少故障發現時間
- 降低故障定位成本
- 輔助應用程式優化
技術優勢
- 實時處理:資訊的價值會隨時間銳減,尤其是在事故處理過程中
- 全量資料:全量採集指標資料,便於深度分析故障案例
- 高可用:故障的還原與問題定位,需要高可用監控來支撐
- 故障容忍:故障不影響業務正常運轉、對業務透明
- 高吞吐:海量監控資料的收集,需要高吞吐能力做保證
- 可擴充套件:支援分散式、跨 IDC 部署,橫向擴充套件的監控系統
使用現狀
目前,CAT 已經覆蓋了美團點評的外賣、酒旅、出行、金融等核心業務線,幾乎已經接入美團點評的所有核心應用,並在生產環境中大規模地得到使用。
2016 年初至今,CAT 接入的應用增加了400%,機器數增加了 900%,每天處理的訊息總量高達 3200 億,儲存訊息量近 400TB,高峰期叢集 QPS 達 650萬/秒。
面對流量的成倍增長,CAT 在通訊、計算、儲存方面都遇到了前所未有的挑戰。整個系統架構也經歷了一系列的升級和改造,包括訊息取樣聚合、訊息儲存、業務多維度指標監控、統一告警等等,專案最終穩定落地。為公司未來幾年內業務流量的穩定增長,打下了堅定的基石。
經過 7 年的持續建設,CAT 也在不斷髮展,我們也希望更好的回饋社群,將 CAT 提供的服務惠及更多的外部公司。我們今年將對開源版本進行較大的迭代與更新,未來也會持續把公司內部一些比較好的實踐推廣出去,歡迎大家跟我們一起共建這個開源社群。
新版特性
多語言客戶端
隨著業務的不斷髮展,很多產品和應用需要使用不同的語言,CAT 多語言客戶端需求日益增多,除 Java 客戶端外,目前提供了 C/C++、Python、Node.js、Golang 客戶端,基本覆蓋了主流的開發語言。對於多語言客戶端,核心設計目標是利用 C 客戶端提供核心 API 介面作為底層基石,封裝其他語言 SDK。
目前支援的主流語言使用指南:
效能提升
-
訊息取樣聚合
訊息取樣聚合在客戶端應對大流量時起到了至關重要的作用,當取樣命中或者記憶體佇列已滿時都會經過取樣聚合上報。取樣聚合是對訊息樹拆分歸類,利用本地記憶體做分類統計,將聚合之後的資料進行上報,減少客戶端的訊息量以及降低網路開銷。
-
通訊協議優化
CAT 客戶端與服務端通訊協議由自定義文字協議升級為自定義二進位制協議,在大規模資料實時處理場景下效能提升顯著。目前服務端同時支援兩種版本的通訊協議,向下相容舊版客戶端。
- 測試環境:CentOS 6.5,4C8G 虛擬機器
- 測試結果:新版相比舊版,序列化耗時降低約 3 倍
-
訊息檔案儲存
新版訊息檔案儲存進行了重新設計,解決舊版本的檔案儲存索引、資料檔案節點過多以及隨機 IO 惡化的問題。
新版訊息檔案儲存為了同時兼顧讀寫效能,引入了二級索引儲存方案,對同一個應用的 IP 節點進行合併,並且保證一定的順序儲存。下圖是索引結構的最小單元,每個索引檔案由若干個最小單元組成。每個單元分為 4×1024 個桶,第一個桶作為我們的一級索引 Header,儲存 IP、訊息序列號與分桶的對映資訊。剩餘 4×1024 - 1 個桶作為二級索引,儲存訊息的地址。
新版訊息檔案儲存檔案節點數與應用數量成正比,有效減少隨機 IO,訊息實時儲存的效能提升顯著。以下為美團點評內部 CAT 線上環境單機訊息儲存的資料對比:
未來規劃
-
技術棧升級
擁抱主流技術棧,降低學習和開發成本,使用開源社群主流技術工具(Spring、Mybatis等),建設下一代開源產品。
-
產品體驗
對產品、互動進行全新設計,提升使用者體驗。
-
開源社群建設
產品官網建設、組織技術交流。
-
更多語言 SDK
關於開源
CAT 自 2011 年開源以來,Github 收穫 5900+ star,2400+ forks,被 100+ 公司企業使用,其中不乏攜程、陸金所、獵聘網、平安等業內知名公司。在每年全球 Qcon 大會、全球架構與運維技術峰會等都有持續的技術輸出,受到行業內認可,越來越多的企業夥伴加入了 CAT 的開源建設工作,為 CAT 的成長貢獻了巨大的力量。
美團點評基礎架構部負責人黃斌強表示,在過去四年中,美團點評在架構中介軟體領域有比較多的積累沉澱,很多系統服務都經歷過大規模線上業務實際運營的檢驗。我們在使用業界較多開源產品的同時,也希望能把積累的技術開源出去,一方面是回饋社群,貢獻給整個行業生態;另一方面,讓更多感興趣的開發工程師也能參與進來,共同加速系統軟體的升級與創新。所以,像 CAT 這樣的優秀專案,我們將陸續開源輸出並長期持續運營,保證開源軟體本身的成熟度、支撐度與社群的活躍度,也歡迎大家給我們提出更多的寶貴意見和建議。
結語
這是一場沒有終點的長跑,我們整個 CAT 專案組將長期有耐心地不斷前行。願同行的朋友積極參與我們,關注我們,共同打造一款企業級高可用、高可靠的分散式監控中介軟體產品,共同描繪 CAT 的新未來!
這次開源僅僅是一個新的起點,如果你對 CAT 新版本有一些看法以及建議,歡迎聯絡我們:cat@dianping.com or Github issues
招聘資訊
美團點評基礎架構團隊誠招 Java 高階、資深技術專家,Base北京、上海。我們是集團致力於研發公司級、業界領先基礎架構元件的核心團隊,涵蓋分散式監控、服務治理、高效能通訊、訊息中介軟體、基礎儲存、容器化、叢集排程等技術領域。歡迎有興趣的同學投送簡歷到 yong.you@dianping.com。