您好,登錄后才能下訂單哦!
技術(shù)隨業(yè)務(wù)而生,業(yè)務(wù)載技術(shù)而行。
近些年來,伴隨數(shù)字經(jīng)濟的發(fā)展,在眾多企業(yè)的數(shù)字化轉(zhuǎn)型之路上,云原生、DevOps、微服務(wù)、服務(wù)治理等成為行業(yè)內(nèi)不斷被探討的新話題。人們在理解和接受這些新型概念的同時,也不斷地思考其可能的落地形態(tài)。需求是創(chuàng)造發(fā)生的原動力,于是一批代表性的開源技術(shù)或者框架涌現(xiàn)而出:Kubernetes,Spring Cloud,Service Mesh,Serverless…… 它們炙手可熱,大放異彩。然而在具體落地過程中卻步履維艱,磕磕絆絆。
本文試圖結(jié)合企業(yè)業(yè)務(wù)的核心訴求,以應(yīng)用形態(tài)發(fā)展歷程為背景,幫助企業(yè)梳理應(yīng)用面向云原生、微服務(wù)轉(zhuǎn)型中涉及的各種服務(wù)治理問題,以及服務(wù)治理的發(fā)展趨勢。
什么是服務(wù)治理?
服務(wù)治理(SOA governance),按照Anne Thomas Manes的定義是:企業(yè)為了確保事情順利完成而實施的過程,包括最佳實踐、架構(gòu)原則、治理規(guī)程、規(guī)律以及其他決定性的因素。服務(wù)治理指的是用來管理SOA的采用和實現(xiàn)的過程。
由定義可知,服務(wù)治理關(guān)鍵因素在于:應(yīng)用形態(tài)、數(shù)據(jù)采集、信息分析、管控策略和協(xié)議規(guī)范五個方面。用戶群體只有從這五個層次出發(fā),才能構(gòu)建出符合企業(yè)規(guī)范與要求的服務(wù)治理平臺,從而進(jìn)一步為企業(yè)創(chuàng)造商業(yè)價值。
世界上唯一不變的是變化本身。----By 斯賓塞.約翰遜
萬理同此,縱觀應(yīng)用形態(tài)發(fā)展歷程,從單機到網(wǎng)絡(luò)、從單體到服務(wù)化、到微服務(wù)、到Serverless,再到未來,應(yīng)用的形態(tài)隨著業(yè)務(wù)驅(qū)動和技術(shù)演化,一直在不斷變化。隨之而來的是業(yè)務(wù)需求的復(fù)雜化與多樣化,企業(yè)IT面臨著大規(guī)模、高并發(fā)、應(yīng)用快速創(chuàng)新等新難題,彈性與敏捷成為企業(yè)IT的迫切需求。
在IT行業(yè)內(nèi)有兩個“不成熟”的理論:第一,每增加一行代碼就會帶來N種風(fēng)險;第二,任何問題都可以采取增加一層抽象的方式解決。因此面對企業(yè)IT復(fù)雜的環(huán)境,“小而精”逐漸取代“大而全”,成為構(gòu)建企業(yè)服務(wù)的首選方式,這也導(dǎo)致軟件設(shè)計原則中的“高內(nèi)聚,低耦合”又開始成為不斷被高調(diào)吟誦的主角,微服務(wù)理念因此大行其道。
微服務(wù)架構(gòu)為業(yè)務(wù)單元可獨立開發(fā)和獨立部署,使服務(wù)具備靈活的動態(tài)處理機能,同時依賴高度抽象化的組件工具和多元化的通信機制,向用戶屏蔽所有服務(wù)之間的通信細(xì)節(jié)的這種思想提供了最佳落地實踐。微服務(wù)的出現(xiàn)有效地縮短了服務(wù)上線周期,并且允許企業(yè)快速響應(yīng)客戶反饋,為客戶提供所期望的可靠服務(wù)。
然而隨著企業(yè)業(yè)務(wù)的發(fā)展與擴張與微服務(wù)的深入,服務(wù)數(shù)量向不可控的規(guī)模增長,服務(wù)數(shù)量的爆發(fā)式增長,為服務(wù)管理以及線上治理帶來了極大的挑戰(zhàn)。服務(wù)治理應(yīng)運而生,成為構(gòu)建微服務(wù)架構(gòu)系統(tǒng)的必備“良藥”。
數(shù)字永遠(yuǎn)不會說謊。
如今,微服務(wù)已經(jīng)成為軟件架構(gòu)的實際指導(dǎo)思想,而以Docker和Kubernetes為代表的容器技術(shù)的延伸,也有效解決了微服務(wù)架構(gòu)下多個服務(wù)單元的編排部署問題。然而,微服務(wù)架構(gòu)下也隱藏著容易被忽視的風(fēng)險:面臨規(guī)模巨大的服務(wù)單元,如何對其進(jìn)行有效合理的管控與治理?
服務(wù)治理領(lǐng)域開始被行業(yè)與用戶所重視,期望能夠獲得有效的思維方式和技術(shù)手段,應(yīng)對由于不斷激增的服務(wù)單元帶來的服務(wù)治理挑戰(zhàn)。關(guān)于服務(wù)治理,我們看到的更多的是其功能集合:服務(wù)注冊發(fā)現(xiàn)、服務(wù)配置、服務(wù)熔斷、網(wǎng)關(guān)、負(fù)載均衡、服務(wù)跟蹤、日志采集、監(jiān)控平臺等。但當(dāng)我們拋開這些名詞解釋,重新審視服務(wù)治理的時候,這些名詞并沒有完整的解釋我們的困惑:如何設(shè)置負(fù)載均衡策略?采集日志格式是什么?服務(wù)配置如何生效?服務(wù)跟蹤如何進(jìn)行精確定位?
顯然單單通過這些功能名詞無法滿足我們構(gòu)建服務(wù)治理平臺的需求,但從這些功能中我們總結(jié)出一些規(guī)律與方法,我們將從功能場景的橫向切面和技術(shù)手段的縱深層次,進(jìn)行如何構(gòu)建一個有效的服務(wù)治理平臺的分析探討。
首先,我們從服務(wù)治理功能場景的橫向切面來看,其可以抽象為四個層面:量化,追蹤,管控,規(guī)范。
量化
量化包括服務(wù)數(shù)據(jù)采集、數(shù)據(jù)過濾和數(shù)據(jù)聚合三個層次。數(shù)據(jù)采集進(jìn)一步細(xì)分為業(yè)務(wù)數(shù)據(jù)和性能數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)主要包括方法響應(yīng)周期、服務(wù)內(nèi)資源消耗規(guī)模、業(yè)務(wù)異常檢測、方法調(diào)用次數(shù)、服務(wù)運行日志等;性能數(shù)據(jù)包括服務(wù)間響應(yīng)時長、服務(wù)整體資源消耗等。
服務(wù)本身需要依賴不同的特性,構(gòu)建不同的agent,來搜集服務(wù)運行時產(chǎn)生的數(shù)據(jù)。數(shù)據(jù)過濾針對采集的數(shù)據(jù)按照一定的格式規(guī)范進(jìn)一步加工處理,例如基于kafka對原始的日志數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理后,導(dǎo)入日志系統(tǒng)。
數(shù)據(jù)聚合需要對獨立的服務(wù)數(shù)據(jù)進(jìn)行聚合操作,例如服務(wù)調(diào)用鏈呈現(xiàn)。
通過服務(wù)量化能夠清晰的記錄服務(wù)運行時產(chǎn)生的所有數(shù)據(jù),為服務(wù)跟蹤呈現(xiàn)和服務(wù)管控策略制定并提供強有力的數(shù)據(jù)支撐。
追蹤
追蹤能夠有效量化服務(wù)調(diào)用鏈路上發(fā)生的事情,具體來講,可以劃分為:服務(wù)間的鏈路跟蹤和服務(wù)內(nèi)部的方法調(diào)用鏈路跟蹤。追蹤的本質(zhì),不僅僅是為了呈現(xiàn)服務(wù)鏈路及服務(wù)路由信息,更重要的是呈現(xiàn)服務(wù)間請求,以及服務(wù)內(nèi)部請求的響應(yīng)延遲,異常反饋,能夠快速定位服務(wù)以及服務(wù)內(nèi)在代碼存在的問題。
管控
管控依賴于量化采集的聚合數(shù)據(jù)。管控允許運維人員聚焦某個服務(wù)單元的運行時狀態(tài),為服務(wù)設(shè)定一定的控制策略,從而保證服務(wù)穩(wěn)定可靠的運行。例如熔斷策略,負(fù)載策略,流量控制,權(quán)限控制等。
規(guī)范
規(guī)范更多針對服務(wù)通信而言,例如通信協(xié)議規(guī)范,無論針對哪種協(xié)議,例如http,tcp,rpc等都能夠提供相應(yīng)的檢測手段。與此同時,規(guī)范也能夠清晰定義服務(wù)名稱和管控策略,使得服務(wù)在不同環(huán)境之間進(jìn)行遷移的時候,依舊平穩(wěn)可靠。
綜上所述,在服務(wù)單元遵循一定規(guī)范標(biāo)準(zhǔn)的前提下,基于服務(wù)單元數(shù)據(jù)量化、服務(wù)調(diào)用跟蹤以及服務(wù)策略管控的方式,才能構(gòu)建出符合要求的服務(wù)治理平臺。
接下來,我們從縱深的角度考慮構(gòu)建服務(wù)治理平臺過程中涉及的技術(shù)理論基礎(chǔ)。服務(wù)治理之所以困難,原因在于構(gòu)建業(yè)務(wù)系統(tǒng)采用的技術(shù)棧成多元化的方式存在。從目前行業(yè)內(nèi)采用的技術(shù)而言可以劃分為三大學(xué)派:代碼集成、agent探針、流量劫持。
代碼集成
代碼集成往往需要業(yè)務(wù)開發(fā)人員的支持,在業(yè)務(wù)系統(tǒng)中嵌入數(shù)據(jù)采集代碼,用來采集服務(wù)運行時服務(wù)產(chǎn)生的各種業(yè)務(wù)指標(biāo)及性能指標(biāo),并將數(shù)據(jù)傳輸?shù)皆贫酥卫砥脚_。平臺依據(jù)數(shù)據(jù)信息,通過配置動態(tài)下發(fā),從而影響業(yè)務(wù)響應(yīng)動態(tài),完成服務(wù)治理功能。
優(yōu)點:治理深入,端到端監(jiān)控
缺點:維護(hù)繁瑣,語言版本眾多,影響業(yè)務(wù)性能
Agent探針
Agent探針是對代碼集成的進(jìn)一步提煉。Agent探針將需要集成的監(jiān)控代碼,高度提取、抽象、封裝成可以獨立集成的SDK,并且以“弱旁路”的方式與代碼集成在一起,從而完成數(shù)據(jù)采集工作。云端治理平臺,同樣以采集的數(shù)據(jù)信息作為治理策略制定的依據(jù),下發(fā)各種治理策略,從而達(dá)到服務(wù)治理功能。
優(yōu)點:治理深入,端到端監(jiān)控
缺點:語言版本眾多,影響業(yè)務(wù)性能
流量劫持
流量劫持與前兩者相比,與代碼集成不同。它從網(wǎng)絡(luò)通信作為切入點,以proxy的方式,代理業(yè)務(wù)單元所有的IN/OUT流量,并且proxy內(nèi)部可以對請求數(shù)據(jù)進(jìn)行一定的策略控制。從而完成服務(wù)通信的治理功能。
優(yōu)點:無關(guān)語言差異性,維護(hù)簡單
缺點:治理略淺,影響業(yè)務(wù)性能
綜上所述,目前服務(wù)治理的技術(shù)棧或多或少都存在一些缺陷,在構(gòu)建服務(wù)治理平臺時往往需要采用結(jié)合的方式,才能做到物盡其才。
競爭成就未來。
從目前行業(yè)發(fā)展來看,微服務(wù)奠定了服務(wù)構(gòu)建的基礎(chǔ)方式,容器引擎以及編排技術(shù)解決了服務(wù)編排上線的困惑,下一個“兵家必爭”的場景必將在服務(wù)治理。那目前行業(yè)內(nèi)又有哪些項目聚焦在服務(wù)治理領(lǐng)域?
SpringCloud
SpringCloud作為Spring社區(qū)的重要布局之一,在微服務(wù)落地伊始就逐漸發(fā)力,當(dāng)下已經(jīng)成為Java體系下微服務(wù)框架的代名詞,SpringCloud 以 Netfilx 全家桶作為初始化基礎(chǔ),為開發(fā)人員提供業(yè)務(wù)單元服務(wù)支撐框架的同時,也開發(fā)出一系列的服務(wù)治理SDK,供開發(fā)人員選用。在微服務(wù)發(fā)展背景下,SpringCloud可謂如日中天。
Dubbo
Dubbo原為阿里巴巴開源的 rpc 遠(yuǎn)程調(diào)用框架,初始設(shè)計初衷在于解決以 rpc 協(xié)議為標(biāo)準(zhǔn)的遠(yuǎn)程服務(wù)調(diào)用問題,隨著阿里巴巴重啟Dubbo,其也開始在服務(wù)治理領(lǐng)域發(fā)力,成為很多以rpc協(xié)議作為通信基礎(chǔ)系統(tǒng)平臺的首選。粗略而言,Dubbo和SpringCloud已成為Java體系下的服務(wù)治理“雙槍”。
gRPC
gRPC與Dubbo類似,最初是由Google開源的一款遠(yuǎn)程服務(wù)調(diào)用框架。gRPC憑借HTTP/2和 RrotoBuf 服務(wù)定義方式以及多語言支持的特性,加之其易于定制與開發(fā),能夠方面開發(fā)人員進(jìn)行快速擴展和靈活發(fā)揮,從而也成為眾多用戶的選擇之一。
Service Mesh
Service Mesh的出現(xiàn)不在于它實現(xiàn)了多少功能,而是它徹底把業(yè)務(wù)單元與業(yè)務(wù)支撐體系分離,完整貫徹了“術(shù)業(yè)有專攻”的思想理念。它允許業(yè)務(wù)人員聚焦業(yè)務(wù)實現(xiàn),不再關(guān)心服務(wù)治理相關(guān)的內(nèi)容。通過與容器技術(shù)結(jié)合,下沉至基礎(chǔ)設(shè)施,從通信協(xié)議的角度徹底接管業(yè)務(wù)通信交互過程,可謂微服務(wù)治理領(lǐng)域的后起之秀。
總而言之,服務(wù)治理的本質(zhì)是針對業(yè)務(wù)與應(yīng)用產(chǎn)生價值的收斂與反饋,只有不斷地反饋和復(fù)盤才能構(gòu)建出穩(wěn)定、高效的應(yīng)用形態(tài)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。