中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于MOSN和Istio Service Mesh的服務治理是怎么樣的

發布時間:2021-10-21 14:18:58 來源:億速云 閱讀:155 作者:柒染 欄目:大數據

本篇文章為大家展示了基于MOSN和Istio Service Mesh的服務治理是怎么樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Service Mesh Webinar 是由 ServiceMesher 社區和 CNCF 聯合發起的線上直播活動,活動將不定期舉行,為大家帶來 Service Mesh 領域的知識和實踐分享。  
基于MOSN和Istio Service Mesh的服務治理是怎么樣的  
本文根據7月22日晚 Service Mesh Webinar#2 有米科技高級后端工程師、MOSN Committer 姚昌宇,線上主題分享《基于 MOSN 和 Istio Service Mesh 的服務治理實踐》整理,文末包含本次分享的視頻回顧鏈接以及 PPT 下載地址。

另一場推薦直播今晚9點開始,拉到即可底部收看


前言


   

大家好, 歡迎大家參加第二期 Service Mesh Webinar。本期的分享主題是《基于 MOSN 和 Istio  Service Mesh 的服務治理實踐》。我是今天的分享嘉賓姚昌宇,來自有米科技,目前在公司也是負責服務治理相關的工作,我本身也是一名云原生愛好者,在空余時間關注和參與 Service Mesh 社區,最近參與了 MOSN 新版本的開發,也是有了很多收獲。這次受社區邀請來給大家做這次分享,希望能給大家帶來收獲。

今天的分享將從以下幾個方面進行:

  • 第一部分會簡單介紹一下什么是 Service Mesh、Service Mesh 可以給我們帶來什么紅利以及我參與社區的過程和一些收獲;

  • 第二部分是這次分享的重點,我會從一個開發者的角度,說說如何基于 MOSN 和 Istio 去做服務治理,中間會包括 MOSN 源碼的分析和 Istio 功能的實操,也是比較多 Service Mesh 愛好者關注的如何落地的問題,比如流量的控制啊、服務監控等等的功能;

  • 第三部分會總結一下今天的分享以及 MOSN 一些近況和未來愿景的介紹;


Service Mesh 簡介以及社區共建實踐分享


   

Service Mesh 簡介

首先,什么是 Service Mesh 呢?  相信這是眾多愛好者剛接觸 Service Mesh 時的最初疑問。  Service Mesh 發展了這么多年,網上介紹和分析的文章也是很多,在這里我也再啰嗦一句。  如果用一句話來概括 Service Mesh,我會說,它是一種微服務的通信方案,是不斷演進而成的。
大家都知道,服務端架構經歷了一系列的演進,從最開始的單體服務到 SOA,再到微服務,服務間通信也從最開始的無需通信、到集成在代碼里、再到胖客戶端庫,再演進為 Service Mesh 的 network stub 模式,又或者稱為 sidecar 模式。
基于MOSN和Istio Service Mesh的服務治理是怎么樣的
Service Mesh 主要解決了之前的服務間通信方案的幾個問題:
  1. 語言綁定;
  2. 升級困難;
  3. 重復開發、標準不一;
語言綁定:在將服務治理邏輯抽離到 Sidecar 之前,這些治理邏輯需要集成在代碼里面。這就容易導致業務要么要綁死在同一種開發語言上,要么就要相同的邏輯不同語言維護多份。這樣既不靈活,維護起來成本也比較大。
基于MOSN和Istio Service Mesh的服務治理是怎么樣的
升級困難:企業里的基礎設施團隊,在升級服務治理邏輯之后,需要推動各個業務去重啟他們的服務,這樣一個周期通常會拖的非常長,重啟過程也會有各種問題,導致線上各個版本的治理功能不一致,落地起來相當費勁。
重復開發、標準不一:每個公司都會根據他們的實際情況落地微服務,有的會使用各個語言比較成熟的微服務框架,比如 Java 的 Spring Cloud、Dubbo;或者 Golang 的 go-micro 之類的框架。有的團隊或者會使用集成組件的方式,在各個語言的基礎上,加上一些成熟的服務治理組件,比如 Consul、Zookeeper、Hytrix、Vault 等。通常,通過對接這些組件來抽象出一個類似于微服務控制平面需要一定的開發成本,而且這些框架和組件標準也是不一致的,維護起來也會有不少成本。
基于MOSN和Istio Service Mesh的服務治理是怎么樣的

那么,Service Mesh 是如何解決這些問題的呢?

