要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的實踐,
當微服務架構體系越來越復雜的時候,需要將“業務服務”和“基礎設施”解耦,將一個微服務進程一分為二:
- 一個進程實現業務邏輯,biz,即上圖白色方塊
- 一個進程實現底層技術體系,proxy,即上圖藍色方塊,負載均衡、監控告警、服務發現與治理、調用鏈…等諸多基礎設施,都放到這一層實現
如此解耦之后:
- biz不管是調用服務,還是提供服務,都只與本地的proxy進行本地通信
- 所有跨網的通信,都通過proxy之間進行
要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的實踐,今天說說Istio是干啥的。
畫外音:不能落伍。
什么是Istio?
Istio是ServiceMesh的產品化落地,它的一些關鍵性描述是:
(1) 幫助微服務之間建立連接,幫助研發團隊更好的管理與監控微服務,並使得系統架構更加安全
畫外音:Istio helps you to connect, secure, control, and observe microservices.
(2) 幫助微服務分層解耦,解耦后的proxy層能夠更加專注於提供基礎架構能力,例如:
- 服務發現(discovery);
- 負載均衡(load balancing);
- 故障恢復(failure recovery);
- 服務度量(metrics);
- 服務監控(monitoring);
- A/B測試(A/B testing);
- 灰度發布(canary rollouts);
- 限流限速(rate limiting);
- 訪問控制(access control);
- 身份認證(end-to-end authentication);
畫外音:佩服,硬是湊齊了十條,其實SM還能提供更多基礎服務功能。
(3) 使得業務工程團隊與基礎架構團隊都更加高效的工作,各自專注於自己的工作,更好的彼此賦能
畫外音:說的還是解耦。
Istio官網是怎么吹噓自己的?
畫外音:這個問題的另一個問法是“為什么大家要來用Istio”。
Istio非常牛逼,如果要實施ServiceMesh,必須用Istio,因為:
(1) 可以通過,在現有服務器新增部署邊車代理(sidecar proxy),應用程序不用改代碼,或者只需要改很少的代碼,就能實現上述N項基礎功能
畫外音:你信了么?
(2) 可以通過,控制后台,簡單改改配置,點點按鈕,就能管理和查看上述N項基礎功能
(3) 以下特性,Istio在這個環節里進行了附加說明:
- 負載均衡支持多協議,HTTP, gRPC, WebSocket, TCP;
- 通過路由、重試、故障轉移對流量進行細粒度流控;
- 通過可插拔策略層以及可配置API,能夠支持流量訪問控制、限速、配額管理;
- 自動度量、日志收集、調用跟蹤;
- 服務到服務的身份認證;
Istio的核心特性是什么?
Istio強調了它提供的五項關鍵特性:
(1) 流控(traffic management)
畫外音:斷路器(circuit breakers)、超時、重試、高可用、多路由規則、AB測試、灰度發布、按照百分比分配流量等。
(2) 安全(security)
畫外音:加密、身份認證、服務到服務的權限控制、K8S里容器到容器的權限控制等。
(3) 可觀察(observability)
畫外音:追蹤、監控、數據收集,通過控制后台全面了解上行下行流量,服務鏈路情況,服務運行情況,系統性能情況,國內微服務架構體系,這一塊做得比較缺乏。
(4) 平台無關系(platform support)
畫外音:K8s,物理機,自己的虛機都沒問題。
(5) 集成與定制(integration and customization)
畫外音:可定制化擴展功能。
Istio的吹噓與特性,對於國外很多通過RESTful提供內網服務的公司,很有吸引力,但相對於國內微服務架構,未必達到了很好的拉攏效果:
- 國內基本都是TCP的RPC框架,多協議支持未必是必須的;
- RPC框架里,路由、重試、故障轉移、負載均衡、高可用都是最基礎的;
- 流控、限速、配額管理,是服務治理的內容,在微服務架構初期是錦上添花;
- 自動度量,系統入口出口數據收集,調用跟蹤,可觀察和可操控的后台確實是最吸引人的;
- 服務到服務的身份認證,微服務基本是內網訪問,在架構初期也只是錦上添花;
另外一個花邊,為什么代理會叫sidecar proxy?
看了上圖就容易懂了,biz和proxy相生相伴,就像摩托車(motor)與旁邊的車廂(sidecar)。未來,sidecar和proxy就指微服務進程解耦成兩個進程之后,提供基礎能力的那個代理進程。
【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】