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