微服務(wù)的Envoy、Istio和Kubernetes_第1頁(yè)
微服務(wù)的Envoy、Istio和Kubernetes_第2頁(yè)
微服務(wù)的Envoy、Istio和Kubernetes_第3頁(yè)
微服務(wù)的Envoy、Istio和Kubernetes_第4頁(yè)
微服務(wù)的Envoy、Istio和Kubernetes_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、微服務(wù)的 Envoy、Istio 和 Kubernetes我們使用微服務(wù)架構(gòu)構(gòu)建商業(yè)的IT系統(tǒng),使企業(yè)業(yè)務(wù)更加靈活的快 速轉(zhuǎn)變,更容易構(gòu)建新的功能,并在競(jìng)爭(zhēng)中保持領(lǐng)先優(yōu)勢(shì)。微服務(wù)并 不大家想的那么簡(jiǎn)單,還有很多困難的部分,微服務(wù)基于分布式系統(tǒng), 分布式系統(tǒng)就不簡(jiǎn)單。Kubernetes已經(jīng)成為主流,高興的是Kubernetes和OpenSHIFT 這樣的平臺(tái),已經(jīng)成為我們基礎(chǔ)設(shè)施的一部分;但當(dāng)開始建立網(wǎng)絡(luò)體 系結(jié)構(gòu)和應(yīng)用程序時(shí),必須要解決一些重要的分布式系統(tǒng)問題。當(dāng)我們向服務(wù)發(fā)送一個(gè)消息會(huì)發(fā)生什么呢?請(qǐng)求會(huì)被分割成比 較小的塊,通過一系列的節(jié)點(diǎn),網(wǎng)關(guān)和防火墻等在網(wǎng)絡(luò)上傳輸。帶著 這種分布式計(jì)算

2、的錯(cuò)誤,應(yīng)用程序在異步網(wǎng)絡(luò)進(jìn)行通信時(shí),缺少時(shí)間 同步,每個(gè)服務(wù)都有自己的時(shí)間,異步網(wǎng)絡(luò)基于路徑是否呆用,是否 擁塞,是否有硬件故障來路由分組,就不能保證消息在有限時(shí)間內(nèi)到 達(dá)目的地。所以網(wǎng)絡(luò)不可控。隨著我們轉(zhuǎn)向服務(wù)架構(gòu),將復(fù)雜性推向了服務(wù)之間的部分。這些 需要解決的應(yīng)用程序網(wǎng)絡(luò)復(fù)雜性包括:服務(wù)發(fā)現(xiàn)重試超時(shí)負(fù)載均衡限速線程bulkheading斷路 這些都是橫向關(guān)注的問題,無論實(shí)施情況如何,都適用于服服務(wù),服 務(wù)可用Java,Go,Python或Node.js編寫,應(yīng)該同語(yǔ)言沒關(guān)系;應(yīng)用 程序網(wǎng)絡(luò)的實(shí)現(xiàn)應(yīng)該對(duì)應(yīng)用程序是透明的。當(dāng)網(wǎng)絡(luò)和應(yīng)用問題確實(shí) 發(fā)生時(shí),應(yīng)該很容易確定問題的根源。如果我們能夠在

3、一個(gè)地方實(shí)現(xiàn)此功能一次,并讓任何語(yǔ)言/框架/來調(diào)用它,該怎么辦?服務(wù)網(wǎng)格服務(wù)網(wǎng)格是服務(wù)之間的分散式應(yīng)用程序網(wǎng)絡(luò)基礎(chǔ)架構(gòu), 提供彈性,安全性,可觀察性,路由控制以及最重要的是了解一切運(yùn) 行情況。業(yè)務(wù)程網(wǎng)狀,由一個(gè)數(shù)據(jù)平面和一個(gè)控制平面組成,代理 構(gòu)成數(shù)據(jù)平面,應(yīng)用程序之間的流量通過這些代理流動(dòng)??刂破矫?負(fù)責(zé)管理和配置代理以路由流量,以及在運(yùn)行時(shí)執(zhí)行策略。服務(wù)網(wǎng)格已經(jīng)成為幫助服務(wù)交流范例。它使我們能夠以最小的 開銷和高度分散的方式將應(yīng)用程序網(wǎng)絡(luò)功能集成到基礎(chǔ)架構(gòu)中,并能 夠控制,配置和監(jiān)視應(yīng)用程序級(jí)別的請(qǐng)求,解決一些問題。隨著服務(wù)體系結(jié)構(gòu)變得越來越異構(gòu),將服務(wù)實(shí)現(xiàn)限制到特定的 庫(kù)、框架甚至語(yǔ)言變

4、得更加困難(或不切實(shí)際)。隨著服務(wù)網(wǎng)格的發(fā) 展,我們看到了一些彈性模式,比如電路中斷,在基礎(chǔ)設(shè)施中實(shí)現(xiàn)為 語(yǔ)言/框架無關(guān)的解決方案。通過服務(wù)網(wǎng)格,我們明確地將應(yīng)用程序網(wǎng)絡(luò)功能與應(yīng)用程序代碼 和業(yè)務(wù)邏輯分開,并且我們將它向下推進(jìn)到基礎(chǔ)架構(gòu)中-類似于我 們對(duì)網(wǎng)絡(luò)堆棧,TCP等的處理方式。使用Envoy代理開啟代理,您可以將功能抽象為單個(gè)二進(jìn)制文 件,并將其應(yīng)用于所有服務(wù),而不管您使用何種語(yǔ)言,并讓所有流量 都通過中心點(diǎn)運(yùn)行。同樣,這構(gòu)成了服務(wù)網(wǎng)格中的數(shù)據(jù)平面。這反 過來:實(shí)現(xiàn)異構(gòu)體系結(jié)構(gòu)。移除此功能的應(yīng)用程序特定實(shí)現(xiàn)。一致地強(qiáng)制執(zhí)行這些屬性。正確地執(zhí)行這些屬性。提供選擇插入以及安全網(wǎng)。Envoy代

