服务网格 Service Mesh
什么是服務(wù)網(wǎng)格?
服務(wù)網(wǎng)格是一個(gè)軟件層,用于處理應(yīng)用程序中服務(wù)之間的所有通信。該層由容器化微服務(wù)組成。隨著應(yīng)用程序的擴(kuò)展和微服務(wù)數(shù)量的增加,監(jiān)控服務(wù)的性能變得越來越困難。為了管理服務(wù)之間的連接,服務(wù)網(wǎng)格提供了監(jiān)控、記錄、跟蹤和流量控制等新功能。它獨(dú)立于每項(xiàng)服務(wù)的代碼,這使它能夠跨網(wǎng)絡(luò)邊界和多個(gè)服務(wù)管理系統(tǒng)工作。
為什么需要服務(wù)網(wǎng)格?
在現(xiàn)代應(yīng)用程序架構(gòu)中,您可以將應(yīng)用程序作為可獨(dú)立部署的小型微服務(wù)的集合來構(gòu)建。不同的團(tuán)隊(duì)可以構(gòu)建單獨(dú)的微服務(wù)并選擇其編程語(yǔ)言和工具。但是,微服務(wù)必須進(jìn)行通信,應(yīng)用程序代碼才能正常運(yùn)行。
應(yīng)用程序性能取決于服務(wù)之間通信的速度和彈性。開發(fā)人員必須跨服務(wù)監(jiān)控和優(yōu)化應(yīng)用程序,但由于系統(tǒng)的分布性質(zhì),他們很難獲得可見性。隨著應(yīng)用程序的擴(kuò)展,管理通信變得更加復(fù)雜。
服務(wù)級(jí)別的可觀測(cè)性
隨著部署的工作負(fù)載和服務(wù)越來越多,開發(fā)人員發(fā)現(xiàn)很難理解所有服務(wù)是如何協(xié)同工作的。例如,服務(wù)團(tuán)隊(duì)想知道他們的下游和上游依賴關(guān)系是什么。他們希望更清楚地了解服務(wù)和工作負(fù)載在應(yīng)用程序?qū)拥耐ㄐ欧绞健?/p>
服務(wù)級(jí)別控制
管理員希望控制哪些服務(wù)相互通信,以及它們執(zhí)行哪些操作。他們希望對(duì)微服務(wù)架構(gòu)中服務(wù)的行為、策略和交互進(jìn)行精細(xì)的控制和治理。強(qiáng)制執(zhí)行安全策略對(duì)于監(jiān)管合規(guī)至關(guān)重要。
服務(wù)網(wǎng)格有哪些優(yōu)勢(shì)?
服務(wù)網(wǎng)格提供了一個(gè)集中的專用基礎(chǔ)設(shè)施層,用于處理分布式應(yīng)用程序中復(fù)雜的服務(wù)到服務(wù)通信。
服務(wù)發(fā)現(xiàn)
服務(wù)網(wǎng)格提供自動(dòng)服務(wù)發(fā)現(xiàn),可以減少管理服務(wù)端點(diǎn)的運(yùn)維負(fù)擔(dān)。它們使用服務(wù)注冊(cè)表來動(dòng)態(tài)發(fā)現(xiàn)和跟蹤網(wǎng)格中的所有服務(wù)。無論服務(wù)位于何處或底層基礎(chǔ)設(shè)施如何,都可以無縫地相互查找和通信。您可以根據(jù)需要部署新服務(wù)來快速擴(kuò)展。
負(fù)載均衡
服務(wù)網(wǎng)格使用各種算法(例如循環(huán)算法、最少連接或加權(quán)負(fù)載均衡)在多個(gè)服務(wù)實(shí)例之間智能地分配請(qǐng)求。負(fù)載均衡可提高資源利用率并確保高可用性和可擴(kuò)展性。您可以優(yōu)化性能并防止出現(xiàn)網(wǎng)絡(luò)通信瓶頸。
流量管理
服務(wù)網(wǎng)格提供高級(jí)流量管理功能,可對(duì)請(qǐng)求路由和流量行為進(jìn)行精細(xì)控制。下面是幾個(gè)示例。
流量分割
您可以將傳入流量劃分到不同的服務(wù)版本或配置中。網(wǎng)格將一些流量引導(dǎo)到更新后的版本,從而以受控方式逐步推出變更。這樣可以實(shí)現(xiàn)平穩(wěn)過渡,并最大限度地降低變更的影響。
請(qǐng)求鏡像
您可以將流量復(fù)制到測(cè)試或監(jiān)控服務(wù)進(jìn)行分析,而不影響主請(qǐng)求流。鏡像請(qǐng)求時(shí),您可以深入了解服務(wù)如何在不影響生產(chǎn)流量的情況下處理特定請(qǐng)求。
金絲雀部署
您可以將一小部分用戶或流量引導(dǎo)到新的服務(wù)版本,而大多數(shù)用戶則繼續(xù)使用現(xiàn)有的穩(wěn)定版本。在有限的接觸范圍內(nèi),您可以在現(xiàn)實(shí)環(huán)境中試驗(yàn)新版本的行為和性能。
安全性
服務(wù)網(wǎng)格提供安全通信功能,例如雙向 TLS(mTLS)加密、身份驗(yàn)證和授權(quán)。雙向 TLS 支持服務(wù)間通信中的身份驗(yàn)證。它通過加密流量來幫助確保數(shù)據(jù)的機(jī)密性和完整性。您還可以強(qiáng)制執(zhí)行授權(quán)策略,以控制哪些服務(wù)訪問特定端點(diǎn)或執(zhí)行特定操作。
監(jiān)控
服務(wù)網(wǎng)格提供全面的監(jiān)控和可觀測(cè)性功能,可深入了解服務(wù)的運(yùn)行狀況、性能和行為。監(jiān)控還支持故障排除和性能優(yōu)化。以下是您可以使用的監(jiān)控功能示例:
-
收集延遲、錯(cuò)誤率和資源利用率等指標(biāo),以分析整體系統(tǒng)性能
-
執(zhí)行分布式跟蹤,查看多個(gè)服務(wù)中請(qǐng)求的完整路徑和時(shí)間
-
在日志中捕獲服務(wù)事件,用于審計(jì)、調(diào)試和合規(guī)目的
服務(wù)網(wǎng)格是如何工作的?
服務(wù)網(wǎng)格從單個(gè)服務(wù)中移除控制服務(wù)間通信的邏輯,并將通信抽象到自己的基礎(chǔ)設(shè)施層。它使用多個(gè)網(wǎng)絡(luò)代理來路由和跟蹤服務(wù)之間的通信。
代理充當(dāng)組織網(wǎng)絡(luò)和微服務(wù)之間的中間網(wǎng)關(guān)。所有進(jìn)出該服務(wù)的流量都通過代理服務(wù)器路由。單個(gè)代理有時(shí)被稱為 sidecar,因?yàn)樗鼈兪欠珠_運(yùn)行的,但在邏輯上位于每個(gè)服務(wù)旁邊。這些代理一起構(gòu)成了服務(wù)網(wǎng)格層。
服務(wù)網(wǎng)格架構(gòu)中有兩個(gè)主要組成部分:控制面板和數(shù)據(jù)面板。
數(shù)據(jù)面板
數(shù)據(jù)面板是服務(wù)網(wǎng)格的數(shù)據(jù)處理組件。它包括所有 sidecar 代理及其功能。當(dāng)一個(gè)服務(wù)想要與其他服務(wù)通信時(shí),sidecar 代理會(huì)采取以下操作:
-
sidecar 攔截請(qǐng)求
-
它將請(qǐng)求封裝在單獨(dú)的網(wǎng)絡(luò)連接中
-
它在源代理和目標(biāo)代理之間建立安全的加密通道
sidecar 代理處理服務(wù)之間的低級(jí)消息傳遞。它們還會(huì)實(shí)施斷路和請(qǐng)求重試等功能,以增強(qiáng)彈性并防止服務(wù)降級(jí)。服務(wù)網(wǎng)格功能(例如負(fù)載均衡、服務(wù)發(fā)現(xiàn)和流量路由)在數(shù)據(jù)面板中實(shí)施。
控制面板
控制面板充當(dāng)服務(wù)網(wǎng)格的*管理和配置層。
使用控制面板,管理員可以在網(wǎng)格內(nèi)定義和配置服務(wù)。例如,他們可以指定服務(wù)端點(diǎn)、路由規(guī)則、負(fù)載均衡策略和安全設(shè)置等參數(shù)。定義配置后,控制面板將必要信息分發(fā)到服務(wù)網(wǎng)格的數(shù)據(jù)面板。
代理使用配置信息來決定如何處理傳入的請(qǐng)求。它們還可以接收配置更改并動(dòng)態(tài)調(diào)整其行為。您可以實(shí)時(shí)更改服務(wù)網(wǎng)格配置,而無需重新啟動(dòng)或中斷服務(wù)。
服務(wù)網(wǎng)格實(shí)現(xiàn)通常在控制面板中包括以下功能:
-
用于跟蹤網(wǎng)格內(nèi)所有服務(wù)的服務(wù)注冊(cè)表
-
自動(dòng)發(fā)現(xiàn)新服務(wù)并刪除非活動(dòng)服務(wù)
-
收集和聚合遙測(cè)數(shù)據(jù),例如指標(biāo)、日志和分布式跟蹤信息
什么是 Istio?
Istio 是一個(gè)開源服務(wù)網(wǎng)格項(xiàng)目,設(shè)計(jì)為主要與 Kubernetes 配合使用。Kubernetes 是一款開源容器編排平臺(tái),用于大規(guī)模部署和管理容器化應(yīng)用程序。
Istio 的控制面板組件本身作為 Kubernetes 工作負(fù)載運(yùn)行。它使用 Kubernetes 容器組(一組共享一個(gè) IP 地址的緊密耦合的容器)作為 sidecar 代理設(shè)計(jì)的基礎(chǔ)。
Istio 的第 7 層代理在與主服務(wù)相同的網(wǎng)絡(luò)環(huán)境中作為另一個(gè)容器運(yùn)行。從這個(gè)位置,它可以攔截、檢查和操作所有通過容器組的網(wǎng)絡(luò)流量。但是,主容器不需要任何改動(dòng),甚至不需要知道這種情況正在發(fā)生。
開源服務(wù)網(wǎng)格實(shí)施面臨哪些挑戰(zhàn)?
以下是與 Istio、Linkerd 和 Consul 等開源平臺(tái)相關(guān)的一些常見服務(wù)網(wǎng)格挑戰(zhàn)。
復(fù)雜性
服務(wù)網(wǎng)格引入了其他基礎(chǔ)設(shè)施組件、配置要求和部署注意事項(xiàng)。它們的學(xué)習(xí)曲線很陡峭,這要求開發(fā)人員和操作人員獲得使用特定服務(wù)網(wǎng)格實(shí)施方面的專業(yè)知識(shí)。培訓(xùn)團(tuán)隊(duì)需要時(shí)間和資源。組織必須確保團(tuán)隊(duì)具備必要的知識(shí),以了解服務(wù)網(wǎng)格架構(gòu)的復(fù)雜性并對(duì)其進(jìn)行有效配置。
運(yùn)維管理費(fèi)用
服務(wù)網(wǎng)格會(huì)帶來部署、管理和監(jiān)控?cái)?shù)據(jù)面板代理和控制面板組件的額外開銷。例如,您必須執(zhí)行以下操作:
-
確保服務(wù)網(wǎng)格基礎(chǔ)設(shè)施的高可用性和可擴(kuò)展性
-
監(jiān)控代理的運(yùn)行狀況和性能
-
處理升級(jí)和兼容性問題
必須仔細(xì)設(shè)計(jì)和配置服務(wù)網(wǎng)格,以最大限度地減少對(duì)整個(gè)系統(tǒng)的性能影響。
集成挑戰(zhàn)
服務(wù)網(wǎng)格必須與現(xiàn)有基礎(chǔ)設(shè)施無縫集成,才能執(zhí)行其所需的功能。這包括容器編排平臺(tái)、網(wǎng)絡(luò)解決方案和技術(shù)堆棧中的其他工具。
在復(fù)雜多樣的環(huán)境中,要確保與其他組件的兼容性和順利集成可能具有挑戰(zhàn)性。要更改 API、配置格式和依賴關(guān)系,需要進(jìn)行持續(xù)的規(guī)劃和測(cè)試。如果您需要在堆棧中的任何位置升級(jí)到新版本,也是如此。
總結(jié)
以上是生活随笔為你收集整理的服务网格 Service Mesh的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆战晶翅战翼背包有什么用
- 下一篇: 率土之滨灵帝完美搭配是什么(《率土之滨》