天天看點

微服務、SpringCloud、k8s、Istio雜談

一、微服務與SOA

       “微服務”是一個名詞,沒有這個名詞之前也有“微服務”,一個朗朗上口的名詞能讓大家産生一個認知共識,這對推動一個事務的發展挺重要的,不然你叫微服務他叫小服務的大家很難集中到一個點上。

       業界對微服務與SOA的差別争論比較多大多都是在微觀上對比他們的差別什麼微服務粒度更細啊、微服務沒有ESB啊、微服務通訊相比SOA采用更輕量級的協定啊等等,但是從微觀談差別本身就有悖論,

這些差別隻是微服務的一種”最佳實踐“而已。我個人了解微服務與SOA靈魂上的不同是

       微服務是網際網路時代的産物而SOA是系統內建的産物,微服務是對系統的打散而SOA是對系統的整合。

二、 微服務與SpringCloud

       因為SpringCloud的流行很多人就把SpringCloud等同于微服務,這也沒有錯共識的人多了就是對的。準确點說SpringCloud是适合實作微服務的一套基礎架構,SpringCloud有助于訊速的落地微服務架構。SpringCloud是以Java庫的形式工作是以它的工作層面是在應用層(研發層)。

       SpringCloud通過提供一籃子解決方案來應對微服務中的各種需求和通點,通過Eureka提供服務注冊與發現,Ribbon實作用戶端的負載均衡,Feign牛逼的将REST變成強類型的接口調用,Config提供友善但不靈活的配置中心,Hystrix提供熔斷方案,Zuul提供網關方案等。

       優點:

       1、提供較全的微服務治理全套解決方案

       2、對開發人員友好(對代碼侵入強)

       缺點:

       1、隻能java平台技術棧使用,當然提供了SideCar用于內建異構技術但是限制比較大

三、Kubernetes(k8s)

       k8s并不是因為微服務而生而是因為docker而生隻是天時地利人和正好趕上了微服務流行的時代,docker的特性正好特别适用于微服務,而k8s進一步對docker友善的編排。

       從基礎設施方向來講k8s可以比作是IDC機房和機房從業人員,對實體伺服器(docker)的存放與管理,上機架、裝系統、接網絡等等。

       從微服務的角度來講,k8s通過基礎設施的方式通過邏輯抽象出service等概念提供了對微服務的另一種實作,就好比用N台電腦聯網提供了FTP服務。

       1、在基礎層提供了抽象,對代碼無侵入

       1、對微服務治理比較弱,如熔斷限流等,當然這也不應該是k8s做的。

四、Istio

       Istio的理論概念是Service Mesh(服務網絡),我們不必糾結于概念實際也是微服務的一種落地形式有點類似上面的SideCar模式,它的主要思想是關注點分離,即不像SpringCloud一樣交給研發來做,也不內建到k8s中産生職責混亂,Istio是通過為服務配 Agent代理來提供服務發現、負截均衡、限流、鍊路跟蹤、鑒權等微服務治理手段。

       Istio開始就是與k8s結合設計的,Istio結合k8s可以牛逼的落地微服務架構。 

       1、關注點分離,對代碼無侵入

       2、服務治理相關較全面

       1、老子學不動了

五、我理想中的微服務架構

微服務、SpringCloud、k8s、Istio雜談

繼續閱讀