技術隨業(yè)務而生,業(yè)務載技術而行。近些年來,伴隨數(shù)字經濟的發(fā)展,在眾多企業(yè)的數(shù)字化轉型之路上,云原生、DevOps、微服務、服務治理等成為行業(yè)內不斷被探討的新話題。人們在理解和接受這些新型概念的同時,也不斷地思考其可能的落地形態(tài)。需求是創(chuàng)造發(fā)生的原動力,于是一批性的開源技術或者框架涌現(xiàn)而出:Kubernetes,SpringCloud,ServiceMesh,Serverless……它們炙手可熱,大放異彩。然而在具體落地過程中卻步履維艱,磕磕絆絆。本文試圖結合企業(yè)業(yè)務的訴求,以應用形態(tài)發(fā)展歷程為背景,幫助企業(yè)梳理應用面向云原生、微服務轉型中涉及的各種服務治理問題,以及服務治理的發(fā)展趨勢。什么是服務治理?服務治理(SOAgovernance),按照AnneThomasManes的定義是:企業(yè)為了確保事情順利完成而實施的過程,包括佳實踐、架構原則、治理規(guī)程、規(guī)律以及其他決定性的因素。服務治理指的是用來管理SOA的采用和實現(xiàn)的過程。由定義可知,服務治理關鍵因素在于:應用形態(tài)、數(shù)據(jù)采集、信息分析、管控策略和協(xié)議規(guī)范五個方面。用戶群體只有從這五個層次出發(fā),才能構建出符合企業(yè)規(guī)范與要求的服務治理平臺,從而進一步為企業(yè)創(chuàng)造商業(yè)價值。01“微觀”塑形。每種服務都有自己的數(shù)據(jù)庫,另外,每種服務可以用更適合自己的數(shù)據(jù)庫類型,也被稱作多語言一致性架構。北京路由微服務架構數(shù)據(jù)庫
微服務架構是更面向業(yè)務創(chuàng)新的一種架構模式。團隊和自治團隊對服務的整個生命周期負責,工作在的上下文中,自己決策自己治理,而不需要統(tǒng)一的指揮中心。團隊和團隊之間通過松散的社區(qū)部落進行銜接。微服務架構設計簡圖如下如上圖所示,微服務架構可拆分為以下幾個基本組件1.注冊中心注冊中心記錄服務調度策略與服務接口的路由信息,網關根據(jù)注冊中心配置的服務調度信息實現(xiàn)負載均衡。注冊中心的服務配置信息可由具體服務上報,也可由注冊中心主動去具體服務查詢,對于大的集群建議由具體服務上報自身信息到注冊中心,一般情況下可由注冊中心主動去查詢服務配置信息,這樣具體服務不用關心注冊中心,只提供自身配置信息查詢接口。2.對外網關對外網關是內部服務集中出口,決定外部流量的走向,將流量分發(fā)到相應的服務,并且實現(xiàn)負載均衡策略。3.內部網關內部網關,為內部服務提供集中調用的地址,網絡隔離,不對外開放。添加內部網關主要是方便統(tǒng)一服務間相互調用,以及服務接口權限控制。很多架構人員認為內部服務相互調用應該是直聯(lián)方式,不應該通過網關中轉。但筆者認為內部網關與服務都處在內網環(huán)境,添加一個集中調度網關不存在性能問題。北京路由微服務架構數(shù)據(jù)庫微服務應用樂于采用簡單輕量級協(xié)議,比如REST,而不是WS-,在微服務內部避免使用ESB以及ESB類似功能。
比如:Zookeeper、Consul)。服務發(fā)現(xiàn),即新注冊的這個服務模塊能夠及時的被其他調用者發(fā)現(xiàn)。不管是服務新增和服務刪減都能實現(xiàn)自動發(fā)現(xiàn)。其實,針對不同語言體系,微服務框架而已,它們都是通用的,只不過是基于當前公司的業(yè)務特性、部署模型以及技術棧進行綜合評估。1、EtcdEtcd是一個分布式,一致的Key-Value存儲,主要用于共享配置和服務發(fā)現(xiàn),Etcd由CoreOS開發(fā)并維護,通過Raft一致性算法處理日志復制以保證強一致性。雖作為后起之秀,但其已經融入云原生生態(tài)領域,并且基于Go語言開發(fā),高性能,基于HTTP作為接口使用簡單、方便,使用Raft算法保證強一致性讓用戶易于理解。除此,基于Etcd所默認的持久化機制與安全機制使得其在云原生生態(tài)領域能夠得到進一步的發(fā)展。其架構圖如下所示:2、ConsulConsul是由HashiCorp基于Go語言開發(fā)的支持多數(shù)據(jù)中心分布式高可用的服務發(fā)布和注冊服務軟件,基于Raft算法保證服務的一致性,且支持健康檢查。Consul架構采用主從模式,使得集群的數(shù)量可以大規(guī)模擴展,集群間通過RPC的方式調用(HTTP和DNS)。其簡要結構圖如下所示:3、ZookeeperZookeeper是由Google開源的在Java語言上實現(xiàn)的分布式協(xié)調服務,是Hadoop和Hbase的重要組件。
在互聯(lián)網+和新商業(yè)業(yè)態(tài)的沖擊下,傳統(tǒng)行業(yè)正處于技術架構轉型的十字路口,隨著業(yè)務的不斷創(chuàng)新變化,服務架構也隨之無時無刻地進行革新。從早期的單體應用架構、面向SOA架構以及現(xiàn)在的微服務架構,無不是隨著業(yè)務場景的不同訴求而進行適應性架構變遷。基于當前行業(yè)的業(yè)務發(fā)展,天然基于云服務的云原生模式無疑能給出重要參考意義。然而如何落地云原生技術正逐步成為行業(yè)用戶的焦點。作為云原生生態(tài)領域中的關鍵一員,微服務的一舉一動牽動著整個生態(tài)的發(fā)展方向。那么,什么是微服務架構呢?微服務架構是指將大型復雜軟件應用拆分成多個簡單應用,每個簡單應用描述著一個小業(yè)務,系統(tǒng)中的各個簡單應用可被部署。各個微服務之間是松耦合的,可以地對每個服務進行升級、部署、擴展和重新啟動等流程,從而實現(xiàn)頻繁更新而不會對終用戶產生任何影響。相比傳統(tǒng)的單體架構,微服務架構具有降低系統(tǒng)復雜度、部署、擴展、跨語言編程等特點。與此同時,由于架構的靈活性、開發(fā)的敏捷性使得給運維帶來了新的挑戰(zhàn)。微服務框架作為微服務開發(fā)和運行治理的必要支撐,幫助實現(xiàn)微服務注冊、發(fā)現(xiàn)、治理等能力。針對微服務架構,以SpringCloud生態(tài)體系為例。每一個微服務都是微型六角形應用,都有自己的業(yè)務邏輯和適配器。
目錄一、微服務架構實施的前提二、微服務實施的三大模式三、實施微服務架構的優(yōu)勢(一)、六大技術優(yōu)勢(二)、業(yè)務與組織優(yōu)勢四、實施微服務面臨的挑戰(zhàn)(一)、技術架構的挑戰(zhàn)(二)、研發(fā)過程的挑戰(zhàn)參考書籍、文獻和資料:一、微服務架構實施的前提如圖,MartinFowler結石的生產率和復復雜度的關系??梢钥闯觯?.當復雜度較小時,采用單塊系統(tǒng)的生產率更高,微服務架構反而可能降低生產率。2.當復雜度達到一定規(guī)模時,無論單塊系統(tǒng)還是微服務架構都會降低生產率,但是單塊系統(tǒng)會面臨急劇下降的情況,而微服務架構相對平穩(wěn)。3.我們發(fā)現(xiàn)有一個明顯的拐點存在,但是并沒有量化這個拐點的具體大小,也就是說系統(tǒng)或代碼的規(guī)模達到具體多大適合進行微服務的拆分,這個需要各個團隊因地制宜。4.只有當出現(xiàn)這個拐點時對系統(tǒng)進行微服務化的拆分才是合適的方案,服務的合理拆分是實施微服務架構的一大前提。5.微服務的實施需要基礎設施自動化,這和服務規(guī)模有關,從開發(fā)之后的構建、測試、部署都需要高度自動化的環(huán)境來支撐才能有效降低邊際成本。二、微服務實施的三大模式1.典型模式:從一個單塊系統(tǒng)開始逐步轉變到多個維度的微服務架構。2.從無到有的實施。溝通結構改變設計結構的一個很有意思的例子是,一些團隊會把邏輯塞到自己能夠掌控的應用中。山西平臺微服務架構設置
運行時,行程管理服務由多個服務實例構成。北京路由微服務架構數(shù)據(jù)庫
在微服務落地伊始就逐漸發(fā)力,當下已經成為Java體系下微服務框架的代名詞,SpringCloud以Netfilx全家桶作為初始化基礎,為開發(fā)人員提供業(yè)務單元服務支撐框架的同時,也開發(fā)出一系列的服務治理SDK,供開發(fā)人員選用。在微服務發(fā)展背景下,SpringCloud可謂如日中天。DubboDubbo原為阿里巴巴開源的rpc遠程調用框架,初始設計初衷在于解決以rpc協(xié)議為標準的遠程服務調用問題,隨著阿里巴巴重啟Dubbo,其也開始在服務治理領域發(fā)力,成為很多以rpc協(xié)議作為通信基礎系統(tǒng)平臺的。粗略而言,Dubbo和SpringCloud已成為Java體系下的服務治理“雙”。gRPCgRPC與Dubbo類似,初是由Google開源的一款遠程服務調用框架。gRPC憑借HTTP/2和RrotoBuf服務定義方式以及多語言支持的特性,加之其易于定制與開發(fā),能夠方面開發(fā)人員進行快速擴展和靈活發(fā)揮,從而也成為眾多用戶的選擇之一。ServiceMeshServiceMesh的出現(xiàn)不在于它實現(xiàn)了多少功能,而是它徹底把業(yè)務單元與業(yè)務支撐體系分離,完整貫徹了“術業(yè)有專攻”的思想理念。它允許業(yè)務人員聚焦業(yè)務實現(xiàn),不再關心服務治理相關的內容。通過與容器技術結合,下沉至基礎設施,從通信協(xié)議的角度徹底接管業(yè)務通信交互過程。北京路由微服務架構數(shù)據(jù)庫
首匯信息技術河北有限公司是一家服務型類企業(yè),積極探索行業(yè)發(fā)展,努力實現(xiàn)產品創(chuàng)新。首匯信息技術是一家有限責任公司企業(yè),一直“以人為本,服務于社會”的經營理念;“誠守信譽,持續(xù)發(fā)展”的質量方針。公司擁有專業(yè)的技術團隊,具有信息化中臺系統(tǒng)規(guī)劃,中臺ERP服務平臺等多項業(yè)務。首匯信息技術以創(chuàng)造***產品及服務的理念,打造高指標的服務,引導行業(yè)的發(fā)展。