基于MOSN和Istio Service Mesh的服務治理是怎么樣的
首先,Service Mesh 架構將服務治理的邏輯抽離到一個單獨的 Sidecar 進程中,而 Sidecar 進程是與語言無關的。Sidecar 通過代理的形式劫持業務進程的流量,從而做到與具體的業務開發語言解耦。
其次,Sidecar 通過邊車模式和業務進程部署在一起,但是又與業務進程分離。Sidecar 進程可以隨時重啟更新,業務進程無需感知這個過程。這樣可以加速治理邏輯更新換代的過程,解決了傳統服務治理,升級困難的問題。
最后,Service Mesh 定義了控制面和數據面的概念。控制面提供 UI 給操作者去控制整個集群的流量,數據面,顧名思義就是數據流動的平面,負責接收這些配置信息,表現出對應的代理行為。控制面和數據面通過統一的協議進行通信,也就是 Service Mesh 里的 xDS 協議來交換配置信息。通過這樣的方式,理論上實現了 xDS 協議的控制面/數據面可以互相插拔替換,這就統一了標準,解決了第三點重復開發和標準不一的問題。

社區共建經歷分享
那了這么多,那我是如何從關注 Service Mesh 社區,到參與到 MOSN 開源共建的呢?覺得整個過程可以概括成3點:
  • 找到組織;
  • 知識積累;
  • 參與貢獻;
其實一開始我也是一個初學者,剛接觸到 Service Mesh 也會被一大堆不知名的名詞砸得暈頭轉向的,像是 xDS、控制面、metrics tracing 之類的名詞。所幸的是,ServiceMesher 的中文社區相當完善和活躍。我相信有了解過 Service mesh 的同學,肯定有加過2個微信 -- 一個就是宋凈超宋大的微信,一個就是 ServiceMesher 社區的微信群。也是得益于眾多的前輩將 ServiceMesher 中文社區維護的這么好,將各種內部實踐分享出去,以及外部一手資訊搬運甚至翻譯過來,乃至是這樣子的不定期的線上線下分享。這些都是非常好的資源。只要你想去學,就肯定有方法的。而對于新人的疑問,社區里的大神們也是非常樂意解答。
既然有了目標和資源,那就差去做了。接下來我通過不斷的去理解這些新領域的概念,理解它們的含義和背后的設計目的以及應用場景,再加上源碼分析和動手實踐,慢慢也就搭建起了整個關于 Service Mesh 的知識體系。
在摸清門道之后,其實參與開發也不是什么難事了。那為什么我會選擇 MOSN 呢?其實螞蟻集團有整個 SOFAStack,也就是金融級云原生架構的開源共建計劃,其中有服務注冊、流量跟蹤、rpc 協議、分布式事務等等的項目。我選擇 MOSN 主要是有兩點考慮:
  1. 第一是 MOSN 是使用 Golang 實現的,這一點和個人的技術棧比較吻合;
  2. 那第二點,我認為 Sidecar 在 Mesh 的位置是比較關鍵的。在大型的集群里,上百萬的 Sidecar 在集群里互相通信,為業務進程轉發處理數據包,其穩定性、性能要求和靈活性都是比較高的;
近期我也參與到了 MOSN 的 Istio Roadmap 開發中,主要目標是將 MOSN無 縫地接入到 Istio 里,成為在里面可以工作的 Sidecar。我主要做的幾個功能是pilot-agent 的適配以及一致性哈希負載均衡功能的開發。其實和做業務需求是類似的,首先要知道功能要達到什么目的,然后預演改動的地方,最后實踐:fork 一份 MOSN、開發代碼、完善單元測試、提交 PR。在做一致性哈希功能預演的時候,由于會用到 Google 的 maglev 算法,我還去看了一遍這個算法的細則。后期實踐的時候,發現了一個用到的第三方的庫,有一些的性能問題。由于這個功能工作在一個請求的--路由處理的過程,一定不能給請求增加太長的 RTT,我還把第三方庫做了一輪性能優化,最后達到可用的狀態,給第三方庫提了個 PR。
最大的收獲,我覺得是和大神們共事帶來的技術提升以及成就感。
總結一下,以上就是我對 Service Mesh 的理解以及我自己參與社區的一些過程。

