程序員硬核評測:客觀、高效、不說軟話。無論是技術(shù)質(zhì)量、性能水平,還是工具篩選,一測便知!
作者:孫浩峰
過去幾年來,“微服務(wù)架構(gòu)”方興未艾,盡管這種架構(gòu)風格沒有確切的定義,但我們已經(jīng)看到許多項目憑借此架構(gòu)取得了積極的進展,因此對于許多開發(fā)者來說,微服務(wù)正成為構(gòu)建企業(yè)應(yīng)用程序的默認風格??杀氖牵瑳]有太多的信息概述微服務(wù)的風格以及如何去做。而實際上,擁有一個合適的微服務(wù)開發(fā)平臺將會非常有助于實現(xiàn)微服務(wù)架構(gòu),基于此,CSDN云計算特別策劃了微服務(wù)平臺盤點系列文章,欲以CSDN中立技術(shù)社區(qū)專業(yè)、客觀的角度,探討如何為開發(fā)者選擇合適的微服務(wù)開發(fā)平臺,以幫助其企業(yè)實現(xiàn)微服務(wù)架構(gòu)。為此,我們采訪了數(shù)家提供微服務(wù)平臺的云服務(wù)廠商,本期,我們請來的是青云QingCloud旗下容器平臺KubeSphere。
青云直上云霄
——2019微服務(wù)盤點之KubeSphere
有很多詞可以形容現(xiàn)在微服務(wù)的現(xiàn)狀:百花齊放、碎片化等等,老牌的比如SpringCloud,還有國內(nèi)公司主導(dǎo)開源的Dubbo,基于新興技術(shù)理念的Service Mesh,以及近兩年大火的Istio、Conduit等,不管是平臺提供商還是客戶,微服務(wù)已經(jīng)成為他們?nèi)粘=涣?、溝通所必須掛在嘴邊的詞匯了。
SpringCloud 遠在Istio 出現(xiàn)之前就已經(jīng)提供了完整的微服務(wù)平臺的工具鏈,而且天然親和Java開發(fā)者,要知道,Java 應(yīng)該是在大型企業(yè)里面使用最廣泛的開發(fā)語言之一。幾年前,如果一個Java 開發(fā)者,要對業(yè)務(wù)進行微服務(wù)改造,可以說唯一的選擇就是SpringCloud,而到了今天,持續(xù)的技術(shù)慣性會讓開發(fā)者一直擁護SpringCloud,因為它在業(yè)務(wù)所需的各個環(huán)節(jié)都滿足的很好。
但是前一陣Euraka 2.x 等SpringCloud 關(guān)鍵組件的停止更新在SpringCloud 用戶中掀起了軒然大波,大家開始回頭審視,重新對它進行評估。
用戶眼中的微服務(wù)
用戶覺得,繼續(xù)使用SpringCloud,也許未來會有些風險,此處無法對這種風險進行量化的評估,因為開源技術(shù)的推動來自于開源貢獻者、廠商、市場多方的融合推力,誰也無法預(yù)知明天會不會出現(xiàn)一個Euraka 3.x 能解決所有問題。
但用戶能看到的是:
容器及其調(diào)度平臺目前在企業(yè)IT 環(huán)境中落地越來越容易,這一方面得益于社區(qū)在不斷優(yōu)化其部署方法,另一方面,得益于越來越多的服務(wù)廠商提供容器落地產(chǎn)品及解決方案。
對于天然適合微服務(wù)架構(gòu)的容器平臺,Java 對其的支持總是讓人感覺差了那么一點,最近幾年Java 版本更新迭代很快,快速的從v8過渡到了現(xiàn)在的v11,其中很多更新改進都是為了去適應(yīng)容器場景的需要,但在企業(yè)中,有些業(yè)務(wù)系統(tǒng)其實還是基于老舊版本的java runtime 在運行,而且這些業(yè)務(wù)系統(tǒng)的代碼可能來自多年來不同的服務(wù)提供商的貢獻,將其遷移至新版jre 并在容器平臺上以一種更優(yōu)雅的方式運行,用戶想想就覺得頭大,更別提動手去做了……
企業(yè)用戶還有一種恐慌,對于SpringCloud、Dubbo 這種侵入性的框架,死死綁定了他們的業(yè)務(wù)平臺,而大型企業(yè)里面,一個業(yè)務(wù)系統(tǒng)持續(xù)運行四、五年是非常稀松平常的事情,很多系統(tǒng)已經(jīng)服役近十年。對于下定決心要進行微服務(wù)改造的企業(yè),如果選擇了這種框架,未來這么多年,它能否陪伴企業(yè)持續(xù)的演進迭代呢?與此同時,很多新興的后端輕量開發(fā)語言,如Go、Python 等獲得了越來越多開發(fā)者的認可,其學(xué)習成本低,適合分布式場景,有足夠多的資料和工具助力,因此,現(xiàn)在人才市場上找到合適的Go 語言開發(fā)者并不是很困難的事情。
還有一種用戶,他們的業(yè)務(wù)系統(tǒng)也已經(jīng)運行多年,而且是基于Spring MVC,Struts 等框架構(gòu)建的單體應(yīng)用,體量、復(fù)雜度都很大,伴隨著市場互聯(lián)網(wǎng)化的外部壓力,IT基礎(chǔ)設(shè)施變革(如容器化)的內(nèi)部壓力,使得他們不得不做出改變,往往這種用戶變革的決心更強烈、但做出決定的態(tài)度反而搖擺不定,因為如上所述,選擇太多,而且這不是簡單開發(fā)一個手機App的小事,而是決定企業(yè)未來多年IT 架構(gòu)的重要決定。往往這種用戶前期會尋找很多廠家來交流,但有些時候,交流的越多困惑也就越大,因為大部分交流溝通都是停留在技術(shù)架構(gòu)層面,而微服務(wù)改造涉及到了企業(yè)的組織架構(gòu)、系統(tǒng)的業(yè)務(wù)特性等深入企業(yè)骨子里面的東西,這些是需要企業(yè)管理者自身或者借助服務(wù)商輔助一點點去梳理、分析的,類比一個不太恰當?shù)睦樱汗I(yè)大革命時代,流水線的發(fā)明釋放了生產(chǎn)力,每個工人的能力被拆解,細化,某些行業(yè)如汽車制造迎來了巨變,但流水線并不是銀彈,不能解決所有行業(yè)的效率問題。
KubeSphere 容器平臺產(chǎn)品經(jīng)理于爽認為,Istio 等Service Mesh 框架,看似能很好的上述一些問題,比如不侵入代碼、無語言綁定、基于Kubernetes 平臺,但目前即使有了Istio 1.0,我們對它依然心存畏懼:性能依然不夠理想,基于Istio實現(xiàn)的微服務(wù),由于虛擬化、轉(zhuǎn)發(fā)等因素造成的性能損耗依然過大,不過積極的方面是這部分是社區(qū)持續(xù)改進的重點,大家也都在做一些有效的嘗試,比如通過cilium 做Service Mesh 的Proxy,提升性能;此外,Istio 雖然控制面做的很優(yōu)秀,但上手成本依然很高,很多企業(yè)用戶還處在容器化改造階段,以一種復(fù)雜面貌去呈現(xiàn)是很難很快融入企業(yè)IT 架構(gòu)里面的。
最后,國內(nèi)也鮮有Istio 生產(chǎn)環(huán)境的最佳實踐,能看到的是有技術(shù)實力的互聯(lián)網(wǎng)公司將Istio 中的某個組件拆解出來,或改造、或接入他們現(xiàn)有微服務(wù)治理平臺,但這又會造成一種和社區(qū)主分支不一致的問題,為將來能否和社區(qū)保持一致帶來些許擔心,是否會走上廠商綁定的老路還需要觀察;不過,在去年上海KubeCon 大會上,Google 的開發(fā)者講述了在美國三家公司成功將Istio 用于生產(chǎn)的案例,相信類似的事情會發(fā)生的越來越多,也期待今年上海的KubeCon能看到更多來自Istio 的分享;站在平臺服務(wù)商的角度,KubeSphere 對Istio 這種新一代的微服務(wù)治理框架以及社區(qū)強勁的發(fā)展態(tài)勢充滿信心,這也是為什么KubeSphere的產(chǎn)品中會引入Istio的原因。
青云QingCloud 的微服務(wù)觀
于爽表示,青云QingCloud 是一家服務(wù)型企業(yè),立志成為在公有云、私有云、托管云和混合云領(lǐng)域為客戶提供技術(shù)領(lǐng)先、可落地、滿足企業(yè)用戶各種業(yè)務(wù)場景需求的全棧云ICT 服務(wù)提供商。
對于微服務(wù)也是如此,有太多的用戶找到青云QingCloud,期望青云能提供專業(yè)的、關(guān)于容器、DevOps和微服務(wù)開發(fā)相關(guān)的,包含從前期知識培訓(xùn)、中期業(yè)務(wù)調(diào)研咨詢到后期幫助他們業(yè)務(wù)容器化、微服務(wù)化的全套服務(wù)。這絕不是組織幾場培訓(xùn)、搭建一套環(huán)境、寫幾段代碼那么簡單的事情,因為面對的是企業(yè),其業(yè)務(wù)的復(fù)雜性絕對不是靠簡單的搬運幾套技術(shù)框架、然后設(shè)想一個美好的場景就能實現(xiàn)的。所以青云QingCloud 對自己微服務(wù)平臺的產(chǎn)品有很明確的定位:
(一) 能真正落地,而不是簡單的做某些技術(shù)的搬運工;
(二) 降低用戶融入這套平臺的成本;
(三) 緊跟社區(qū)的主流技術(shù)框架,不重新造輪子,也不把圓輪子改成橢圓輪子,而且青云QingCloud 會投入力量幫助社區(qū)把這個輪子造得更好。
如同購買手機,用戶買了一個很貴的iPhone手機,絕對不是為了要頭痛怎么用它,而是希望它能給自己帶來便利、很好的體驗和快樂。對于技術(shù)平臺同樣如此,青云QingCloud 認為任何一種技術(shù)存在即合理,都有它的價值所在,對于目前微服務(wù)框架領(lǐng)域存在的,被開發(fā)者接受的技術(shù),青云QingCloud 都期望能夠通過自己的平臺以易用服務(wù)的形式提供給客戶??赡苡腥藭蓡?,青云QingCloud 作為一家技術(shù)型主導(dǎo)的公司,為什么不把自己的技術(shù)能力轉(zhuǎn)化到這些微服務(wù)框架上,答案是肯定的,青云會而且一直在這么做,但不會把它封印在自己的產(chǎn)品里面,而是希望通過開源貢獻的方式,和社區(qū)一起把開源項目變得更好,然后再反哺青云的產(chǎn)品,這也是為什么在KubeSphere 2.0.0 整合了istio 這套微服務(wù)框架的原因,而這個想法也得到了CNCF 執(zhí)行主席Dan Kohn 的肯定。
不過,雖然好的技術(shù)平臺固然可以使得企業(yè)實現(xiàn)微服務(wù)架構(gòu)“事半功倍”,但如果不能很好的界定如何進行服務(wù)拆分以及對組織架構(gòu)進行調(diào)整,微服務(wù)的實現(xiàn)仍然是任重而道遠。
于爽表示,服務(wù)拆分和組建架構(gòu)對于青云QingCloud 來說從來不是問題,而是課題,青云QingCloud提供的是一套中立、通用的微服務(wù)開發(fā)平臺,并不想針對某個特殊客戶的需求去改變產(chǎn)品的定位。青云非常清楚,產(chǎn)品在被使用的過程中會被某些客戶認可,也可能會被某些客戶所否定,但不管是正面的還是負面的反饋,都會被青云認真分析后加成到產(chǎn)品的持續(xù)更新中。
當然,這絕不是說青云不會去響應(yīng)客戶的任何定制化個性需求,青云有專業(yè)的解決方案和服務(wù)實施團隊,可以協(xié)助客戶,全程幫助他們將微服務(wù)落地。
于爽認為服務(wù)拆分和組織架構(gòu),是一個非常大的課題,沒有固定方法,網(wǎng)上以及書店眾多的教程能提供的只有宏觀上的指導(dǎo)意見和經(jīng)驗參考。對大型企業(yè)以及老舊系統(tǒng)應(yīng)用,服務(wù)和組織架構(gòu)并不是想拆分就拆分,這里涉及的因素太多了,有政策性的因素、有人的因素等等,微服務(wù)只是一個技術(shù)架構(gòu),它最終還是要服務(wù)于人,作為一家服務(wù)提供商,面臨這種問題,一定要耐心,同時青云也會引導(dǎo)客戶耐心,因為這并非一朝一夕之功,而且微服務(wù)改造和做系統(tǒng)性能優(yōu)化一樣,沒有盡頭,只能追求越做越好。
青云QingCloud 微服務(wù)平臺的未來
于爽介紹說,KubeSphere 容器平臺,是青云QingCloud 旗下的容器品牌。在KubeSphere 2.0 里面,基于Kubernetes 和istio 提供微服務(wù)治理平臺,在隨后的3.0 里面,也會支持SpringCloud,就像之前講的,青云不只是簡單的技術(shù)搬運工,為了滿足企業(yè)場景需求,青云QingCloud 圍繞K8s和Istio做了很多工作,包括更好的租戶隔離、整體性的資源管理框架、打通服務(wù)治理和DevOps 等等。更多細節(jié),可以在4月19號的KubeSphere 的發(fā)布會看到。
任何東西,存在即合理,有用戶認可就有它的價值,所以其他的微服務(wù)平臺也會一直是青云QingCloud 學(xué)習的榜樣,青云也會不斷努力給客戶提供更好的服務(wù)。
于爽表示,僅僅通過研發(fā)人員去直接打造一個微服務(wù)管理平臺,是遠離客戶和行業(yè)的,因為很多客戶對技術(shù)底層實現(xiàn)是不關(guān)注的,他們期望的是技術(shù)能解決自己的業(yè)務(wù)痛點,所以這時候就需要有行業(yè)專家的介入,消化客戶的信息轉(zhuǎn)化為研發(fā)能夠理解的語言,同時,產(chǎn)品經(jīng)理也要分析這些需求背后的成因,并評估轉(zhuǎn)化為產(chǎn)品功能的必要性。
此外,技術(shù)平臺還需要不斷的去平衡產(chǎn)品功能和用戶需求:容器、DevOPs和微服務(wù)平臺,不再像原有的資源型平臺那樣,只是一個簡單的資源交付平臺,而是要滿足多樣并且不斷變化的用戶業(yè)務(wù)需求,同一個用戶,即使上半年你的平臺可以支撐他的業(yè)務(wù)需求,但并不意味著下半年也可以。那么作為一個平臺型的產(chǎn)品,是要走進這些需求漩渦中,還是跳出來專注做自己的版本迭代,這里有取舍、有妥協(xié)還有堅持。
青云QingCloud 一貫堅持的是:在已有的技術(shù)能力和視野內(nèi),走向青云認為最正確、最合適的方向。
技術(shù)點評
青云QingCloud旗下容器平臺——KubeSphere 的微服務(wù)治理功能,可以幫助企業(yè)以一種細粒度的方式開發(fā)、測試和發(fā)布服務(wù),有效推動企業(yè) DevOps以及微服務(wù)落地。 基于KubeSphere,還可以在企業(yè)微服務(wù)開發(fā)和改造中實現(xiàn)更強大的功能。例如:在不侵入代碼的情況下,通過故障注入方式檢驗服務(wù)的健壯性;將 Kubernetes 的服務(wù)進行更細力度的拆分,并完成加密、權(quán)限管控;端到端的全程可視化監(jiān)控等。
不過,事實上,微服務(wù)治理功能只是KubeSphere中的一個功能,KubeSphere的能力也遠非僅僅是微服務(wù)治理這么簡單,它實際上是一個基于Kubernetes 構(gòu)建的分布式、多租戶、企業(yè)級容器管理平臺,具有強大且完善的網(wǎng)絡(luò)與存儲能力,并通過極簡的人機交互提供完善的多集群管理、CI / CD 、微服務(wù)治理、應(yīng)用管理等功能,能夠幫助企業(yè)在云、虛擬化及物理機等異構(gòu)基礎(chǔ)設(shè)施上快速構(gòu)建、部署及運維容器架構(gòu),實現(xiàn)應(yīng)用的敏捷開發(fā)與全生命周期管理。
這樣的特點,其實意味著KubeSphere具有遠超出微服務(wù)平臺范圍的能力,用“青云直上云霄”來形容,恰如其分。