天天看點

Istio究竟是幹嘛的?

ServiceMesh(2)

上一篇介紹了

《ServiceMesh究竟解決什麼問題?》

,當微服務架構體系越來越複雜的時候,需要将“業務服務”和“基礎設施”解耦,将一個微服務程序一分為二:

Istio究竟是幹嘛的?

一個程序實作業務邏輯,biz,即上圖白色方塊

一個程序實作底層技術體系,proxy,即上圖藍色方塊,負載均衡、監控告警、服務發現與治理、調用鍊…等諸多基礎設施,都放到這一層實作

如此解耦之後:

  • biz不管是調用服務,還是提供服務,都隻與本地的proxy進行本地通信
  • 所有跨網的通信,都通過proxy之間進行

要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的實踐,今天說說Istio是幹啥的。

畫外音:不能落伍。

什麼是Istio?

Istio是ServiceMesh的産品化落地,它的一些關鍵性描述是:

  • 幫助微服務之間建立連接配接,幫助研發團隊更好的管理與監控微服務,并使得系統架構更加安全

畫外音:Istio helps you to connect, secure, control, and observe microservices.

  • 幫助微服務分層解耦,解耦後的proxy層能夠更加專注于提供基礎架構能力,例如:

(1)服務發現(discovery);

(2)負載均衡(load balancing);

(3)故障恢複(failure recovery);

(4)服務度量(metrics);

(5)服務監控(monitoring);

(6)A/B測試(A/B testing);

(7)灰階釋出(canary rollouts);

(8)限流限速(rate limiting);

(9)通路控制(access control);

(10)身份認證(end-to-end authentication);

畫外音:佩服,硬是湊齊了十條,其實SM還能提供更多基礎服務功能。

  • 使得業務工程團隊與基礎架構團隊都更加高效的工作,各自專注于自己的工作,更好的彼此賦能

畫外音:說的還是解耦。

Istio官網是怎麼吹噓自己的?

畫外音:這個問題的另一個問法是“為什麼大家要來用Istio”。

Istio非常牛逼,如果要實施ServiceMesh,必須用Istio,因為:

  • 可以通過,在現有伺服器新增部署邊車代理(sidecar proxy),應用程式不用改代碼,或者隻需要改很少的代碼,就能實作上述N項基礎功能

畫外音:你信了麼?

  • 可以通過,控制背景,簡單改改配置,點點按鈕,就能管理和檢視上述N項基礎功能
  • 以下特性,Istio在這個環節裡進行了附加說明:

(1)負載均衡支援多協定,HTTP, gRPC, WebSocket, TCP;

(2)通過路由、重試、故障轉移對流量進行細粒度流控;

(3)通過可插拔政策層以及可配置API,能夠支援流量通路控制、限速、配額管理;

(4)自動度量、日志收集、調用跟蹤;

(5)服務到服務的身份認證;

Istio的核心特性是什麼?

Istio強調了它提供的五項關鍵特性:

  • 流控(traffic management)

畫外音:斷路器(circuit breakers)、逾時、重試、高可用、多路由規則、AB測試、灰階釋出、按照百分比配置設定流量等。

  • 安全(security)

畫外音:加密、身份認證、服務到服務的權限控制、K8S裡容器到容器的權限控制等。

  • 可觀察(observability)

畫外音:追蹤、監控、資料收集,通過控制背景全面了解上行下行流量,服務鍊路情況,服務運作情況,系統性能情況,國内微服務架構體系,這一塊做得比較缺乏。

  • 平台無關系(platform support)

畫外音:K8s,實體機,自己的虛機都沒問題。

  • 內建與定制(integration and customization)

畫外音:可定制化擴充功能。

Istio的吹噓與特性,對于國外很多通過RESTful提供内網服務的公司,很有吸引力,但相對于國内微服務架構,未必達到了很好的拉攏效果:

(1)國内基本都是TCP的RPC架構,多協定支援未必是必須的;

(2)RPC架構裡,路由、重試、故障轉移、負載均衡、高可用都是最基礎的;

(3)流控、限速、配額管理,是服務治理的内容,在微服務架構初期是錦上添花;

(4)自動度量,系統入口出口資料收集,調用跟蹤,可觀察和可操控的背景确實是最吸引人的;

(5)服務到服務的身份認證,微服務基本是内網通路,在架構初期也隻是錦上添花;

另外一個花邊,為什麼代理會叫sidecar proxy?

Istio究竟是幹嘛的?

看了上圖就容易懂了,biz和proxy相生相伴,就像機車(motor)與旁邊的車廂(sidecar)。未來,sidecar和proxy就指微服務程序解耦成兩個程序之後,提供基礎能力的那個代理程序。

Istio這麼牛逼,它的核心架構如何呢?

且聽下回分解。

本文轉自“架構師之路”公衆号,58沈劍提供。

繼續閱讀