為服務(wù)管理以及線上治理帶來了極大的挑戰(zhàn)。服務(wù)治理應(yīng)運而生,成為構(gòu)建微服務(wù)架構(gòu)系統(tǒng)的必備“良藥”。02“量化”管控,服務(wù)無可遁形數(shù)字永遠不會說謊。如今,微服務(wù)已經(jīng)成為軟件架構(gòu)的實際指導(dǎo)思想,而以Docker和Kubernetes為的容器技術(shù)的延伸,也有效解決了微服務(wù)架構(gòu)下多個服務(wù)單元的編排部署問題。然而,微服務(wù)架構(gòu)下也隱藏著容易被忽視的風(fēng)險:面臨規(guī)模巨大的服務(wù)單元,如何對其進行有效合理的管控與治理?服務(wù)治理領(lǐng)域開始被行業(yè)與用戶所重視,期望能夠獲得有效的思維方式和技術(shù)手段,應(yīng)對由于不斷激增的服務(wù)單元帶來的服務(wù)治理挑戰(zhàn)。關(guān)于服務(wù)治理,我們看到的更多的是其功能:服務(wù)注冊發(fā)現(xiàn)、服務(wù)配置、服務(wù)熔斷、網(wǎng)關(guān)、負載均衡、服務(wù)跟蹤、日志采集、監(jiān)控平臺等。但當我們拋開這些名詞解釋,重新審視服務(wù)治理的時候,這些名詞并沒有完整的解釋我們的困惑:如何設(shè)置負載均衡策略?采集日志格式是什么?服務(wù)配置如何生效?服務(wù)跟蹤如何進行精確定位?顯然單單通過這些功能名詞無法滿足我們構(gòu)建服務(wù)治理平臺的需求,但從這些功能中我們總結(jié)出一些規(guī)律與方法,我們將從功能場景的橫向切面和技術(shù)手段的縱深層次,進行如何構(gòu)建一個有效的服務(wù)治理平臺的分析探討。首先。微服務(wù)也指一種種松耦合的、有一定的有界上下文的面向服務(wù)架構(gòu)。福建銀行微服務(wù)架構(gòu)
伴隨著業(yè)務(wù)的復(fù)雜深入,會不斷地衍生出新的服務(wù)。下圖是一個包含了四個服務(wù)的微服務(wù)架構(gòu)的系統(tǒng):微服務(wù)體系中的諸多服務(wù)不可避免跨服務(wù)調(diào)用,它們通常使用輕量級的HTTPRESTfulAPI。那么如何保證跨服務(wù)調(diào)用的可靠性以及整個系統(tǒng)集成的質(zhì)量?尤其是當不同服務(wù)由不同小團隊負責(zé)開發(fā)和測試。4.服務(wù)自身的Unit測試系統(tǒng)被拆分成的服務(wù),每個服務(wù)都是一個完整的小系統(tǒng),首要工作仍然是保證服務(wù)自身的業(yè)務(wù)功能的正確性。比如一個JavaWeb應(yīng)用(Springboot),API功能以及各個Service的業(yè)務(wù)邏輯的正確性,可以通過單元測試來保證。服務(wù)細分之后從某種意義上讓單元測試更加易于編寫,可以借助測試替身來屏蔽掉對其他服務(wù)依賴。5.系統(tǒng)級的集成(UI)測試Unit測試使得開發(fā)人員可以快活地活在自己的世界中,每個開發(fā)團隊按照圖紙造出系統(tǒng)的一個部件,只有當這些小部件集成在一起之后能夠按照用戶的期望為用戶提供服務(wù)才體現(xiàn)出了系統(tǒng)業(yè)務(wù)價值。所以我們要通過系統(tǒng)集成測試(UI測試)來保證集成的質(zhì)量。從測試金字塔中可以看出,在一個系統(tǒng)中,UI測試是數(shù)量少的。雖然它的業(yè)務(wù)價值高,但它高昂的成本使得它只會覆蓋業(yè)務(wù)流程復(fù)雜的業(yè)務(wù)場景。甚至。青海輕量級微服務(wù)架構(gòu)服務(wù)中心微服務(wù)架構(gòu)模式使得每個服務(wù)擴展。你可以根據(jù)每個服務(wù)的規(guī)模來部署滿足需求的規(guī)模。
微服務(wù)是一個新興的軟件架構(gòu),它把一個大型的單個應(yīng)用程序和服務(wù)拆分為數(shù)十個的支持微服務(wù),部署、互相隔離,通過擴展組件來處理功能瓶頸問題,比傳統(tǒng)的應(yīng)用程序更能有效利用計算資源。微服務(wù)之間無需關(guān)心對方的模型,它通過事先約定好的接口進行數(shù)據(jù)流轉(zhuǎn),使業(yè)務(wù)可以高效響應(yīng)市場變化。但微服務(wù)一個明顯的表象就是隨著服務(wù)的增多,傳統(tǒng)的測試模式受到很大制約,無法有效進行下去,威脅到整體系統(tǒng)質(zhì)量。星云測試()發(fā)布分布式微服務(wù)測試解決方案,是目前市場上可達到在復(fù)雜分布式系統(tǒng)中跨多個服務(wù)器進行代碼白盒級分析,并實現(xiàn)請求分布式追蹤的測試平臺。其中產(chǎn)品內(nèi)的穿透模塊,可以支持各種主流微服務(wù)通信架構(gòu),例如httpclient,springcloud以及消息隊列,將并發(fā)訪問場景下跨多個服務(wù)多組代碼邏輯分離并重建追蹤出來。實現(xiàn)了業(yè)務(wù)邏輯的代碼在開發(fā)層面通過微服務(wù)離散后,在測試階段則可以反向復(fù)原整個完整代碼執(zhí)行視圖。測試里面的穿線概念(Threadingtest)增加了第三層含義,即針對的分布式服務(wù)的穿透能力。例如,在某大型運營機構(gòu)旗下物聯(lián)網(wǎng)項目,采用現(xiàn)今主流的微服務(wù)架構(gòu),整個項目接口與后臺的模塊數(shù)多達幾十多個。
我們從服務(wù)治理功能場景的橫向切面來看,其可以抽象為四個層面:量化,追蹤,管控,規(guī)范。量化量化包括服務(wù)數(shù)據(jù)采集、數(shù)據(jù)過濾和數(shù)據(jù)聚合三個層次。數(shù)據(jù)采集進一步細分為業(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ī)范進一步加工處理,例如基于kafka對原始的日志數(shù)據(jù)進行標準化處理后,導(dǎo)入日志系統(tǒng)。數(shù)據(jù)聚合需要對的服務(wù)數(shù)據(jù)進行聚合操作,例如服務(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ù)背景下,每個服務(wù)單獨構(gòu)建,就有了選擇不同技術(shù)棧的機會,允許用更合適的工具去做不同的事情。
所有日志數(shù)據(jù)一般集中落地到企業(yè)后臺日志系統(tǒng),做進一步分析和處理。REST/RPC和序列化,框架層要支持將業(yè)務(wù)邏輯以HTTP/REST或者RPC方式暴露出來,HTTP/REST是當前主流API暴露方式,在性能要求高的場合則可采用Binary/RPC方式。針對當前多樣化的設(shè)備類型(瀏覽器、普通PC、無線設(shè)備等),框架層要支持可定制的序列化機制,例如,對瀏覽器,框架支持輸出Ajax友好的JSON消息格式,而對無線設(shè)備上的NativeApp,框架支持輸出性能高的Binary消息格式。配置,除了支持普通配置文件方式的配置,框架層還可集成動態(tài)運行時配置,能夠在運行時針對不同環(huán)境動態(tài)調(diào)整服務(wù)的參數(shù)和配置。限流和容錯,框架集成限流容錯組件,能夠在運行時自動限流和容錯,保護服務(wù),如果進一步和動態(tài)配置相結(jié)合,還可以實現(xiàn)動態(tài)限流和熔斷。管理接口,框架集成管理接口,一方面可以在線查看框架和服務(wù)內(nèi)部狀態(tài),同時還可以動態(tài)調(diào)整內(nèi)部狀態(tài),對調(diào)試、監(jiān)控和管理能提供快速反饋。SpringBoot微框架的Actuator模塊就是一個強大的管理接口。統(tǒng)一錯誤處理,對于框架層和服務(wù)的內(nèi)部異常,如果框架層能夠統(tǒng)一處理并記錄日志,對服務(wù)監(jiān)控和快速問題定位有很大幫助。安全。另外,這種思路也影響到了企業(yè)級數(shù)據(jù)模式。保定微服務(wù)架構(gòu)
一個微服務(wù)一般完成某個特定的功能,比如下單管理、客戶管理等等。福建銀行微服務(wù)架構(gòu)
比如:Zookeeper、Consul)。服務(wù)發(fā)現(xiàn),即新注冊的這個服務(wù)模塊能夠及時的被其他調(diào)用者發(fā)現(xiàn)。不管是服務(wù)新增和服務(wù)刪減都能實現(xiàn)自動發(fā)現(xiàn)。其實,針對不同語言體系,微服務(wù)框架而已,它們都是通用的,只不過是基于當前公司的業(yè)務(wù)特性、部署模型以及技術(shù)棧進行綜合評估。1、EtcdEtcd是一個分布式,一致的Key-Value存儲,主要用于共享配置和服務(wù)發(fā)現(xiàn),Etcd由CoreOS開發(fā)并維護,通過Raft一致性算法處理日志復(fù)制以保證強一致性。雖作為后起之秀,但其已經(jīng)融入云原生生態(tài)領(lǐng)域,并且基于Go語言開發(fā),高性能,基于HTTP作為接口使用簡單、方便,使用Raft算法保證強一致性讓用戶易于理解。除此,基于Etcd所默認的持久化機制與安全機制使得其在云原生生態(tài)領(lǐng)域能夠得到進一步的發(fā)展。其架構(gòu)圖如下所示:2、ConsulConsul是由HashiCorp基于Go語言開發(fā)的支持多數(shù)據(jù)中心分布式高可用的服務(wù)發(fā)布和注冊服務(wù)軟件,基于Raft算法保證服務(wù)的一致性,且支持健康檢查。Consul架構(gòu)采用主從模式,使得集群的數(shù)量可以大規(guī)模擴展,集群間通過RPC的方式調(diào)用(HTTP和DNS)。其簡要結(jié)構(gòu)圖如下所示:3、ZookeeperZookeeper是由Google開源的在Java語言上實現(xiàn)的分布式協(xié)調(diào)服務(wù),是Hadoop和Hbase的重要組件。福建銀行微服務(wù)架構(gòu)
首匯信息技術(shù)河北有限公司位于新石北路368號金石創(chuàng)新大廈105室,交通便利,環(huán)境優(yōu)美,是一家服務(wù)型企業(yè)。首匯信息技術(shù)是一家有限責(zé)任公司企業(yè),一直“以人為本,服務(wù)于社會”的經(jīng)營理念;“誠守信譽,持續(xù)發(fā)展”的質(zhì)量方針。公司擁有專業(yè)的技術(shù)團隊,具有信息化中臺系統(tǒng)規(guī)劃,中臺ERP服務(wù)平臺等多項業(yè)務(wù)。首匯信息技術(shù)將以真誠的服務(wù)、創(chuàng)新的理念、***的產(chǎn)品,為彼此贏得全新的未來!