架構

美團大規模微服務通信框架及治理體系OCTO核心組件開源

微服務通信框架及治理平臺OCTO作為美團基礎架構設施的重要組成部分,目前已廣泛應用于公司技術線,穩定承載上萬應用、日均支撐千億級的調用。業務基于OCTO提供的標準化技術方案,能夠輕松實現服務注冊/發現、負載均衡、容錯處理、降級熔斷、灰度發布、調用數據可視化等服務治理功能。

現在我們將OCTO的核心組件OCTO-RPC、OCTO-NS、OCTO-Portal開源,歡迎大家使用和共建。

背景

OCTO項目始于2014年底,當時美團正處在新業務拓展期,服務數量不斷增長,服務間調用拓撲日益復雜,逐漸暴露出了一些典型的問題:

  • 研發效率低:缺乏標準的服務治理框架和組件,不少團隊“重復造輪子”造成資源浪費,研發質量參差不齊,系統整體可用性不高。
  • 運維成本高:缺乏完善、便捷的體系化運維手段,難以進行準確的監控告警,難以對涉及多級鏈路的故障快速定位。
  • 服務運營難:服務指標數據收集困難,缺乏自動化深度分析,難以滿足業務快速對指標進行評估決策的要求。

針對這些痛點問題,提升研發效率和質量,降低運營成本,對于支撐業務快速穩定發展顯得尤為重要。因此,基礎架構團隊研發了公司級統一的分布式微服務通信框架及治理平臺——OCTO。OCTO是英文單詞章魚(Octopus)的縮寫,章魚眾多的觸手表征OCTO平臺能觸達治理海量的服務,涵蓋服務治理領域的各個部分,因此取名。自平臺推出以來,在全公司各業務線被廣泛進行使用,顯著提升了全公司的技術研發效率與運營質量,穩定支撐著美團業務的高速發展。

有別于傳統的開源服務治理組件,OCTO提供了體系化的服務治理方案,從通信框架到注冊中心、從文件配置到埋點告警、從灰度鏈路到數據報表,立體化的提升微服務運營能力、賦能業務。此外,奉行“策略下沉”的設計思想,OCTO剝離傳統通信框架具備的服務治理策略功能,下沉到代理組件實現,有效提升通信框架的穩定性、降低業務系統額外開銷。歷經海量調用驗證的OCTO,依托低耦合、模塊化、單元化系統架構,能夠有效滿足各類復雜業務場景需求,實現異地多活等容災目標。

功能特性

針對暴露出的問題,OCTO圍繞包括定義、開發、測試、部署、運維、優化、下線在內的服務的全生命周期,打造了一系列組件和系統,方便研發同學專注于自身業務邏輯開發的同時,又能享受完善的服務治理功能。例如,我們在開發階段提供了高性能、高可用、功能模塊化的通信框架供業務便捷使用;在測試階段提供了SET化、泳道、服務分組等各種灰度策略供業務無損試錯;在運維階段提供機器級、框架級、業務級等層級分明的監控告警供業務快速定位問題;在優化階段提供了詳盡的服務指標供業務自定義分析改進。

OCTO主要功能特性包括但不限于:

  • 命名服務:服務注冊/發現。
  • 服務管理:服務狀態監測;服務啟動、停止;服務負載均衡。
  • 容錯處理:實時屏蔽異常的服務,自動調配請求流量。
  • 流量分發:灰度發布、節點動態流量分配等場景。
  • 數據可視化:服務調用統計上報分析,提供清晰的數據圖表展示,直觀定位服務間依賴關系。
  • 服務分組:支持服務動態自動歸組與不同場景下的自定義分組,解決在多機房場景下跨機房調用穿透、沙盒測試等問題。
  • 服務監控報警:支持服務與接口級別多指標、多維度的監控,支持多種報警方式。
  • 統一配置管理:支持服務配置統一管理,靈活設置不同環境間差異,支持歷史版本,配置項變更后實時下發。
  • 分布式服務跟蹤:輕松診斷服務訪問慢、異常抖動等問題。
  • 過載保護:靈活定義分配給上游服務消費者的配額,當服務調用量超出最大閥值時,基于不同服務消費者進行QoS區分,觸發流控進行過載保護。
  • 服務訪問控制:支持多粒度、多階段的鑒權方式。

