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

Istio+K8s,微服務(wù)的雙劍合璧!

原創(chuàng)
開(kāi)發(fā) 前端 開(kāi)發(fā)工具
很多企業(yè)都會(huì)面臨從單體應(yīng)用向微服務(wù)架構(gòu)的轉(zhuǎn)型,也會(huì)衍生出更多的分布式場(chǎng)景需求。隨著規(guī)模和復(fù)雜度的不斷增長(zhǎng),如何才能更好的理解、高效的管理服務(wù)網(wǎng)格呢?

【51CTO.com原創(chuàng)稿件】很多企業(yè)都會(huì)面臨從單體應(yīng)用向微服務(wù)架構(gòu)的轉(zhuǎn)型,也會(huì)衍生出更多的分布式場(chǎng)景需求。隨著規(guī)模和復(fù)雜度的不斷增長(zhǎng),如何才能更好的理解、高效的管理服務(wù)網(wǎng)格呢?

[[336878]]
圖片來(lái)自 Pexels

 

本節(jié)篇幅較長(zhǎng),我們主要圍繞以下幾點(diǎn)來(lái)展開(kāi):

  • 什么是服務(wù)網(wǎng)格?
  • 初識(shí) Istio
  • 核心特性
  • 流程架構(gòu)
  • 核心模塊
  • Envoy 進(jìn)階
  • 方案暢想

對(duì)許多公司來(lái)說(shuō),Docker 和 Kubernetes 這樣的工具已經(jīng)解決了部署問(wèn)題,或者說(shuō)幾乎解決了。

但他們還沒(méi)有解決運(yùn)行時(shí)的問(wèn)題,這就是服務(wù)網(wǎng)格(Service Mesh)的由來(lái)。

什么是服務(wù)網(wǎng)格?

服務(wù)網(wǎng)格(Service Mesh)用來(lái)描述組成這些應(yīng)用程序的微服務(wù)網(wǎng)絡(luò)以及它們之間的交互。

它是一個(gè)用于保證服務(wù)間安全、快速、可靠通信的網(wǎng)絡(luò)代理組件,是隨著微服務(wù)和云原生應(yīng)用興起而誕生的基礎(chǔ)設(shè)施層。

它通常以輕量級(jí)網(wǎng)絡(luò)代理的方式同應(yīng)用部署在一起。比如 Sidecar 方式,如下圖所示:

 

我們對(duì)上圖做個(gè)解釋?zhuān)篠ervice Mesh 設(shè)計(jì)一般劃分為兩個(gè)模塊,控制面和數(shù)據(jù)面。對(duì)于應(yīng)用來(lái)說(shuō),所有流量都會(huì)經(jīng)過(guò)數(shù)據(jù)面進(jìn)行轉(zhuǎn)發(fā)。

順利轉(zhuǎn)發(fā)的前提:數(shù)據(jù)面需要知道轉(zhuǎn)發(fā)的目標(biāo)地址,目標(biāo)地址本身是由一些業(yè)務(wù)邏輯來(lái)決定的(例如服務(wù)發(fā)現(xiàn))。

所以自然而然地,我們可以推斷控制面需要負(fù)責(zé)管理數(shù)據(jù)面能正常運(yùn)行所需要的一些配置:

  • 需要知道某次請(qǐng)求轉(zhuǎn)發(fā)去哪里:服務(wù)發(fā)現(xiàn)配置。
  • 外部流量進(jìn)入需要判斷是否已經(jīng)達(dá)到服務(wù)流量上限:限流配置。
  • 依賴(lài)服務(wù)返回錯(cuò)誤時(shí),需要能夠執(zhí)行相應(yīng)的熔斷邏輯:熔斷配置。

Serivce Mesh 可以看作是一個(gè)位于 TCP/IP 之上的網(wǎng)絡(luò)模型,抽象了服務(wù)間可靠通信的機(jī)制。

但與 TCP 不同,它是面向應(yīng)用的,為應(yīng)用提供了統(tǒng)一的可視化和控制。

Service Mesh 具有如下優(yōu)點(diǎn):

  • 屏蔽分布式系統(tǒng)通信的復(fù)雜性(負(fù)載均衡、服務(wù)發(fā)現(xiàn)、認(rèn)證授權(quán)、監(jiān)控追蹤、流量控制等等),服務(wù)只用關(guān)注業(yè)務(wù)邏輯。
  • 真正的語(yǔ)言無(wú)關(guān),服務(wù)可以用任何語(yǔ)言編寫(xiě),只需和 Service Mesh 通信即可。
  • 對(duì)應(yīng)用透明,Service Mesh 組件可以單獨(dú)升級(jí)。

