Service Mesh服務(wù)網(wǎng)格新生代
服務(wù)網(wǎng)格
Service Mesh,服務(wù)網(wǎng)格,也有人翻譯為”服務(wù)嚙合層”。這貌似是今年才出來的新名詞?在2017年之前沒有聽過,雖然類似的產(chǎn)品已經(jīng)存在挺長時間。
什么是Service Mesh(服務(wù)網(wǎng)格)?
Service Mesh是專用的基礎(chǔ)設(shè)施層,輕量級高性能網(wǎng)絡(luò)代理。提供安全的、快速的、可靠地服務(wù)間通訊,與實際應(yīng)用部署一起,但對應(yīng)用透明。
為了幫助理解, 下圖展示了服務(wù)網(wǎng)格的典型邊車部署方式:
圖中應(yīng)用作為服務(wù)的發(fā)起方,只需要用最簡單的方式將請求發(fā)送給本地的服務(wù)網(wǎng)格代理,然后網(wǎng)格代理會進(jìn)行后續(xù)的操作,如服務(wù)發(fā)現(xiàn),負(fù)載均衡,最后將請求轉(zhuǎn)發(fā)給目標(biāo)服務(wù)。當(dāng)有大量服務(wù)相互調(diào)用時,它們之間的服務(wù)調(diào)用關(guān)系就會形成網(wǎng)格,如下圖所示:
在上圖中綠色方塊為服務(wù),藍(lán)色方塊為邊車部署的服務(wù)網(wǎng)格,藍(lán)色線條為服務(wù)間通訊??梢钥吹剿{(lán)色的方塊和線條組成了整個網(wǎng)格,我們將這個圖片旋轉(zhuǎn)90°,就更加明顯了:服務(wù)網(wǎng)格呈現(xiàn)出一個完整的支撐態(tài)勢,將所有的服務(wù)”架”在網(wǎng)格之上:
服務(wù)網(wǎng)格的細(xì)節(jié)我們今天不詳細(xì)展開, 詳細(xì)內(nèi)容大家可以參考網(wǎng)上資料。或者稍后我將會推出一個服務(wù)網(wǎng)格的專題,單獨深入介紹服務(wù)網(wǎng)格。
Istio也可以視為是一種服務(wù)網(wǎng)格, 在Istio網(wǎng)站上詳細(xì)解釋了這一概念:
如果我們可以在架構(gòu)中的服務(wù)和網(wǎng)絡(luò)間透明地注入一層,那么該層將賦予運維人員對所需功能的控制,同時將開發(fā)人員從編碼實現(xiàn)分布式系統(tǒng)問題中解放出來。通常將這個統(tǒng)一的架構(gòu)層與服務(wù)部署在一起,統(tǒng)稱為“服務(wù)嚙合層”。由于微服務(wù)有助于分離各個功能團(tuán)隊,因此服務(wù)嚙合層有助于將運維人員從應(yīng)用特性開發(fā)和發(fā)布過程中分離出來。通過系統(tǒng)地注入代理到微服務(wù)間的網(wǎng)絡(luò)路徑中,Istio將迥異的微服務(wù)轉(zhuǎn)變成一個集成的服務(wù)嚙合層。
Istio能做什么?
Istio力圖解決前面列出的微服務(wù)實施后需要面對的問題。Istio 首先是一個服務(wù)網(wǎng)絡(luò),但是Istio又不僅僅是服務(wù)網(wǎng)格: 在 Linkerd, Envoy 這樣的典型服務(wù)網(wǎng)格之上,Istio提供了一個完整的解決方案,為整個服務(wù)網(wǎng)格提供行為洞察和操作控制,以滿足微服務(wù)應(yīng)用程序的多樣化需求。
Istio在服務(wù)網(wǎng)絡(luò)中統(tǒng)一提供了許多關(guān)鍵功能(以下內(nèi)容來自官方文檔):
流量管理:控制服務(wù)之間的流量和API調(diào)用的流向,使得調(diào)用更可靠,并使網(wǎng)絡(luò)在惡劣情況下更加健壯。
可觀察性:了解服務(wù)之間的依賴關(guān)系,以及它們之間流量的本質(zhì)和流向,從而提供快速識別問題的能力。
策略執(zhí)行:將組織策略應(yīng)用于服務(wù)之間的互動,確保訪問策略得以執(zhí)行,資源在消費者之間良好分配。策略的更改是通過配置網(wǎng)格而不是修改應(yīng)用程序代碼。
服務(wù)身份和安全:為網(wǎng)格中的服務(wù)提供可驗證身份,并提供保護(hù)服務(wù)流量的能力,使其可以在不同可信度的網(wǎng)絡(luò)上流轉(zhuǎn)。
除此之外,Istio針對可擴展性進(jìn)行了設(shè)計,以滿足不同的部署需要:
平臺支持:Istio旨在在各種環(huán)境中運行,包括跨云, 預(yù)置,Kubernetes,Mesos等。最初專注于Kubernetes,但很快將支持其他環(huán)境。
集成和定制:策略執(zhí)行組件可以擴展和定制,以便與現(xiàn)有的ACL,日志,監(jiān)控,配額,審核等解決方案集成。
這些功能極大的減少了應(yīng)用程序代碼,底層平臺和策略之間的耦合,使微服務(wù)更容易實現(xiàn)。
Istio的真正價值
上面摘抄了Istio官方的大段文檔說明,洋洋灑灑的列出了Istio的大把大把高大上的功能。但是這些都不是重點!理論上說,任何微服務(wù)框架,只要愿意往上面堆功能,早晚都可以實現(xiàn)這些。那,關(guān)鍵在哪里?
不妨設(shè)想一下,在平時理解的微服務(wù)開發(fā)過程中,在沒有Istio這樣的服務(wù)網(wǎng)格的情況下,要如何開發(fā)我們的應(yīng)用程序,才可以做到前面列出的這些豐富多彩的功能? 這數(shù)以幾十記的各種特性,如何才可以加入到應(yīng)用程序?
無外乎,找個Spring Cloud或者Dubbo的成熟框架,直接搞定服務(wù)注冊,服務(wù)發(fā)現(xiàn),負(fù)載均衡,熔斷等基礎(chǔ)功能。然后自己開發(fā)服務(wù)路由等高級功能, 接入Zipkin等Apm做全鏈路監(jiān)控,自己做加密、認(rèn)證、授權(quán)。 想辦法搞定灰度方案,用Redis等實現(xiàn)限速、配額。 諸如此類,一大堆的事情, 都需要自己做,無論是找開源項目還是自己操刀,最后整出一個帶有一大堆功能的應(yīng)用程序,上線部署。然后給個配置說明到運維,告訴他說如何需要灰度,要如何如何, 如果要限速,配置哪里哪里。
這些工作,相信做微服務(wù)落地的公司,基本都跑不掉,需求是現(xiàn)實存在的,無非能否實現(xiàn),以及實現(xiàn)多少的問題,但是毫無疑問的是,要做到這些,絕對不是一件容易的事情。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%