自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

服務(wù)網(wǎng)格技術(shù)淺析

開發(fā) 架構(gòu)
本文將對(duì)其架構(gòu)思想和最主流的實(shí)現(xiàn)方案Istio做一個(gè)簡(jiǎn)單的介紹。

Part 01

要解決的問(wèn)題

微服務(wù)自在2012年提出的概念以來(lái),出現(xiàn)了Spring Could、Dubbo,Spring Cloud Alibaba等成熟穩(wěn)定的實(shí)現(xiàn)方案,并在實(shí)際生產(chǎn)中受到廣泛應(yīng)用。其根本思想是通過(guò)拆分原則,希望一個(gè)服務(wù)只負(fù)責(zé)業(yè)務(wù)中一個(gè)獨(dú)立的功能,這樣任何一個(gè)需求不會(huì)因?yàn)榘l(fā)布或者維護(hù)而影響到不相關(guān)的服務(wù),然而隨著業(yè)務(wù)越來(lái)越大,拆分的服務(wù)實(shí)例越來(lái)越多,各個(gè)服務(wù)之間的依賴調(diào)用就變成了非常復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),類似于圖1所示,就會(huì)面臨著以下問(wèn)題。

圖片

 治理難度大、技術(shù)門檻高

隨著微服務(wù)實(shí)施水平的不斷深化,除了基礎(chǔ)的服務(wù)發(fā)現(xiàn),配置中心和授權(quán)管理之外,在實(shí)施的過(guò)程中不可避免的需要在服務(wù)治理層面面臨著各種新的挑戰(zhàn)如分布式跟蹤,熔斷降級(jí),灰度發(fā)布,故障切換等等治理需求。這些眾多的非業(yè)務(wù)性需求,涉及到運(yùn)維、運(yùn)營(yíng)管理層面,這使得整個(gè)項(xiàng)目在組織、分工、權(quán)責(zé)上變得交叉模糊,同時(shí)對(duì)相關(guān)人員提出了非常高的技術(shù)要求,然而我們開發(fā)的是業(yè)務(wù)程序,它的核心價(jià)值是業(yè)務(wù)邏輯的處理和實(shí)現(xiàn),將越來(lái)越多的時(shí)間和精力花費(fèi)在這些非業(yè)務(wù)功能上是非常不合理的。

 多語(yǔ)言支持不足 

對(duì)于稍具規(guī)模的團(tuán)隊(duì),多語(yǔ)言的技術(shù)棧和跨語(yǔ)言調(diào)用是常態(tài),然而目前開源社區(qū)上并沒(méi)有一套統(tǒng)一的跨語(yǔ)言的微服務(wù)技術(shù)[1],那些沒(méi)有框架支持的語(yǔ)言編寫的服務(wù)很難融入面向微服務(wù)的已有架構(gòu)體系中,想因地制宜的用多種語(yǔ)言實(shí)現(xiàn)架構(gòu)體系中的不同模塊在現(xiàn)實(shí)開發(fā)中很難做到。

代碼侵入性強(qiáng) 

主流的微服務(wù)實(shí)現(xiàn)框架或多或少都對(duì)業(yè)務(wù)代碼有一定的侵入性,比如Spring Cloud框架中幾乎每個(gè)微服務(wù)都需要集成Eureka、Feign等組件,這些組件框架替換成本高,復(fù)雜項(xiàng)目依賴時(shí)的庫(kù)版本兼容問(wèn)題也非常棘手,同時(shí),框架庫(kù)的升級(jí)也無(wú)法對(duì)服務(wù)透明,服務(wù)會(huì)因?yàn)楹蜆I(yè)務(wù)無(wú)關(guān)的依賴庫(kù)升級(jí)而被迫升級(jí),我們希望的是盡量將負(fù)責(zé)服務(wù)間通信的這種非業(yè)務(wù)代碼從業(yè)務(wù)功能代碼中剝離出來(lái)。

Part 02

Service Mesh架構(gòu)思想 

為解決上述微服務(wù)存在的問(wèn)題,Service Mesh(服務(wù)網(wǎng)格)應(yīng)運(yùn)而生,它主要作為處理服務(wù)間通信的基礎(chǔ)設(shè)施層,獨(dú)立于具體的服務(wù)而存在,目的是從根本上解決了多語(yǔ)言支持不足以及代碼侵入性的問(wèn)題,并且憑借服務(wù)網(wǎng)格的獨(dú)立性,使得業(yè)務(wù)團(tuán)隊(duì)不再需要關(guān)心復(fù)雜的服務(wù)治理工作,可以全權(quán)交給服務(wù)網(wǎng)格處理。

  • 核心思想

