云原生集成開發(fā)環(huán)境——TitanIDE
通過網(wǎng)頁在任何地方更安全、更高效地編碼2022-07-12
904
微服務(wù)(Microservice),一種用于構(gòu)建應(yīng)用的分布式架構(gòu)框架,其解決了傳統(tǒng)軟件開發(fā)面臨著很多的問題,比如:代碼重復(fù)率高、代碼龐大難以維護、無法快速迭代、測試成本高、可伸縮性差、可靠性差、模塊間高度依賴等。
什么是微服務(wù)?
ThoughtWorks 首席科學(xué)家馬丁·福勒(Martin Fowler)曾說過:微服務(wù)架構(gòu)風(fēng)格是以一組小服務(wù)來開發(fā)單個應(yīng)用程序的方法,每一個服務(wù)運行在自己獨立的進程中并且使用輕量的方法通信,通常是一個HTTP API接口。這些服務(wù)圍繞相關(guān)業(yè)務(wù)范圍構(gòu)建并且由全自動化部署機器獨立部署。這些服務(wù)只需要最低限度的管理,可以用不同的編程語言去編寫并且使用不同的數(shù)據(jù)存儲技術(shù)。
聊到微服務(wù)架構(gòu),不得不說說上一代傳統(tǒng)單體架構(gòu)。單塊應(yīng)用目前應(yīng)用還是較多的,它部署容易,但任何改動都會牽一發(fā)動全身。哪怕是對應(yīng)用程序一個小地方的改變,都需要整個單塊應(yīng)用被重新構(gòu)建和部署。如要實現(xiàn)縮放,需要縮放整個應(yīng)用程序而不是應(yīng)用程序的某一部分,這要求更多的資源。
單體架構(gòu) VS 微服務(wù)框架
微服務(wù)架構(gòu)的通用特性
根據(jù)MartinFowler的分析,微服務(wù)架構(gòu)具有一些通用特性,但并非所有微服務(wù)架構(gòu)應(yīng)用都必須具備所有這些特性。
為什么要采用微服務(wù)架構(gòu)?
軟件架構(gòu)的發(fā)展經(jīng)歷了從單體結(jié)構(gòu)、垂直架構(gòu)、SOA架構(gòu)到微服務(wù)架構(gòu)的過程,各個架構(gòu)的特點如下圖所示:
各架構(gòu)特點
相對于傳統(tǒng)單體架構(gòu)來說,微服務(wù)架構(gòu)有著絕對的優(yōu)勢,企業(yè)應(yīng)用向微服務(wù)架構(gòu)演進的趨勢不可逆轉(zhuǎn)。
傳統(tǒng)架構(gòu) VS 微服務(wù)架構(gòu)
微服務(wù)架構(gòu)的優(yōu)點
因此,企業(yè)應(yīng)用架構(gòu)使用微服務(wù)的先決條件要提前考慮到位。
使用微服務(wù)的先決條件
當軟件的復(fù)雜度很低的時候,單體架構(gòu)下的生產(chǎn)力是要高于微服務(wù)架構(gòu)的,但隨著復(fù)雜度的不斷增加,無論是單體應(yīng)用還是微服務(wù)應(yīng)用的生產(chǎn)力都會下降,只是微服務(wù)架構(gòu)的下降會相對緩慢一些。
如果長期業(yè)務(wù)規(guī)劃不需要微服務(wù)架構(gòu)或者團隊不具備實施微服務(wù)一些基本的條件,不建議實施微服務(wù),或者應(yīng)用從試點入手,逐步在團隊中推行微服務(wù)架構(gòu)。
如何實施微服務(wù)架構(gòu)
微服務(wù)架構(gòu)4大設(shè)計原則:
· AKF拆分:AKF擴展立方體(Scalability Cube),是《架構(gòu)即未來》一書中提出的可擴展模型,這個立方體有三個軸線,每個軸線描述擴展性的一個維度,他們分別是產(chǎn)品、流程和團隊。
· 前后端分離:前后端分離原則,簡單來講就是前端和后端的代碼分離也就是技術(shù)上做分離,推薦的模式是最好直接采用物理分離的方式部署,進一步促使進行更徹底的分離。
· 無狀態(tài)服務(wù):首先說一下什么是狀態(tài):如果一個數(shù)據(jù)需要被多個服務(wù)共享,才能完成一筆交易,那么這個數(shù)據(jù)被稱為狀態(tài)。進而依賴這個“狀態(tài)”數(shù)據(jù)的服務(wù)被稱為有狀態(tài)服務(wù),反之稱為無狀態(tài)服務(wù)。那么這個無狀態(tài)服務(wù)原則并不是說在微服務(wù)架構(gòu)里就不允許存在狀態(tài),表達的真實意思是要把有狀態(tài)的業(yè)務(wù)服務(wù)改變?yōu)闊o狀態(tài)的計算類服務(wù),那么狀態(tài)數(shù)據(jù)也就相應(yīng)的遷移到對應(yīng)的“有狀態(tài)數(shù)據(jù)服務(wù)”中。
· Rest 通信風(fēng)格:作為一個原則來講本來應(yīng)該是個“無狀態(tài)通信原則”,在這里推薦一個實踐優(yōu)選的 Restful 通信風(fēng)格 ,因為他有很多好處:
行云系統(tǒng)設(shè)計的微服務(wù)實踐
kaiyun開云創(chuàng)新基于微框架 SpringBoot 實踐,涵蓋了微服務(wù)模塊50個,多語言開發(fā)框架,多協(xié)議支持,并且應(yīng)用基于容器技術(shù)等。
主要模塊有:
Mart — 應(yīng)用商店
Factory—應(yīng)用工廠
Composer—設(shè)計器
APIGateway—API網(wǎng)關(guān)
Admin—運維中心
DNS—外部DNS服務(wù)
Orca—調(diào)度器
Blueprint Repo—藍圖存儲
Internal DNS—內(nèi)部DNS服務(wù)
Turtle —策略管理
Metrics—統(tǒng)計數(shù)據(jù)
Alert—監(jiān)控告警
杭州—區(qū)域,包括容器集群等
Gateway—服務(wù)接入網(wǎng)關(guān)
行云 SpringBoot 實踐架構(gòu)圖
總結(jié)
當前,以微服務(wù)、DevOps、容器、多云業(yè)務(wù)管理為代表的云原生技術(shù)已經(jīng)廣泛成熟應(yīng)用,成為加速企業(yè)數(shù)字化業(yè)務(wù)高效創(chuàng)新、實現(xiàn)企業(yè)數(shù)字化轉(zhuǎn)型的最佳技術(shù)支撐。而信創(chuàng)支持、國產(chǎn)化支持,是中國企業(yè)數(shù)字化轉(zhuǎn)型不得不滿足的基本要求。更有專家指出,在關(guān)乎企業(yè)生存的必選項“數(shù)字化轉(zhuǎn)型”以及國家信創(chuàng)戰(zhàn)略的共同沖擊下,企業(yè)需要改變現(xiàn)有業(yè)務(wù)和IT的架構(gòu),更快速地應(yīng)對挑戰(zhàn)、響應(yīng)變化,增強自身的競爭力。
-------------