Service Mesh 目前也面臨一些挑戰(zhàn):

  • Service Mesh 組件以代理模式計(jì)算并轉(zhuǎn)發(fā)請(qǐng)求,一定程度上會(huì)降低通信系統(tǒng)性能,并增加系統(tǒng)資源開(kāi)銷(xiāo)。
  • Service Mesh 組件接管了網(wǎng)絡(luò)流量,因此服務(wù)的整體穩(wěn)定性依賴(lài)于 Service Mesh,同時(shí)額外引入的大量 Service Mesh 服務(wù)實(shí)例的運(yùn)維和管理也是一個(gè)挑戰(zhàn)。

隨著服務(wù)網(wǎng)格的規(guī)模和復(fù)雜性不斷的增長(zhǎng),它將會(huì)變得越來(lái)越難以理解和管理。

Service Mesh 的需求包括服務(wù)發(fā)現(xiàn)、負(fù)載均衡、故障恢復(fù)、度量和監(jiān)控等。

Service Mesh 通常還有更復(fù)雜的運(yùn)維需求,比如 A/B 測(cè)試、金絲雀發(fā)布、速率限制、訪(fǎng)問(wèn)控制和端到端認(rèn)證。

Service Mesh 的出現(xiàn),彌補(bǔ)了 Kubernetes 在微服務(wù)的連接、管理和監(jiān)控方面的短板,為 Kubernetes 提供更好的應(yīng)用和服務(wù)管理。

[[336879]]

 

因此,Service Mesh 的代表 Istio 一經(jīng)推出,就被認(rèn)為是可以和 Kubernetes 形成雙劍合璧效果的微服務(wù)管理的利器,受到了業(yè)界的推崇。

Istio 提供了對(duì)整個(gè)服務(wù)網(wǎng)格的行為洞察和操作控制的能力,以及一個(gè)完整的滿(mǎn)足微服務(wù)應(yīng)用各種需求的解決方案。

Istio 主要采用一種一致的方式來(lái)保護(hù)、連接和監(jiān)控微服務(wù),降低了管理微服務(wù)部署的復(fù)雜性。

初識(shí) Istio

Istio 發(fā)音「意絲帝歐」,重音在意上。官方給出的 Istio 的總結(jié),簡(jiǎn)單明了:

  1. Istio lets you connect, secure, control, and observe services. 

連接、安全、控制和觀測(cè)服務(wù)。

 

簡(jiǎn)單來(lái)說(shuō),Istio 針對(duì)現(xiàn)有的服務(wù)網(wǎng)格,提供一種簡(jiǎn)單的方式將連接、安全、控制和觀測(cè)的模塊,與應(yīng)用程序或服務(wù)隔離開(kāi)來(lái),從而開(kāi)發(fā)人員可以將更多的精力放在核心的業(yè)務(wù)邏輯上。

以下是 Istio 的核心功能:

  • HTTP、gRPC、WebSocket 和 TCP 流量的自動(dòng)負(fù)載均衡。
  • 通過(guò)豐富的路由規(guī)則、重試、故障轉(zhuǎn)移和故障注入,可以對(duì)流量行為進(jìn)行細(xì)粒度控制。
  • 可插入的策略層和配置 API,支持訪(fǎng)問(wèn)控制、速率限制和配額。
  • 對(duì)出入集群入口和出口中所有流量的自動(dòng)度量指標(biāo)、日志記錄和追蹤。
  • 通過(guò)強(qiáng)大的基于身份的驗(yàn)證和授權(quán),在集群中實(shí)現(xiàn)安全的服務(wù)間通信。

從較高的層面來(lái)說(shuō),Istio 有助于降低這些部署的復(fù)雜性,并減輕開(kāi)發(fā)團(tuán)隊(duì)的壓力。

它是一個(gè)完全開(kāi)源的服務(wù)網(wǎng)格,作為透明的一層接入到現(xiàn)有的分布式應(yīng)用程序里。它也是一個(gè)平臺(tái),擁有可以集成任何日志、遙測(cè)和策略系統(tǒng)的 API 接口。

