您好,登錄后才能下訂單哦!
微服務(wù)通信框架及治理平臺(tái)OCTO作為美團(tuán)基礎(chǔ)架構(gòu)設(shè)施的重要組成部分,目前已廣泛應(yīng)用于公司技術(shù)線,穩(wěn)定承載上萬應(yīng)用、日均支撐千億級(jí)的調(diào)用。業(yè)務(wù)基于OCTO提供的標(biāo)準(zhǔn)化技術(shù)方案,能夠輕松實(shí)現(xiàn)服務(wù)注冊(cè)/發(fā)現(xiàn)、負(fù)載均衡、容錯(cuò)處理、降級(jí)熔斷、灰度發(fā)布、調(diào)用數(shù)據(jù)可視化等服務(wù)治理功能。
現(xiàn)在我們將OCTO的核心組件OCTO-RPC、OCTO-NS、OCTO-Portal開源,歡迎大家使用和共建。
OCTO項(xiàng)目始于2014年底,當(dāng)時(shí)美團(tuán)正處在新業(yè)務(wù)拓展期,服務(wù)數(shù)量不斷增長,服務(wù)間調(diào)用拓?fù)淙找鎻?fù)雜,逐漸暴露出了一些典型的問題:
研發(fā)效率低:缺乏標(biāo)準(zhǔn)的服務(wù)治理框架和組件,不少團(tuán)隊(duì)“重復(fù)造輪子”造成資源浪費(fèi),研發(fā)質(zhì)量參差不齊,系統(tǒng)整體可用性不高。
運(yùn)維成本高:缺乏完善、便捷的體系化運(yùn)維手段,難以進(jìn)行準(zhǔn)確的監(jiān)控告警,難以對(duì)涉及多級(jí)鏈路的故障快速定位。
服務(wù)運(yùn)營難:服務(wù)指標(biāo)數(shù)據(jù)收集困難,缺乏自動(dòng)化深度分析,難以滿足業(yè)務(wù)快速對(duì)指標(biāo)進(jìn)行評(píng)估決策的要求。
針對(duì)這些痛點(diǎn)問題,提升研發(fā)效率和質(zhì)量,降低運(yùn)營成本,對(duì)于支撐業(yè)務(wù)快速穩(wěn)定發(fā)展顯得尤為重要。因此,基礎(chǔ)架構(gòu)團(tuán)隊(duì)研發(fā)了公司級(jí)統(tǒng)一的分布式微服務(wù)通信框架及治理平臺(tái)——OCTO。OCTO是英文單詞章魚(Octopus)的縮寫,章魚眾多的觸手表征OCTO平臺(tái)能觸達(dá)治理海量的服務(wù),涵蓋服務(wù)治理領(lǐng)域的各個(gè)部分,因此取名。自平臺(tái)推出以來,在全公司各業(yè)務(wù)線被廣泛進(jìn)行使用,顯著提升了全公司的技術(shù)研發(fā)效率與運(yùn)營質(zhì)量,穩(wěn)定支撐著美團(tuán)業(yè)務(wù)的高速發(fā)展。
有別于傳統(tǒng)的開源服務(wù)治理組件,OCTO提供了體系化的服務(wù)治理方案,從通信框架到注冊(cè)中心、從文件配置到埋點(diǎn)告警、從灰度鏈路到數(shù)據(jù)報(bào)表,立體化的提升微服務(wù)運(yùn)營能力、賦能業(yè)務(wù)。此外,奉行“策略下沉”的設(shè)計(jì)思想,OCTO剝離傳統(tǒng)通信框架具備的服務(wù)治理策略功能,下沉到代理組件實(shí)現(xiàn),有效提升通信框架的穩(wěn)定性、降低業(yè)務(wù)系統(tǒng)額外開銷。歷經(jīng)海量調(diào)用驗(yàn)證的OCTO,依托低耦合、模塊化、單元化系統(tǒng)架構(gòu),能夠有效滿足各類復(fù)雜業(yè)務(wù)場(chǎng)景需求,實(shí)現(xiàn)異地多活等容災(zāi)目標(biāo)。
針對(duì)暴露出的問題,OCTO圍繞包括定義、開發(fā)、測(cè)試、部署、運(yùn)維、優(yōu)化、下線在內(nèi)的服務(wù)的全生命周期,打造了一系列組件和系統(tǒng),方便研發(fā)同學(xué)專注于自身業(yè)務(wù)邏輯開發(fā)的同時(shí),又能享受完善的服務(wù)治理功能。例如,我們?cè)陂_發(fā)階段提供了高性能、高可用、功能模塊化的通信框架供業(yè)務(wù)便捷使用;在測(cè)試階段提供了SET化、泳道、服務(wù)分組等各種灰度策略供業(yè)務(wù)無損試錯(cuò);在運(yùn)維階段提供機(jī)器級(jí)、框架級(jí)、業(yè)務(wù)級(jí)等層級(jí)分明的監(jiān)控告警供業(yè)務(wù)快速定位問題;在優(yōu)化階段提供了詳盡的服務(wù)指標(biāo)供業(yè)務(wù)自定義分析改進(jìn)。
OCTO主要功能特性包括但不限于:
命名服務(wù):服務(wù)注冊(cè)/發(fā)現(xiàn)。
服務(wù)管理:服務(wù)狀態(tài)監(jiān)測(cè);服務(wù)啟動(dòng)、停止;服務(wù)負(fù)載均衡。
容錯(cuò)處理:實(shí)時(shí)屏蔽異常的服務(wù),自動(dòng)調(diào)配請(qǐng)求流量。
流量分發(fā):灰度發(fā)布、節(jié)點(diǎn)動(dòng)態(tài)流量分配等場(chǎng)景。
數(shù)據(jù)可視化:服務(wù)調(diào)用統(tǒng)計(jì)上報(bào)分析,提供清晰的數(shù)據(jù)圖表展示,直觀定位服務(wù)間依賴關(guān)系。
服務(wù)分組:支持服務(wù)動(dòng)態(tài)自動(dòng)歸組與不同場(chǎng)景下的自定義分組,解決在多機(jī)房場(chǎng)景下跨機(jī)房調(diào)用穿透、沙盒測(cè)試等問題。
服務(wù)監(jiān)控報(bào)警:支持服務(wù)與接口級(jí)別多指標(biāo)、多維度的監(jiān)控,支持多種報(bào)警方式。
統(tǒng)一配置管理:支持服務(wù)配置統(tǒng)一管理,靈活設(shè)置不同環(huán)境間差異,支持歷史版本,配置項(xiàng)變更后實(shí)時(shí)下發(fā)。
分布式服務(wù)跟蹤:輕松診斷服務(wù)訪問慢、異常抖動(dòng)等問題。
過載保護(hù):靈活定義分配給上游服務(wù)消費(fèi)者的配額,當(dāng)服務(wù)調(diào)用量超出最大閥值時(shí),基于不同服務(wù)消費(fèi)者進(jìn)行QoS區(qū)分,觸發(fā)流控進(jìn)行過載保護(hù)。
服務(wù)訪問控制:支持多粒度、多階段的鑒權(quán)方式。
OCTO-RPC(開源Java/C++):分布式RPC通信框架,支持Java、C++、Node.js等多種語言。
SGAgent:部署在各服務(wù)節(jié)點(diǎn),承擔(dān)服務(wù)注冊(cè)/發(fā)現(xiàn)、動(dòng)態(tài)路由解析、負(fù)載均衡、配置傳輸、性能數(shù)據(jù)上報(bào)等功能。
Oceanus(待開源):HTTP定制化路由負(fù)載器,具體可參考《Oceanus:美團(tuán)HTTP流量定制化路由的實(shí)踐》一文。
OCTO-NS:包括SDK(Java/C++)、基礎(chǔ)代理SGAgent、命名服務(wù)緩存NSC、健康檢查服務(wù)Scanner等組件,提供命名服務(wù),服務(wù)注冊(cè)等信息的存儲(chǔ),服務(wù)狀態(tài)檢測(cè)的掃描等功能。
Watt(待開源):統(tǒng)計(jì)鏈路信息,計(jì)算服務(wù)各類指標(biāo)作為監(jiān)控報(bào)警依據(jù)。
MCC(待開源):統(tǒng)一配置中心,可進(jìn)行服務(wù)配置的管理下發(fā)。
OCTO-Portal:服務(wù)注冊(cè)、管理、診斷、配置、配額等功能的一站式管理平臺(tái)。
OCTO首批開源的核心組件包括:分布式服務(wù)通信框架(OCTO-RPC)、服務(wù)注冊(cè)中心(OCTO-NS)、服務(wù)治理平臺(tái)(OCTO-Portal)。未來,我們還將持續(xù)開源更多的組件與功能。
分布式服務(wù)通信框架是OCTO的重要組成部分,具備高性能、高可用、易擴(kuò)展、易接入等特點(diǎn),已覆蓋美團(tuán)90%以上的服務(wù)(Java/C++),支撐每天千億級(jí)別的調(diào)用量。目前Java和C++版本已經(jīng)開源,更多技術(shù)實(shí)現(xiàn)詳見:OCTO-RPC。
服務(wù)注冊(cè)中心基于服務(wù)描述信息,實(shí)現(xiàn)服務(wù)注冊(cè)/發(fā)現(xiàn)、配置管理、路由分組、負(fù)載均衡、健康檢測(cè)等功能,搭配服務(wù)治理平臺(tái)能夠更便捷地進(jìn)行服務(wù)節(jié)點(diǎn)數(shù)據(jù)的可視化運(yùn)營。目前開源出來的子模塊包括SDK(Java/C++)、基礎(chǔ)代理SGAgent、命名服務(wù)緩存NSC、健康檢查服務(wù)Scanner。更多技術(shù)實(shí)現(xiàn)詳見: OCTO-NS。
服務(wù)治理的一站式平臺(tái),為服務(wù)關(guān)注方提供服務(wù)節(jié)點(diǎn)管理、性能數(shù)據(jù)分析、全鏈路跟蹤診斷等服務(wù)治理核心能力。更多技術(shù)實(shí)現(xiàn)詳見: OCTO-Portal。
在過去四年中,OCTO是美團(tuán)在架構(gòu)中間件領(lǐng)域研發(fā)的一個(gè)重要技術(shù)項(xiàng)目,在復(fù)雜多元業(yè)務(wù)、大規(guī)模并發(fā)調(diào)用的場(chǎng)景下已被充分驗(yàn)證。目前OCTO支撐了美團(tuán)大規(guī)模微服務(wù)每天千億級(jí)的調(diào)用,接口調(diào)用成功率達(dá)到了99.999%,是全公司SOA、服務(wù)治理的核心基礎(chǔ)。我們期望通過將其開源,不斷反饋給社區(qū)、貢獻(xiàn)給行業(yè)。同時(shí),我們希望在行業(yè)優(yōu)秀工程師的幫助下,OCTO平臺(tái)能得到更快地升級(jí)更新迭代。歡迎大家多提寶貴意見和建議。
為了進(jìn)一步支撐美團(tuán)業(yè)務(wù)飛速發(fā)展的需求,同時(shí)對(duì)標(biāo)業(yè)界先進(jìn)的服務(wù)治理理念與實(shí)踐,未來一段時(shí)間內(nèi),OCTO將在以下幾方面規(guī)劃演進(jìn):
命名服務(wù)AP化:弱化強(qiáng)一致性,聚焦異常狀態(tài)下注冊(cè)中心的可用性。
框架反應(yīng)式編程:RPC框架提供反應(yīng)式編程支持,幫助業(yè)務(wù)構(gòu)建高性能異步無阻塞的服務(wù)。
Service Mesh:將現(xiàn)有命名服務(wù)等功能與控制面/數(shù)據(jù)面結(jié)合,以服務(wù)網(wǎng)格的思路進(jìn)一步演進(jìn)OCTO服務(wù)治理體系。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。