開源實時監控系統CAT 3.0釋出:多語言客戶端及多項效能提升
專案背景
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 3.0.0 Release Notes
多語言客戶端
隨著業務的不斷髮展,很多產品和應用需要使用不同的語言,CAT 多語言客戶端需求日益增多,除 Java 客戶端外,目前提供了 C/C++、Python、Node.js、Golang 客戶端,基本覆蓋了主流的開發語言。對於多語言客戶端,核心設計目標是利用 C 客戶端提供核心 API 介面作為底層基石,封裝其他語言 SDK。
目前支援的主流語言使用指南:
-
Java
-
C/C++
-
Python
-
Node.js
-
Golang
效能提升
-
訊息取樣聚合
訊息取樣聚合在客戶端應對大流量時起到了至關重要的作用,當取樣命中或者記憶體佇列已滿時都會經過取樣聚合上報。取樣聚合是對訊息樹拆分歸類,利用本地記憶體做分類統計,將聚合之後的資料進行上報,減少客戶端的訊息量以及降低網路開銷。
-
通訊協議最佳化
CAT 客戶端與服務端通訊協議由自定義文字協議升級為自定義二進位制協議,在大規模資料實時處理場景下效能提升顯著。目前服務端同時支援兩種版本的通訊協議,向下相容舊版客戶端。
-
訊息檔案儲存
-
技術棧升級
擁抱主流技術棧,降低學習和開發成本,使用開源社群主流技術工具(Spring、Mybatis等),建設下一代開源產品。
-
產品體驗
對產品、互動進行全新設計,提升使用者體驗。
-
開源社群建設
產品官網建設、組織技術交流。
-
更多語言 SDK
測試環境:CentOS 6.5,4C8G 虛擬機器
測試結果:新版相比舊版,序列化耗時降低約 3 倍
新版訊息檔案儲存進行了重新設計,解決舊版本的檔案儲存索引、資料檔案節點過多以及隨機 IO 惡化的問題。
新版訊息檔案儲存為了同時兼顧讀寫效能,引入了二級索引儲存方案,對同一個應用的 IP 節點進行合併,並且保證一定的順序儲存。下圖是索引結構的最小單元,每個索引檔案由若干個最小單元組成。每個單元分為 4 * 1024 個桶,第一個桶作為我們的一級索引 Header,儲存 IP、訊息序列號與分桶的對映資訊。剩餘 4 * 1024 - 1 個桶作為二級索引,儲存訊息的地址。
新版訊息檔案儲存檔案節點數與應用數量成正比,有效減少隨機 IO,訊息實時儲存的效能提升顯著。以下為美團點評內部 CAT 線上環境單機訊息儲存的資料對比:
未來規劃
關於開源
CAT 自 2011 年開源以來,Github 收穫 5900+ Star,2400+ Forks,被 100+ 公司企業使用,其中不乏攜程、陸金所、獵聘網、平安等業內知名公司。在每年全球 QCon 大會、全球架構與運維技術峰會等都有持續的技術輸出,受到行業內認可,越來越多的企業夥伴加入了 CAT 的開源建設工作,為 CAT 的成長貢獻了巨大的力量。
美團點評基礎架構部負責人黃斌強表示,在過去四年中,美團點評在架構中介軟體領域有比較多的積累沉澱,很多系統服務都經歷過大規模線上業務實際運營的檢驗。我們在使用業界較多開源產品的同時,也希望能把積累的技術開源出去,一方面是回饋社群,貢獻給整個行業生態;另一方面,讓更多感興趣的開發工程師也能參與進來,共同加速系統軟體的升級與創新。所以,像 CAT 這樣的優秀專案,我們將陸續開源輸出並長期持續運營,保證開源軟體本身的成熟度、支撐度與社群的活躍度,也歡迎大家給我們提出更多的寶貴意見和建議。
結語
這是一場沒有終點的長跑,我們整個 CAT 專案組將長期有耐心地不斷前行。願同行的朋友積極參與我們,關注我們,共同打造一款企業級高可用、高可靠的分散式監控中介軟體產品,共同描繪 CAT 的新未來!
這次開源僅僅是一個新的起點,如果你對 CAT 新版本有一些看法以及建議,歡迎聯絡我們:cat@dianping.com or Github issues
---------- END ----------
招聘資訊
美團點評基礎架構團隊誠招 Java 高階、資深技術專家,Base北京、上海。我們是集團致力於研發公司級、業界領先基礎架構元件的核心團隊,涵蓋分散式監控、服務治理、高效能通訊、訊息中介軟體、基礎儲存、容器化、叢集排程等技術領域。歡迎有興趣的同學投送簡歷到 yong.you@ dianping.com 。
原文連結:https://mp.weixin.qq.com/s/9uePYJpVEIDTzH1pPjgxRg
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559353/viewspace-2218521/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CAT 3.0 開源釋出,支援多語言客戶端及多項效能提升客戶端
- .NET 開源實時監控系統 - WatchDog
- 高效能!易用友好的開源實時監控系統!
- 滴滴正式釋出開源客戶端研發助手 DoKit 3.0,新特性解讀客戶端
- Linux系統效能監控採集項Linux
- .NET 開源實時監控系統 - WatchDog 技術解析
- 桌面客戶端效能提升,最佳化使用資源消耗客戶端
- websocket(多個客戶端)Web客戶端
- 華為開源預訓練語言模型「哪吒」:編碼、掩碼升級,提升多項中文 NLP 任務效能!模型
- 超牛逼的一款開源即時效能監控系統!
- 高效能微服務閘道器.NETCore客戶端Kong.Net開源釋出微服務NetCore客戶端
- NET core 釋出時幹掉多餘的語言包-
- Apache Spark 3.0 預覽版正式釋出,多項重大功能釋出ApacheSpark
- ModStart系統多語言支援
- 系統框架及內容如何支援多語言版本框架
- 開源Influxdb2高效能客戶端UXDB2客戶端
- 覆蓋40種語言:谷歌釋出多語言、多工NLP新基準XTREME谷歌REM
- 實時監控系統,統一監控企業APIAPI
- 開源的大型商城系統,支援多程式語言二次開發_OctShop
- 安恆EDR3.0正式釋出 多項自研技術打造新型終端安全
- Nacos 多語言體系再添新員:首個 Rust 語言版本正式釋出!Rust
- Flink Hudi 0.10.0 釋出,多項重要更新,穩定性大幅提升
- C語言透過socket實現TCP客戶端C語言TCP客戶端
- TCP實現公網伺服器和內網客戶端一對多訪問(C語言實現)TCP伺服器內網客戶端C語言
- Apache Dubbo 多語言體系再添新員:首個 Rust 語言版本正式釋出ApacheRust
- 開源監控系統Prometheus介紹Prometheus
- 多商戶商城開發(功能)丨多商戶商城系統開發(開發方案)丨多商戶商城成品原始碼系統原始碼
- DF開源多語言企業網站管理系統基於TP3.2.3網站
- 微信客戶端團隊負責人技術訪談:如何著手客戶端效能監控和優化客戶端優化
- ? Hyperf 釋出 Jet 統一模型 RPC 客戶端元件及 v2.0.6 版本模型RPC客戶端元件
- HStreamDB Newsletter 2022-06|新叢集機制、視覺化監控、Python 客戶端釋出…視覺化Python客戶端
- 基於 eBPF 的 Serverless 多語言應用監控能力建設eBPFServer
- sysstat——系統效能監控神器
- 使用 Go 和 ReactJS 構建聊天系統(四):處理多個客戶端GoReactJS客戶端
- 開源監控系統Prometheus的前世今生Prometheus
- HStreamDB v0.7 釋出:透明分割槽、雜湊演算法,多項效能提升新嘗試演算法
- Flutter多語言實踐Flutter
- 多商戶商城系統開發丨多商戶商城app平臺開發APP