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