服務(wù)網(wǎng)格的核心思想為Sidecar模式(邊車模式),即將每個(gè)服務(wù)的負(fù)載、限流和服務(wù)發(fā)現(xiàn)等等通信功能和應(yīng)用業(yè)務(wù)本身功能進(jìn)行解耦分離,其負(fù)責(zé)服務(wù)間通信的部分稱之為Sidecar代理,業(yè)務(wù)功能代碼只和同機(jī)器下的不同進(jìn)程的代理通信。如圖2所示。

圖片

  • 名稱由來(lái)

由于每一個(gè)服務(wù)實(shí)例都會(huì)有一個(gè)Sidecar代理與之配對(duì),服務(wù)之間的通信都是通Sidecar進(jìn)行,在部署圖表示為代理的交叉連接形成了一種網(wǎng)絡(luò)網(wǎng)格,故稱之為“服務(wù)網(wǎng)格”。目前所說(shuō)的Service Mesh在若干服務(wù)的Sidercar代理基礎(chǔ)上提供了統(tǒng)一集中式管理的運(yùn)維入口即控制面平面, SideCar代理也稱為數(shù)據(jù)平面 ,因此我們通常說(shuō)Service Mesh由數(shù)據(jù)平臺(tái)和控制平面組成,其結(jié)構(gòu)如圖3所示。

圖片

Part 03

Istio簡(jiǎn)介 

- Istio是什么?

Service Mesh(服務(wù)網(wǎng)格)只是一種架構(gòu)思想,主流的實(shí)現(xiàn)方案有Istio、Linkerd、Linkerd2、Consoul等等。其中Istio是目前最受歡迎且在實(shí)際生產(chǎn)中應(yīng)用最為廣泛的服務(wù)網(wǎng)格,它是由Google,IBM和Lyft這三家互聯(lián)網(wǎng)巨頭聯(lián)合開發(fā)的一個(gè)基于服務(wù)網(wǎng)格的開源項(xiàng)目,功能豐富,成熟度高。下面將簡(jiǎn)單介紹Istio的框架及功能。

- Istio架構(gòu)

Istio架構(gòu)如下圖所示,在邏輯上與Service Mesh框架思想保持一致,分為數(shù)據(jù)平面和控制平面兩大部分,整體架構(gòu)如圖4所示。

圖片

①數(shù)據(jù)平面

數(shù)據(jù)平面由一組以Sidecar方式部署的Envoy代理組成,所有進(jìn)入和流出服務(wù)的流量都會(huì)被Envoy攔截,并與控制平面進(jìn)行交互,根據(jù)配置執(zhí)行相應(yīng)的通信功能。

Envoy是用C++開發(fā)的高性能代理,Envoy代理作為唯一與數(shù)據(jù)平面流量交互的 Istio組件,相對(duì)于其他服務(wù)網(wǎng)格實(shí)現(xiàn)方案代理來(lái)說(shuō)有著更豐富的治理能力和靈活的配置方式,并且支持各種插件可用于擴(kuò)展流量治理能力,可生成遙測(cè)數(shù)據(jù)[2]。

Envoy和Istio并不是強(qiáng)綁定關(guān)系,Envoy可以在其他框架中使用,Istio也可以采用其他代理。Envoy本身的內(nèi)置功能有:負(fù)載均衡、TLS 終止、動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、HTTP/2&gRPC 代理,熔斷器,健康檢查,基于百分比流量拆分的分段推出,故障注入等。Envoy允許在不需要重新設(shè)計(jì)架構(gòu)或重寫代碼條件下,啟用或執(zhí)行的一些Istio的功能和任務(wù),比如:流量控制功能、網(wǎng)絡(luò)彈性特性、安全性和身份認(rèn)證特性基于WebAssembly的可插拔擴(kuò)展模型等。

②控制平面

Istio的控制平面提供服務(wù)發(fā)現(xiàn)、配置和證書管理。由Pilot、Citadel、Galley三個(gè)組件整合成了一個(gè)單進(jìn)程、多模塊的istiod,極大的降低了部署的復(fù)雜度。在整個(gè)運(yùn)行流程中,需要這些組件協(xié)同工作。

Pilot組件是控制面最重要的組件,負(fù)責(zé)提供服務(wù)發(fā)現(xiàn)、流量路由及服務(wù)治理功能,其架構(gòu)如圖5所示。