OCTO整體架構

  • OCTO-RPC(開源Java/C++):分布式RPC通信框架,支持Java、C++、Node.js等多種語言。
  • SGAgent:部署在各服務節點,承擔服務注冊/發現、動態路由解析、負載均衡、配置傳輸、性能數據上報等功能。
  • Oceanus(待開源):HTTP定制化路由負載器,具體可參考《Oceanus:美團HTTP流量定制化路由的實踐》一文。
  • OCTO-NS:包括SDK(Java/C++)、基礎代理SGAgent、命名服務緩存NSC、健康檢查服務Scanner等組件,提供命名服務,服務注冊等信息的存儲,服務狀態檢測的掃描等功能。
  • Watt(待開源):統計鏈路信息,計算服務各類指標作為監控報警依據。
  • MCC(待開源):統一配置中心,可進行服務配置的管理下發。
  • OCTO-Portal:服務注冊、管理、診斷、配置、配額等功能的一站式管理平臺。

OCTO開源組件

OCTO首批開源的核心組件包括:分布式服務通信框架(OCTO-RPC)、服務注冊中心(OCTO-NS)、服務治理平臺(OCTO-Portal)。未來,我們還將持續開源更多的組件與功能。

分布式服務通信框架(OCTO-RPC)

分布式服務通信框架是OCTO的重要組成部分,具備高性能、高可用、易擴展、易接入等特點,已覆蓋美團90%以上的服務(Java/C++),支撐每天千億級別的調用量。目前Java和C++版本已經開源,更多技術實現詳見:OCTO-RPC。

服務注冊中心(OCTO-NS)

服務注冊中心基于服務描述信息,實現服務注冊/發現、配置管理、路由分組、負載均衡、健康檢測等功能,搭配服務治理平臺能夠更便捷地進行服務節點數據的可視化運營。目前開源出來的子模塊包括SDK(Java/C++)、基礎代理SGAgent、命名服務緩存NSC、健康檢查服務Scanner。更多技術實現詳見: OCTO-NS。

服務治理平臺(OCTO-Portal)

服務治理的一站式平臺,為服務關注方提供服務節點管理、性能數據分析、全鏈路跟蹤診斷等服務治理核心能力。更多技術實現詳見: OCTO-Portal。

關于開源

在過去四年中,OCTO是美團在架構中間件領域研發的一個重要技術項目,在復雜多元業務、大規模并發調用的場景下已被充分驗證。目前OCTO支撐了美團大規模微服務每天千億級的調用,接口調用成功率達到了99.999%,是全公司SOA、服務治理的核心基礎。我們期望通過將其開源,不斷反饋給社區、貢獻給行業。同時,我們希望在行業優秀工程師的幫助下,OCTO平臺能得到更快地升級更新迭代。歡迎大家多提寶貴意見和建議。

未來規劃

為了進一步支撐美團業務飛速發展的需求,同時對標業界先進的服務治理理念與實踐,未來一段時間內,OCTO將在以下幾方面規劃演進:

  1. 命名服務AP化:弱化強一致性,聚焦異常狀態下注冊中心的可用性。
  2. 框架反應式編程:RPC框架提供反應式編程支持,幫助業務構建高性能異步無阻塞的服務。
  3. Service Mesh:將現有命名服務等功能與控制面/數據面結合,以服務網格的思路進一步演進OCTO服務治理體系。

作者簡介

舒超、張翔,美團OCTO服務治理團隊研發成員。About 團隊
OCTO服務治理團隊負責整個公司的服務治理底層設施建設,包括命名服務、配置服務、RPC通信框架、ServiceMesh/Serverless演進等。 語言棧包括Java、C++、Node.js、Scala、Golang等,工作內容覆蓋前后端各項技術,承載外賣,酒旅等集團各業務線的日均千億級別的調用需求,是美團核心研發組織。

我還沒有學會寫個人說明!

10 分鐘徹底理解 Redis 的持久化和主從復制

上一篇

警告:ORA-00600 2252 錯誤正在SCN問題下不斷爆發

下一篇

你也可能喜歡

美團大規模微服務通信框架及治理體系OCTO核心組件開源

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
30岁的男人干啥赚钱快赚钱多 佳永配资 腾讯分分彩计划软件手机版 的棋牌游戏? 英超赛程怎么安排的 兴动哈尔滨麻将客服 三肖期期准今晚出 急速赛车 rain pk10最牛杀号在线计划 五分钟时时彩官网开奖 北京彩票11选五走势图