Istio 多樣化的特性使我們能夠成功且高效地運(yùn)行分布式微服務(wù)架構(gòu),并提供保護(hù)、連接和監(jiān)控微服務(wù)的統(tǒng)一方法。

核心特性

Istio 以統(tǒng)一的方式提供了許多跨服務(wù)網(wǎng)格的關(guān)鍵功能:

 

①流量管理

Istio 簡(jiǎn)單的規(guī)則配置和流量路由允許我們控制服務(wù)之間的流量和 API 調(diào)用過(guò)程。

Istio 簡(jiǎn)化了服務(wù)級(jí)屬性(如熔斷器、超時(shí)和重試)的配置,并且讓它輕而易舉的執(zhí)行重要的任務(wù)(如 A/B 測(cè)試、金絲雀發(fā)布和按流量百分比劃分的分階段發(fā)布)。

有了更好的對(duì)流量的可視性和開(kāi)箱即用的故障恢復(fù)特性,我們就可以在問(wèn)題產(chǎn)生之前捕獲它們,無(wú)論面對(duì)什么情況都可以使調(diào)用更可靠,網(wǎng)絡(luò)更健壯。

②安全

Istio 的安全特性解放了開(kāi)發(fā)人員,使其只需要專(zhuān)注于應(yīng)用程序級(jí)別的安全。

Istio 提供了底層的安全通信通道,并為大規(guī)模的服務(wù)通信管理認(rèn)證、授權(quán)和加密。

有了 Istio,服務(wù)通信在默認(rèn)情況下就是受保護(hù)的,可以在跨不同協(xié)議和運(yùn)行時(shí)的情況下實(shí)施一致的策略,而所有這些都只需要很少甚至不需要修改應(yīng)用程序。

Istio 是獨(dú)立于平臺(tái)的,可以與 Kubernetes(或基礎(chǔ)設(shè)施)的網(wǎng)絡(luò)策略一起使用。

但它更強(qiáng)大,能夠在網(wǎng)絡(luò)和應(yīng)用層面保護(hù) Pod 到 Pod 或者服務(wù)到服務(wù)之間的通信。

③可觀察性

Istio 健壯的追蹤、監(jiān)控和日志特性讓我們能夠深入的了解服務(wù)網(wǎng)格部署。通過(guò) Istio 的監(jiān)控能力,可以真正的了解到服務(wù)的性能是如何影響上游和下游的。

而它的定制 Dashboard 提供了對(duì)所有服務(wù)性能的可視化能力,并讓我們看到它如何影響其他進(jìn)程。

Istio 的 Mixer 組件負(fù)責(zé)策略控制和遙測(cè)數(shù)據(jù)收集。它提供了后端抽象和中介,將一部分 Istio與后端的基礎(chǔ)設(shè)施實(shí)現(xiàn)細(xì)節(jié)隔離開(kāi)來(lái),并為運(yùn)維人員提供了對(duì)網(wǎng)格與后端基礎(chǔ)實(shí)施之間交互的細(xì)粒度控制。

所有這些特性都使我們能夠更有效地設(shè)置、監(jiān)控和加強(qiáng)服務(wù)的 SLO。當(dāng)然,底線(xiàn)是我們可以快速有效地檢測(cè)到并修復(fù)出現(xiàn)的問(wèn)題。

④平臺(tái)支持

Istio 獨(dú)立于平臺(tái),被設(shè)計(jì)為可以在各種環(huán)境中運(yùn)行,包括跨云、內(nèi)部環(huán)境、Kubernetes、Mesos 等等。

我們可以在 Kubernetes 或是裝有 Consul 的 Nomad 環(huán)境上部署 Istio。

Istio 目前支持:

  • Kubernetes 上的服務(wù)部署。
  • 基于 Consul 的服務(wù)注冊(cè)。
  • 服務(wù)運(yùn)行在獨(dú)立的虛擬機(jī)上。

⑤整合和定制

Istio 的策略實(shí)施組件可以擴(kuò)展和定制,與現(xiàn)有的 ACL、日志、監(jiān)控、配額、審查等解決方案集成。

流程架構(gòu)

Istio 服務(wù)網(wǎng)格邏輯上分為數(shù)據(jù)平面(Control Plane)和控制平面(Data Plane),架構(gòu)圖如下所示:

數(shù)據(jù)平面(Data Plane)

 

