第六章 九析帶你輕鬆完爆 service mesh - istio 今生篇

系列文章:


總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程

目錄

1 前言

2 何爲服務網格(service mesh)

3 何爲 istio

4 爲什麼使用 istio

5 istio 核心特徵

    5.1 traffic management

    5.2 secure

    5.3 policies

    5.4 observability

6 多平臺支持


1 前言

        如果你對博客有任何疑問,請告訴我。

1.png

        上章介紹了 istio 前世,講述了微服務架構模型的演變史,也講了微服務今天所遭遇的問題和麪臨的尷尬窘境,這裏我們再複習一下。

        目前微服務治理遭遇的問題:

服務治理方式不統一:不同服務治理的方式會引入不同的中間件,而這些中間件的技術標準和維護標準都不同。因此運維人員或者架構人員必須掌握每種中間件的使用方法,很多時候這對一個人力資源有限的科技公司並不現實。


重複造輪子:微服務架構是允許多語言棧、多技術棧的,但不同的技術棧針對通信、支撐服務、服務安全、服務監控、熔斷/降級/限流等通用技術問題卻需要各自的解決方案,實在是成本的浪費。


服務治理缺乏標準化:由於服務治理缺乏標準化,因此微服務治理的好壞全依靠技術人員個人的能力、經驗和水平,這就有點像手工作坊時代,器物優質全靠工匠。但是無標準化顯然不符合科技發展的軌跡。

        爲了解決上面微服務治理中的痛點,大家普遍的訴求在於能不能有這麼一個平臺,既可以無侵入、透明、用戶無感知的插入到現有的分佈式微服務架構中,同時又可以解決一些通信所必須考慮的普遍問題(服務發現、負載均衡、超時重試、熔斷/限流、監控、訪問控制、認證授權等),將這些問題的解決方案統一下沉到平臺層,而不再依靠引入第三方中間件(zookeeper、nginx、sentinal、hystrix、pinpoint/zipkin、spring security),並且所有的維護方式統一且標準化。

        於是服務網格出現了,istio 也出現了,而且一切出現得都是這麼自然。

《聖經》舊約-創世紀篇:


原始太初,上帝創造了天地。地面一片空虛混沌,淵面黑暗,只有上帝的靈運行在水面上。上帝說:“要有光!”於是,就有了光。上帝把光和暗分開,把光稱爲白晝,把暗稱爲黑夜。夜晚過去後,清晨接着來臨,這是第一天。


上帝說:“諸水之間要有穹蒼,將水分爲上下。”於是創造了穹蒼,把水上下分開。他稱穹蒼爲“天空”。夜晚過去,清晨接着來臨,這是第二天。

......

        那麼服務網格是什麼?istio 又是什麼呢?


2 何爲服務網格(service mesh)

        下面看看 istio 是怎麼描述服務網格的:

The term service mesh is used to describe the network of microservices that make up such applications and the interactions between them. As a service mesh grows in size and complexity, it can become harder to understand and manage. Its requirements can include discovery, load balancing, failure recovery, metrics, and monitoring. A service mesh also often has more complex operational requirements, like A/B testing, canary rollouts, rate limiting, access control, and end-to-end authentication.

        個人翻譯如下:

服務網格是對微服務組成的一個可以互相通信的網絡進行治理的規範。隨着微服務的增長,服務網格也會變得越來越複雜和難以理解。服務網格治理的內容除了服務發現、負載均衡、失敗恢復、指標收集、監控之外,還應該具有更復雜的運維要求,比如 A/B 測試、金絲雀發佈、流量限制、訪問控制和端到端認證。

3 何爲 istio

        上面介紹了服務網格,下面再來介紹一下 istio,仍然引用 istio 官網的定義:

Cloud platforms provide a wealth of benefits for the organizations that use them. However, there’s no denying that adopting the cloud can put strains on DevOps teams. Developers must use microservices to architect for portability, meanwhile operators are managing extremely large hybrid and multi-cloud deployments. Istio lets you connect, secure, control, and observe services.