5、理是一個(gè)很好的例子。Envoy最初建于Lyft,是一個(gè)高 性能的代理服務(wù),為服務(wù)網(wǎng)格提供了基礎(chǔ)。它與應(yīng)用程序并行運(yùn)行, 通過以平臺(tái)無關(guān)的方式提供通用功能來抽象網(wǎng)絡(luò)。當(dāng)基礎(chǔ)架構(gòu)中的 所有服務(wù)流量都通過Envoy網(wǎng)格時(shí),通過一致的可觀測(cè)性,很容易地 查看問題區(qū)域,調(diào)整整體性能并在一個(gè)位置添加特殊。像Envoy這樣的服務(wù)代理可以幫助將彈性,服務(wù)發(fā)現(xiàn),路由,指 標(biāo)收集等的責(zé)任推到應(yīng)用程序下的一層。否則,我們冒著希望并祈 禱各種應(yīng)用程序?qū)⒄_實(shí)現(xiàn)這些關(guān)鍵功能或依靠特定于語(yǔ)言的庫(kù)來 實(shí)現(xiàn)這一目標(biāo)。代理體系結(jié)構(gòu)在使用服務(wù)體系結(jié)構(gòu)的大多數(shù)堆棧中提供了兩個(gè) 關(guān)鍵部分-強(qiáng)大的可觀察性和易于調(diào)試。有了這些工具,開發(fā)

6、人員 就可以專注于另一個(gè)重要方面:業(yè)務(wù)邏輯。再說istio服務(wù)通過將特定于語(yǔ)言的低級(jí)基礎(chǔ)設(shè)施問題從應(yīng)用程 序轉(zhuǎn)移到服務(wù)網(wǎng)格中,使Istio.io成為構(gòu)建微服務(wù)的下一個(gè)步驟,使 開發(fā)人員能夠?qū)W⒂跇I(yè)務(wù)邏輯。它用作配置一組Envoy代理的控制 平面。雖然Istio最初是為支持Kubernetes而編寫的,但它并不依賴 于Kubernetes,可以在任何平臺(tái)上運(yùn)行,包括跨多個(gè)平臺(tái)的混合架構(gòu)。該項(xiàng)目最初由Google,Lyft和IBM贊助,并使用Envoy代理的 擴(kuò)展版本,該代理被部署為同一 Kubernetes相關(guān)服務(wù)。作為實(shí)現(xiàn)服 務(wù)網(wǎng)格功能的一種方式,它已經(jīng)引起了開源社區(qū)的注意。這些功能 包括將應(yīng)

7、用網(wǎng)絡(luò)問題推送到基礎(chǔ)架構(gòu)中:重試,負(fù)載平衡,超時(shí),截 止日期,斷路,相互TLS,服務(wù)發(fā)現(xiàn),分布式跟蹤等。Istio最重要的方面之一是它能夠控制服務(wù)之間的流量路由。通 過對(duì)應(yīng)用級(jí)流量進(jìn)行細(xì)粒度控制,我們可以做一些有趣的彈性處理, 例如繞過故障路由,在必要時(shí)路由到不同的可用區(qū)域,更重要的是, 還可以控制部署流量,以便減少系統(tǒng)改變的風(fēng)險(xiǎn)。Istio支持多個(gè)高階群集語(yǔ)義,包括:服務(wù)可觀測(cè)性逐步部署和發(fā)布政策執(zhí)行集群可靠性混沌 測(cè)試快速配置強(qiáng)大的安全選項(xiàng)下一步工作還是摸索中。在一個(gè)服 務(wù)網(wǎng)格中,我們說我們的應(yīng)用程序應(yīng)該知道程序網(wǎng)絡(luò)的功能,但它們 不應(yīng)該在應(yīng)用程序代碼中實(shí)現(xiàn)。要使應(yīng)用程序更精確地了解應(yīng)用程 序網(wǎng)絡(luò)功能/服務(wù)網(wǎng)格層正在做什么,有一點(diǎn)值得一提。我們很可能 會(huì)在某些情況下看到庫(kù)/框架的構(gòu)建。例如,如果Istio服務(wù)網(wǎng)格引發(fā)斷路器,重試某些請(qǐng)求或因特定 原因失敗,那么應(yīng)用程序可以更好地了解這些方案或情況。我們需 要一種方法來捕獲這些信息并將其傳回服務(wù)。另一個(gè)例子是在服務(wù) 之間傳播跟蹤上下文(像OpenTracing這樣的分布式跟蹤),并透明 地完成這一過程。我們可能會(huì)看到的是這些精簡(jiǎn)的應(yīng)用程序/語(yǔ)言特 定的庫(kù),它們可以使應(yīng)用程序/服務(wù)更加智能化,并允許它們采取針 對(duì)錯(cuò)誤的追索。不管哪種方式,我們現(xiàn)在開始看到Envoy和Istio的實(shí)施部署已 經(jīng)通過Kubernetes和Re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論