由一組以 Sidecar 方式部署的智能代理 Envoy 組成。Envoy 被部署為 Sidecar,和對(duì)應(yīng)服務(wù)在同一個(gè) Kubernetes pod 中。

這允許 Istio 將大量關(guān)于流量行為的信號(hào)作為屬性提取出來(lái),而這些屬性又可以在 Mixer 中用于執(zhí)行策略決策,并發(fā)送給監(jiān)控系統(tǒng),以提供整個(gè)網(wǎng)格行為的信息。

這些代理可以調(diào)節(jié)和控制微服務(wù)及 Mixer 之間所有的網(wǎng)絡(luò)通信。

控制平面(Control Plane)

負(fù)責(zé)管理和配置代理來(lái)路由流量,此外配置 Mixer 以實(shí)施策略和收集遙測(cè)數(shù)據(jù)。

主要包含如下幾部分內(nèi)容:

  • Mixer:策略和請(qǐng)求追蹤。
  • Pilot:提供服務(wù)發(fā)現(xiàn)功能,為智能路由(例如 A/B 測(cè)試、金絲雀部署等)和彈性(超時(shí)、重試、熔斷器等)提供流量管理功能。
  • Citadel:分發(fā) TLS 證書(shū)到智能代理。
  • Sidecar injector:可以允許向應(yīng)用中無(wú)侵入的添加功能,避免為了滿(mǎn)足第三方需求而添加額外的代碼。

核心模塊

上文提到了很多技術(shù)名詞,我們需要重點(diǎn)解釋一下:

①什么是 Sidecar 模式?

Sidecar 是一種將應(yīng)用功能從應(yīng)用本身剝離出來(lái)作為單獨(dú)進(jìn)程的設(shè)計(jì)模式,可以允許向應(yīng)用中無(wú)侵入的添加功能,避免為了滿(mǎn)足第三方需求而添加額外的代碼。

在軟件架構(gòu)中,Sidecar 附加到主應(yīng)用,或者叫父應(yīng)用上,以擴(kuò)展、增強(qiáng)功能特性,同時(shí) Sidecar 與主應(yīng)用是松耦合的。

Sidecar 是一種單節(jié)點(diǎn)多容器的應(yīng)用設(shè)計(jì)形式,主張以額外的容器來(lái)擴(kuò)展或增強(qiáng)主容器。

②Envoy 的作用是什么?

Envoy 是一個(gè)獨(dú)立的進(jìn)程,旨在與每個(gè)應(yīng)用程序服務(wù)器一起運(yùn)行。

所有 Envoy組成了一個(gè)透明的通信網(wǎng)格,其中每個(gè)應(yīng)用程序發(fā)送和接收來(lái)自本地主機(jī)的消息,并且不需要知道網(wǎng)絡(luò)拓?fù)洹?/p>

與傳統(tǒng)的服務(wù)通信服務(wù)的庫(kù)方法相比,進(jìn)程外架構(gòu)有兩個(gè)實(shí)質(zhì)性好處:

  • Envoy 支持任何編程語(yǔ)言寫(xiě)的服務(wù)。只用部署一個(gè) Envoy 就可以在 Java、C++、Go、PHP、Python 等服務(wù)間形成網(wǎng)格。
  • 任何使用過(guò)大型面向服務(wù)的體系結(jié)構(gòu)的人都知道,部署庫(kù)升級(jí)可能會(huì)非常痛苦。Envoy 可以在整個(gè)基礎(chǔ)設(shè)施中迅速部署和升級(jí)。

Envoy 以透明的方式彌合了面向服務(wù)的體系結(jié)構(gòu)使用多個(gè)應(yīng)用程序框架和語(yǔ)言的情況。

③Mixer

Mixer 是一個(gè)獨(dú)立于平臺(tái)的組件,負(fù)責(zé)在服務(wù)網(wǎng)格上執(zhí)行訪(fǎng)問(wèn)控制和使用策略,并從 Envoy 代理和其他服務(wù)收集遙測(cè)數(shù)據(jù),代理提取請(qǐng)求級(jí)屬性,發(fā)送到 Mixer 進(jìn)行評(píng)估。有關(guān)屬性提取和策略評(píng)估的更多信息,請(qǐng)參見(jiàn) Mixer 配置。

Mixer 中包括一個(gè)靈活的插件模型,使其能夠接入到各種主機(jī)環(huán)境和基礎(chǔ)設(shè)施后端,從這些細(xì)節(jié)中抽象出 Envoy 代理和 Istio 管理的服務(wù)。