服務(wù)發(fā)現(xiàn):Pilot通過(guò)插件的形式可以支持多種服務(wù)注冊(cè)平臺(tái)(K8s、Mesos等),通過(guò)平臺(tái)適配器(Platform Adapter)將服務(wù)注冊(cè)平臺(tái)的服務(wù)數(shù)據(jù)填充為標(biāo)準(zhǔn)服務(wù)模型(Abstract Model),例如Pilot通過(guò)K8s適配器,將K8s中的Service及Pod實(shí)例等服務(wù)信息,轉(zhuǎn)換為標(biāo)準(zhǔn)模型供Pilot使用。Pilot在得到統(tǒng)一的服務(wù)信息后,將服務(wù)信息通過(guò)Envoy API下發(fā)到數(shù)據(jù)面Envoy代理,實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)功能[3]

流量路由及服務(wù)治理:運(yùn)維人員可以通過(guò)Rules API指定各種高級(jí)流量管理規(guī)則(Gateway、VirtualService等),這些規(guī)則將被轉(zhuǎn)換為數(shù)據(jù)面Envoy可以識(shí)別的格式,通過(guò)Envoy API下發(fā)給Envoy,Envoy在得到這些規(guī)則后,按照規(guī)則進(jìn)行流量轉(zhuǎn)發(fā)及安全認(rèn)證[3]。

圖片

Gally是負(fù)責(zé)配置的驗(yàn)證和處理的組件,從底層平臺(tái)獲取配置,驗(yàn)證配置信息的格式和內(nèi)容的正確性,并將這些配置信息提供給Pilot使用。

Citadel 是與安全相關(guān)的組件,主要負(fù)責(zé)密鑰和證書的管理,可以實(shí)現(xiàn)強(qiáng)大的授權(quán)和認(rèn)證等功能。

Part 04

 總結(jié)

本文從傳統(tǒng)微服務(wù)在具體實(shí)施中存在的問(wèn)題出發(fā),簡(jiǎn)述了為解決這些問(wèn)題而產(chǎn)生的服務(wù)網(wǎng)格架構(gòu)思想,最后對(duì)這種架構(gòu)思想一種最受歡迎的實(shí)現(xiàn)方案Istio和核心組件進(jìn)行了的簡(jiǎn)單介紹。但是任何一種方案都很難做到一勞永逸,Istio只是把原來(lái)分散在應(yīng)用內(nèi)部的復(fù)雜性統(tǒng)一抽象出來(lái)放到了統(tǒng)一的地方,且Istio的架構(gòu)相對(duì)復(fù)雜,在具體生產(chǎn)中,必須做好清楚的規(guī)劃,權(quán)衡它帶來(lái)的好處是否遠(yuǎn)大于額外維護(hù)它的花費(fèi),選擇合適的架構(gòu)方案。

責(zé)任編輯:龐桂玉 來(lái)源: 移動(dòng)Labs
相關(guān)推薦

2022-11-24 14:21:27

微服務(wù)ISTIO

2020-11-15 23:48:57

服務(wù)網(wǎng)格微服務(wù)網(wǎng)絡(luò)網(wǎng)絡(luò)技術(shù)

2019-08-29 08:00:00

微服務(wù)架構(gòu)服務(wù)網(wǎng)格

2020-01-07 09:25:02

服務(wù)網(wǎng)格微服務(wù)Kubernetes

2022-08-09 08:00:00

服務(wù)網(wǎng)格云原生工具

2022-05-16 08:00:00

服務(wù)網(wǎng)格架構(gòu)Kuma

2020-07-13 07:00:03

微服務(wù)服務(wù)網(wǎng)格架構(gòu)

2021-04-02 22:00:50

服務(wù)網(wǎng)格微服務(wù)

2021-04-25 08:48:36

Traefik mes服務(wù)網(wǎng)格Kubernetes集

2020-10-21 13:31:53

服務(wù)網(wǎng)格開源微服務(wù)

2020-08-26 05:45:40

服務(wù)網(wǎng)格DevOps開發(fā)

2024-09-27 10:05:02

2021-08-27 11:42:51

Nacos云原生阿里云

2022-07-06 08:25:17

服務(wù)網(wǎng)格Kubernetes

2019-07-18 12:41:52

數(shù)字化服務(wù)網(wǎng)格微服務(wù)

2022-09-06 10:46:34

服務(wù)網(wǎng)格可觀測(cè)性微服務(wù)

2023-05-08 07:05:26

2022-08-02 16:37:32

服務(wù)網(wǎng)格網(wǎng)絡(luò)服務(wù)

2020-11-30 13:50:13

服務(wù)網(wǎng)格微服務(wù)數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)