At a high level, Istio helps reduce the complexity of these deployments, and eases the strain on your development teams. It is a completely open source service mesh that layers transparently onto existing distributed applications. It is also a platform, including APIs that let it integrate into any logging platform, or telemetry or policy system. Istio’s diverse feature set lets you successfully, and efficiently, run a distributed microservice architecture, and provides a uniform way to secure, connect, and monitor microservices.

        個人感覺介紹很囉嗦,建議你也別看了,我給你簡單列舉一下重點即可:

istio 是 service mesh 的具體解決方案。她就像一個尤物,不僅能滿足服務網格規定的一切苛刻要求之外,還貼心地爲你準備了一整套標準化、規格化的豪華級國際服務,等待着你的抽插。更難能可貴地是,擁有這麼多優秀品質的她,竟然還是免費的!爽不爽!

4 爲什麼使用 istio

        下面是你選擇 istio 的一些理由:

1 對 HTTP、gRPC、WebSocket 和 TCP 網絡流量的自動負載均衡

2 通過豐富多樣的路由規則、重試、故障轉移和故障注入機制實現對流量行爲進行細粒度控制

3 通過可插拔的策略層(聯想成過濾器)和 API 實現對訪問的控制、流量以及資源配額的限制

4 集羣入口、集羣內部、集羣出口所有網絡流量的全方位跟蹤、記錄和度量

5 保證服務之間通信的安全性

5 istio 核心特徵

        istio 官方宣揚的特性是 traffic management(流控)、secure(安全)、polices(策略)、observability(可觀察)。個人感覺這樣的敘述太佶屈聱牙,一點都不口語化。

5.1 traffic management

        這個好理解,本質就是網絡流量的管理。就像早晚高峯車輛限行,以及交警在發生交通事故疏導新路,這些都是在做流量的控制和路由。

        其實流量管理並不是服務網格化纔出現的,早期的微服務時代就已經有流量控制了,比如負載均衡、熔斷、限流、降級等,只不過早期這些功能的實現依賴中間件(比如 nginx、hystrix),如今服務網格時代,這些功能統一下沉到基礎平臺 istio 去實現了。

        istio 的流控主要是通過 Envoy 組件實現。有關技術細節,哥以後會專門告訴你。

5.2 secure

        說到 istio 的 secure 其實是有個範圍的。這裏的 secure 並不是沒有邊界,它主要是指微服務之間通信的 secure,即 pod 對 pod、service 對 service 層面通信的 secure。衆所周知,istio 是 google、ibm 以及 lyft 公司 3p 後的產物。而 istio 的 secure 正是脫胎於 google 的 ALTS(應用層傳輸安全)這項技術,該項技術用於驗證 google 服務之間的通信,保證傳輸中數據的安全,即應用層服務到服務通信的防護方式。這些功能早先在微服務時代對標就是 jwt、oauth2 等技術規範。

        istio secure 主要的功能有 ACLS(訪問控制)、authentication(認證,即證明你是誰)、authorization(授權,即允許你幹啥)。

        istio secure 功能通過 Citadel 這個組件實現。有關技術細節,哥以後會專門告訴你。

5.3 policies

        istio policies 職責如下:

1 動態限制服務通信的網絡速率

2 限制訪問服務、設置黑、白名單

3 網絡包頭信息的重寫或者重定向

        不僅如此,istio 也允許添加自定義策略,通過 istio 提供的 policy adapter 跟 istio 集成在一起。

        注意不要將 policies 跟 secure 進行混淆,policies 更多是人爲進行干預控制,而 secure 重點在於安全。

        istio policies 功能實現是通過 mixer 組件實現的。有關技術細節,哥以後會專門告訴你。

5.4 observability

        observability 特性是指提供給你多種工具實現全方位、立體式對集羣入口、集羣內部、集羣出口的流量進行監控、跟蹤和度量。微服務早期時代監控方式是 agent 或者中間件,比如:zabbix、pinpoint、zipkin 等。

        istio observability 功能實現是通過 mixer 組件實現的。還是老樣子,有關技術細節,哥以後會專門告訴你。

6 多平臺支持

        istio 可以支持多平臺,比如 k8s、Consul、Mesos 以及獨立虛擬機。

        以後哥都會實際爲你展示,你唯一做的就是耐心等待和持續尖叫。

        自此,九析帶你輕鬆完爆 istio 的介紹。更多精彩,敬請期待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章