④Pilot

控制面中負(fù)責(zé)流量管理的組件為 Pilot,它為 Envoy Sidecar 提供服務(wù)發(fā)現(xiàn)功能,為智能路由(例如 A/B 測(cè)試、金絲雀部署等)和彈性(超時(shí)、重試、熔斷器等)提供流量管理功能。

它將控制流量行為的高級(jí)路由規(guī)則轉(zhuǎn)換為特定于 Envoy 的配置,并在運(yùn)行時(shí)將它們傳播到 Sidecar。

⑤Istio 如何保證服務(wù)通信的安全?

Istio 以可擴(kuò)縮的方式管理微服務(wù)間通信的身份驗(yàn)證、授權(quán)和加密。Istio 提供基礎(chǔ)的安全通信渠道,使開(kāi)發(fā)者可以專(zhuān)注于應(yīng)用層級(jí)的安全。

Istio 可以增強(qiáng)微服務(wù)及其通信(包括服務(wù)到服務(wù)和最終用戶(hù)到服務(wù)的通信)的安全性,且不需要更改服務(wù)代碼。

它為每個(gè)服務(wù)提供基于角色的強(qiáng)大身份機(jī)制,以實(shí)現(xiàn)跨集群、跨云端的互操作性。

如果我們結(jié)合使用 Istio 與 Kubernetes(或基礎(chǔ)架構(gòu))網(wǎng)絡(luò)政策,Pod 到 Pod 或服務(wù)到服務(wù)的通信在網(wǎng)絡(luò)層和應(yīng)用層都將安全無(wú)虞。

Istio 以 Google 的深度防御策略為基礎(chǔ)構(gòu)建而成,以確保微服務(wù)通信的安全。

當(dāng)我們?cè)?Google Cloud 中使用 Istio 時(shí),Google 的基礎(chǔ)架構(gòu)可讓我們構(gòu)建真正安全的應(yīng)用部署。

Istio 可確保服務(wù)通信在默認(rèn)情況下是安全的,并且我們可以跨不同協(xié)議和運(yùn)行時(shí)一致地實(shí)施安全政策,而只需對(duì)應(yīng)用稍作調(diào)整,甚至無(wú)需調(diào)整。

Envoy 進(jìn)階

Istio 使用 Envoy 代理的擴(kuò)展版本,Envoy 是以 C++ 開(kāi)發(fā)的高性能代理,用于調(diào)解服務(wù)網(wǎng)格中所有服務(wù)的所有入站和出站流量。

Envoy 的許多內(nèi)置功能被 Istio 發(fā)揚(yáng)光大,例如:

  • 動(dòng)態(tài)服務(wù)發(fā)現(xiàn)
  • 負(fù)載均衡
  • TLS 終止
  • HTTP2 & gRPC 代理
  • 熔斷器
  • 健康檢查、基于百分比流量拆分的灰度發(fā)布
  • 故障注入
  • 豐富的度量指標(biāo)

Envoy 分為主線(xiàn)程、工作線(xiàn)程、文件刷新線(xiàn)程,其中主線(xiàn)程就是負(fù)責(zé)工作線(xiàn)程和文件刷新線(xiàn)程的管理和調(diào)度。

而工作線(xiàn)程主要負(fù)責(zé)監(jiān)聽(tīng)、過(guò)濾和轉(zhuǎn)發(fā),工作線(xiàn)程里面會(huì)包含一個(gè)監(jiān)聽(tīng)器,如果收到一個(gè)請(qǐng)求之后會(huì)通過(guò)過(guò)濾鏈來(lái)進(jìn)行數(shù)據(jù)過(guò)濾。

前面兩個(gè)都是非阻塞的,唯一一個(gè)阻塞的是這種 IO 操作的,會(huì)不斷地把內(nèi)存里面一些緩存進(jìn)行落盤(pán)。

總結(jié)來(lái)說(shuō),我們可以圍繞如下五方面:

①服務(wù)的動(dòng)態(tài)注冊(cè)和發(fā)現(xiàn)

Envoy 可以選擇使用一組分層的動(dòng)態(tài)配置 API 來(lái)進(jìn)行集中管理。

這些層為 Envoy 提供了動(dòng)態(tài)更新,后端群集的主機(jī)、后端群集本身、HTTP 路由、偵聽(tīng)套接字和通信加密。