基于 MOSN 和 Istio 的服務治理實操


   
接下來是本次分享的第二部分,如何結合 MOSN 和 Istio 去做服務治理。  
實操的第一步,首先是把環境跑起來。我的開發環境選擇的是 Linux。我主要考慮的點是,Linux 環境和生產環境更相似,而且可以直接使用宿主機跑 Docker 和 K8s,直接運行宿主機打包出來的鏡像。而 Mac 和 Windows 平臺下 Docker 和宿主機是隔了一層虛擬機的,而且 K8s 環境也比較難安裝。這樣只要打包好 MOSN 鏡像,配置好 MOSN 結合 Istio 的 yaml 配置,對 MOSN 的調試就只剩下編譯和執行兩個步驟了,可以省去在 Mac 和 Windows 平臺還要 push、pull 鏡像的耗時過程。
對于編譯 MOSN,我 hack 了一句 MOSN 的 makefile,主要是加了 me 這樣的一個任務,首先他會去 build-local, 也就是將 MOSN 的 go 源碼編譯成 MOSN 二進制文件,然后將二進制文件打包進 MOSN proxyv2 的鏡像里面。這個 proxyv2 和 Isito的 proxyv2 鏡像是類似的,只不過里面的 Sidecar 換成了 MOSN。
第三步,編譯一遍 pilot-agent。由于 MOSN 在 Istio 里面是由 pilot-agent 啟動的,在調試 MOSN 結合 Istio 的功能時,有時也需要在 pilot-agent 里打日志,比如看一下 pilotagent 有沒有正常啟動 MOSN。所以我也將 Isito 的源碼克隆了下來,并且在需要的時候重新編譯 pilot-agent。
最后是第四步,重啟對應的 pod。比如這里就將 ingressgateway 刪掉重新啟動。由于需要調試 MOSN 的功能,在安裝好 Istio 后我會將 ingressgateway 的鏡像也改為我調試 MOSN 的鏡像。
MOSN 目前支持 Istio1.5 的版本,所以我這次演示的本地環境也是 1.5 版本的。我們還需要修改一下 Isito Sidecar 注入的 configmap,這樣我們在執行 Istioctl kube-inject 給業務注入 Sidecar 的時候,也能用上 MOSN 作為 Sidecar 代理。具體是在這里,加上 binaryPath 的參數,以及將這里的 tag 改成我編譯出來的鏡像tag,1.5.2-mosn-dist。
那么經過上面的步驟,一個 MOSN 結合 Istio 的環境就跑起來了。
這次代碼實操的相關服務和鏡像以及對應的 yaml 配置,我會放到 webinar2 democode 這個 git 倉庫里面,需要的小伙伴也可以自行去克隆下來看看。
Demo:  https://github.com/trainyao/webinar2_democode
那接下來,我會展示一下,如何使用 MOSN 結合 Istio 來實現以下功能:
  • 流量管理;
  1. gRPC 路由功能;
  2. 限流;
  3. 故障注入;
  • 可觀察性;
  1. 請求跟蹤;
  2. 指標收集;
具體的實際 Demo 演示可以看視頻詳解。以上就是 MOSN 結合 Istio 服務治理的一些實踐,希望對你有一些啟發和幫助。

總結


   
本次 Webinar 也差不多接近尾聲了。  最后來總結一下這次分享的內容,首先簡單介紹 Service Mesh de基本概念以及誕生是為了解決什么具體問題:  微服務治理的語言綁定、更新困難、以及標準不統一的問題。  后面還介紹了我從關注到參與社區開發的過程和一些思考。  
然后到了現場擼碼的部分,展示了如何將 MOSN 結合 Istio 運行起來并且搭建一個本地的開發調試環境。之后還展示了然后使用 MOSN 在 Istio 里實現服務治理的功能,包括流量管理和服務可視化的功能。
希望上面的分享內容對你有所幫助!
那么在最后還想分享一下 MOSN 的近況,也就是新版本的功能以及未來計劃。
MOSN 最近發布了0.14.0版本,具體信息大家也可以在 MOSN 的 github release note 看到。
基于MOSN和Istio Service Mesh的服務治理是怎么樣的
https://github.com/mosn/mosn/releases/tag/v0.14.0g
這個版本主要是做了比較多支持 Istio 的工作,比如支持 Istio 1.5 版本,升級了 go-control-plane,sourcelabel 支持,一致性哈希負載均衡等等,也優化了性能和修復了已知的 bug。同時,我們也在推動 Istio 官方去促進通用數據面標準的制定,在不久的將來,Isito 或者是 Service Mesh 用戶也不再會受限于 Envoy,在數據面上會有更多的選擇。
接下來,MOSN 也會繼續對齊 Istio 的功能,成為可以在 Service Mesh 里工作的安全、穩定、功能強大的云原聲數據面代理。也如前面的分享內容所見,MOSN 還有很多可以完善的地方,也歡迎各位有想法有興趣的小伙伴加入,給 MOSN 提 issue 和 PR 吧。

上述內容就是基于MOSN和Istio Service Mesh的服務治理是怎么樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寻乌县| 泰来县| 平原县| 中卫市| 绥中县| 健康| 大方县| 南城县| 昂仁县| 会昌县| 临夏市| 金坛市| 炎陵县| 桐庐县| 利津县| 泽普县| 寿光市| 洮南市| 阆中市| 皮山县| 灌云县| 贵溪市| 泸定县| 苏尼特右旗| 溧阳市| 芜湖市| 永宁县| 工布江达县| 滕州市| 大港区| 都匀市| 文安县| 五指山市| 迁西县| 龙里县| 贞丰县| 普安县| 西峡县| 湘西| 枞阳县| 长阳|