ServiceMesh(2)
一個進程實現業務邏輯,biz,即上圖白色方塊安全
一個進程實現底層技術體系,proxy,即上圖藍色方塊,負載均衡、監控告警、服務發現與治理、調用鏈…等諸多基礎設施,都放到這一層實現服務器
如此解耦以後:架構
biz無論是調用服務,仍是提供服務,都只與本地的proxy進行本地通訊app
全部跨網的通訊,都經過proxy之間進行負載均衡
要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的實踐,今天說說Istio是幹啥的。
框架
什麼是Istio?ide
Istio是ServiceMesh的產品化落地,它的一些關鍵性描述是:微服務
幫助微服務之間創建鏈接,幫助研發團隊更好的管理與監控微服務,並使得系統架構更加安全post
幫助微服務分層解耦,解耦後的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);
使得業務工程團隊與基礎架構團隊都更加高效的工做,各自專一於本身的工做,更好的彼此賦能
Istio官網是怎麼吹噓本身的?
Istio很是牛逼,若是要實施ServiceMesh,必須用Istio,由於:
能夠經過,在現有服務器新增部署邊車代理(sidecar proxy),應用程序不用改代碼,或者只須要改不多的代碼,就能實現上述N項基礎功能
能夠經過,控制後臺,簡單改改配置,點點按鈕,就能管理和查看上述N項基礎功能
如下特性,Istio在這個環節裏進行了附加說明:
(1)負載均衡支持多協議,HTTP, gRPC, WebSocket, TCP;
(2)經過路由、重試、故障轉移對流量進行細粒度流控;
(3)經過可插拔策略層以及可配置API,可以支持流量訪問控制、限速、配額管理;
(4)自動度量、日誌收集、調用跟蹤;
(5)服務到服務的身份認證;
Istio的核心特性是什麼?
Istio強調了它提供的五項關鍵特性:
流控(traffic management)
安全(security)
可觀察(observability)
平臺無關係(platform support)
集成與定製(integration and customization)
Istio的吹噓與特性,對於國外不少經過RESTful提供內網服務的公司,頗有吸引力,但相對於國內微服務架構,未必達到了很好的拉攏效果:
(1)國內基本都是TCP的RPC框架,多協議支持未必是必須的;
(2)RPC框架裏,路由、重試、故障轉移、負載均衡、高可用都是最基礎的;
(3)流控、限速、配額管理,是服務治理的內容,在微服務架構初期是錦上添花;
(4)自動度量,系統入口出口數據收集,調用跟蹤,可觀察和可操控的後臺確實是最吸引人的;
(5)服務到服務的身份認證,微服務基本是內網訪問,在架構初期也只是錦上添花;
另一個花邊,爲何代理會叫sidecar proxy?
看了上圖就容易懂了,biz和proxy相生相伴,就像摩托車(motor)與旁邊的車箱(sidecar)。將來,sidecar和proxy就指微服務進程解耦成兩個進程以後,提供基礎能力的那個代理進程。
Istio這麼牛逼,它的核心架構如何呢?
且聽下回分解。