為了實(shí)現(xiàn)更簡(jiǎn)單的部署,后端主機(jī)發(fā)現(xiàn)可以通過(guò) DNS 解析 (甚至完全跳過(guò)) 完成,層也可以替換為靜態(tài)配置文件。

②健康檢查

構(gòu)建 Envoy 網(wǎng)格的建議方法是將服務(wù)發(fā)現(xiàn)視為最終一致的過(guò)程。Envoy 包括一個(gè)運(yùn)行狀況檢查子系統(tǒng),該子系統(tǒng)可以選擇對(duì)上游服務(wù)集群執(zhí)行主動(dòng)運(yùn)行狀況檢查。

然后,Envoy 使用服務(wù)發(fā)現(xiàn)和運(yùn)行狀況檢查信息的聯(lián)合來(lái)確定健康的負(fù)載均衡服務(wù)器。Envoy 還支持通過(guò)異常檢測(cè)子系統(tǒng)進(jìn)行被動(dòng)運(yùn)行狀況檢查。

③高級(jí)負(fù)載均衡

分布式系統(tǒng)中不同組件之間的負(fù)載平衡是一個(gè)復(fù)雜的問(wèn)題。

由于 Envoy 是一個(gè)獨(dú)立的代理而不是庫(kù),因此它能夠在一個(gè)位置實(shí)現(xiàn)高級(jí)負(fù)載平衡技術(shù),并使任何應(yīng)用程序都可以訪(fǎng)問(wèn)。

目前 Envoy 包括支持自動(dòng)重試、斷路、通過(guò)外部速率限制服務(wù)限制全局速率、請(qǐng)求隱藏和異常值檢測(cè)。未來(lái)計(jì)劃為 Request Racing 提供支持。

④前端/邊緣系統(tǒng)代理支持

雖然 Envoy 主要是為服務(wù)通信系統(tǒng)而設(shè)計(jì)的,但對(duì)前端/邊緣系統(tǒng)也是很有用的,如:可觀測(cè)性、管理、相同的服務(wù)發(fā)現(xiàn)和負(fù)載平衡算法等。

Envoy 包含足夠的功能,使其可用作大多數(shù) Web 應(yīng)用服務(wù)用例的邊緣代理。這包括作為 TLS 的終點(diǎn)、HTTP/1.1 和 HTTP/2 支持,以及 HTTP L7 路由。

⑤最好的觀察統(tǒng)計(jì)能力

Envoy 的首要目標(biāo)是使網(wǎng)絡(luò)透明。但是在網(wǎng)絡(luò)級(jí)別和應(yīng)用程序級(jí)都無(wú)法避免的容易出現(xiàn)問(wèn)題。

Envoy 包含了對(duì)所有子系統(tǒng)的強(qiáng)有力的統(tǒng)計(jì)支持。statsd 和其他兼容的數(shù)據(jù)提供程序是當(dāng)前支持的統(tǒng)計(jì)接收器,插入不同的統(tǒng)計(jì)接收器也并不困難。

Envoy 可以通過(guò)管理端口查看統(tǒng)計(jì)信息,還支持通過(guò)第三方供應(yīng)商進(jìn)行分布式追蹤。

更多詳情請(qǐng)參考:什么是 Envoy?

  1. https://www.jianshu.com/p/a6f7f46683e1?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 

方案暢想

應(yīng)用上面的原理,我們可以有很多具體的方案應(yīng)用于日常開(kāi)發(fā)。

方案一:應(yīng)用 Istio 改造微服務(wù)

模仿在線(xiàn)書(shū)店的一個(gè)分類(lèi),顯示一本書(shū)的信息。頁(yè)面上會(huì)顯示一本書(shū)的描述,書(shū)籍的細(xì)節(jié)(ISBN、頁(yè)數(shù)等),以及關(guān)于這本書(shū)的一些評(píng)論。

應(yīng)用的端到端架構(gòu):Bookinfo 應(yīng)用中的幾個(gè)微服務(wù)是由不同的語(yǔ)言編寫(xiě)的。

這些服務(wù)對(duì) Istio 并無(wú)依賴(lài),但是構(gòu)成了一個(gè)有代表性的服務(wù)網(wǎng)格的例子:它由多個(gè)服務(wù)、多個(gè)語(yǔ)言構(gòu)成,并且 reviews 服務(wù)具有多個(gè)版本。

用 Istio 改造后架構(gòu)如下:要在 Istio 中運(yùn)行這一應(yīng)用,無(wú)需對(duì)應(yīng)用自身做出任何改變。我們只需要把 Envoy Sidecar 注入到每個(gè)服務(wù)之中。

 

最終的部署結(jié)果將如下圖所示:

所有的微服務(wù)都和 Envoy Sidecar 集成在一起,被集成服務(wù)所有的出入流量都被 Sidecar 所劫持。

 

這樣就為外部控制準(zhǔn)備了所需的 Hook,然后就可以利用 Istio 控制平面為應(yīng)用提供服務(wù)路由、遙測(cè)數(shù)據(jù)收集以及策略實(shí)施等功能。

更多細(xì)節(jié),請(qǐng)移步官網(wǎng)示例:

  1. https://istio.io/latest/zh/docs/examples/bookinfo/ 

方案二:用 Istio 改造 CI/CD 流程

 

對(duì)上述流程圖簡(jiǎn)單解釋一下:

  • 通過(guò) Docker 對(duì)代碼進(jìn)行容器化處理。
  • 通過(guò) Gitlab 托管代碼。
  • Jenkins 監(jiān)聽(tīng) Gitlab 下的代碼,觸發(fā)自動(dòng)構(gòu)建,并執(zhí)行 Kustomize 文件。
  • Kustomize 通過(guò)配置文件,設(shè)置了 Istio 的配置(染色識(shí)別、流量分發(fā)),并啟動(dòng) K8s 部署應(yīng)用。
  • 最終我們通過(guò) Rancher 來(lái)對(duì)多容器進(jìn)行界面化管理。
  • 打開(kāi)瀏覽器進(jìn)行訪(fǎng)問(wèn)。

看到這里,相信你也了解了,我們實(shí)現(xiàn)了一個(gè)前端多容器化部署的案例。

它有什么意義呢?

  • 首先,當(dāng)然是環(huán)境隔離了,研發(fā)每人一個(gè)容器開(kāi)發(fā),互不干擾。
  • 其次,我們可以做很多小流量、灰度發(fā)布等事情。
  • 自動(dòng)化部署,一站式的流程體驗(yàn)。

如果你對(duì)容器化還不太了解,請(qǐng)先看看前面兩篇文章:

  • Docker 邊學(xué)邊用
  • 一文了解 Kubernetes

Istio 還是有很多可圈可點(diǎn)的地方,相信看到這里你也有了更全面的認(rèn)識(shí)。如果你想深入了解,不妨仔細(xì)研究官方示例,并且在實(shí)際項(xiàng)目中不斷打磨。

參考資料:

  • Istio 官網(wǎng)
  • 什么是 Envoy
  • 微服務(wù)之 Service Mesh
  • 什么是 Service Mesh
  • Istio 如何連接、管理和保護(hù)微服務(wù) 2.0?
  • 在 MOSN 中玩轉(zhuǎn) dubbo-go

作者:jartto

編輯:陶家龍

征稿:有投稿、尋求報(bào)道意向技術(shù)人請(qǐng)聯(lián)絡(luò) editor@51cto.com

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2018-11-15 14:19:19

區(qū)塊鏈人工智能AI

2016-12-21 16:12:12

2023-11-01 08:08:22

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

2009-10-10 02:21:48

Windows7Windows Ser微軟

2012-07-06 17:45:44

2022-07-17 11:45:39

微服務(wù)架構(gòu)

2018-07-02 01:17:06

大數(shù)據(jù)分析云技術(shù)數(shù)據(jù)

2012-02-27 15:09:54

2021-11-22 09:39:21

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)人工智能

2022-01-13 09:54:58

微服務(wù) Istio 通信

2018-08-29 09:58:14

2023-11-15 13:44:00

k8s-域名日志

2018-07-10 15:07:07

技術(shù)

2014-07-31 18:57:29

開(kāi)心網(wǎng)

2019-09-25 07:17:42

KubernetesIstio測(cè)試

2009-11-02 10:28:37

2021-09-08 08:59:43

阿里云鏡像微服務(wù)

2019-04-22 15:46:56

新華三

2023-08-03 08:36:30

Service服務(wù)架構(gòu)

2022-02-18 10:47:47

微服務(wù)k8s項(xiàng)目
點(diǎn)贊
收藏

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