成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

部署微服務(wù):Spring Cloud vs. Kubernetes

YanceyOfficial / 3859人閱讀

摘要:而微服務(wù)架構(gòu)能否成功實(shí)踐,利用各種工具解決潛在問題是關(guān)鍵。因此,微服務(wù)本身可以通過庫和運(yùn)行時(shí)代理解決客戶端服務(wù)發(fā)現(xiàn)負(fù)載均衡配置更新統(tǒng)計(jì)跟蹤等。與相比,解決了更廣的微服務(wù)架構(gòu)問題。和處理了不同范圍的微服務(wù)架構(gòu)技術(shù)點(diǎn),而且是用了不同的方法。

Spring Cloud vs. Kubernetes,誰才是部署微服務(wù)的最佳拍檔?

Spring Cloud和Kubernetes都聲稱自己是開發(fā)和運(yùn)行微服務(wù)的最佳環(huán)境,但兩者在特性上并不相同,解決的問題點(diǎn)也不一樣。本文將探討這兩種平臺(tái)對于微服務(wù)架構(gòu)的交付有何作用、兩者在哪些方面表現(xiàn)更好以及如何利用這兩種平臺(tái)在微服務(wù)架構(gòu)的路上取得成功。

背景故事

我最近拜讀了 A.Lukyanchikov關(guān)于如何利用Spring CloudDocker搭建微服務(wù)的文章,推薦大家也看一看。

想要搭建一個(gè)可以十倍、百倍擴(kuò)展服務(wù)的彈性伸縮微服務(wù)系統(tǒng),需要借助具有寬泛構(gòu)建時(shí)間和運(yùn)行時(shí)能力的工具集進(jìn)行集中的管理和治理。

Spring Cloud包括了各種功能性服務(wù)(如統(tǒng)計(jì)服務(wù),帳戶服務(wù)和通知服務(wù))和支持基礎(chǔ)設(shè)施服務(wù)(如日志分析,配置服務(wù)器,服務(wù)發(fā)現(xiàn),授權(quán)服務(wù))。

下圖展示使用Spring Cloud的微服務(wù)架構(gòu):

Spring Cloud微服務(wù)架構(gòu),by A. Lukyanchikov)

該圖展示了運(yùn)行時(shí)的方方面面,但沒有包括打包、持續(xù)集成、伸縮、高可用和自我修復(fù)等在微服務(wù)架構(gòu)中重要點(diǎn)。本文假設(shè)大多數(shù)JAVA開發(fā)者熟悉Spring Cloud,采用類比的形式,通過解決以上要點(diǎn)問題,帶大家了解KubernetesSpring Cloud之間的關(guān)系。

微服務(wù)要點(diǎn)

我們在此不進(jìn)行特性的逐個(gè)對比,而是從大面上看一看微服務(wù)的要點(diǎn)并聊一聊Spring CloudKubernetes如何實(shí)現(xiàn)。

微服務(wù)架構(gòu)的一大優(yōu)勢是易于理解的架構(gòu)風(fēng)格,可實(shí)現(xiàn)強(qiáng)大的模塊邊界,并且具有獨(dú)立的部署和技術(shù)多樣性,但需要付出的代價(jià)也是顯而易見的——開發(fā)分布式系統(tǒng)的成本和運(yùn)維開銷。

而微服務(wù)架構(gòu)能否成功實(shí)踐,利用各種工具解決潛在問題是關(guān)鍵。把啟動(dòng)過程變得快速簡單很重要,但通往生產(chǎn)環(huán)境的旅程是漫長的,你需要不斷進(jìn)步才能成功。

上圖是需要在微服務(wù)架構(gòu)中最常見的技術(shù)要點(diǎn)(在這里,我們不涉及那些非技術(shù)要點(diǎn),比如組織結(jié)構(gòu)、公司文化等等)

技術(shù)對比

Spring CloudKubernetes有很大的不同,并沒有直接可比的特性,如果對照微服務(wù)架構(gòu)的要點(diǎn),可以得出如下的技術(shù)對比圖表:

從上表我們可以得知:

Spring Cloud有一套豐富且集成良好的JAVA庫,作為應(yīng)用棧的一部分解決所有運(yùn)行時(shí)問題。因此,微服務(wù)本身可以通過庫和運(yùn)行時(shí)代理解決客戶端服務(wù)發(fā)現(xiàn)、負(fù)載均衡、配置更新、統(tǒng)計(jì)跟蹤等。工作模式就像單實(shí)例服務(wù)集群譯者注:集群中master節(jié)點(diǎn)工作,當(dāng)master掛掉后,slave節(jié)點(diǎn)被選舉頂替。)并且一批工作也是在JVM中被管理。

Kubernetes是多語言的,不僅僅針對Java平臺(tái),而是以通用的方式為所有語言解決分布式計(jì)算問題。Kubernetes提供了配置管理、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、跟蹤、統(tǒng)計(jì)、單實(shí)例、平臺(tái)級(jí)和應(yīng)用棧之外的調(diào)度工作。該應(yīng)用不需要任何客戶端邏輯的庫或代理程序,可以用任何語言編寫。

兩個(gè)平臺(tái)依靠相似的第三方工具,如ELKEFK stacks, tracing libraries等。HystrixSpring Boot等庫,在兩個(gè)環(huán)境中都表現(xiàn)良好。很多情況下,Spring CloudKubernetes可以形成互補(bǔ),組建出更強(qiáng)大的解決方案(例如KubeFlix和Spring Cloud Kubernetes)。

微服務(wù)需求

想要進(jìn)一步理解Spring CloudKubernetes的適用范圍,可以參考下圖微服務(wù)架構(gòu)需求。

有些需求,Spring Cloud表現(xiàn)更好,有需求則是Kubernetes,也有些需求,兩者可以用不同的方式滿足。好消息是,Spring CloudKubernetes在使用上并不沖突。例如,Spring Cloud提供Maven插件來創(chuàng)建多帶帶JAR應(yīng)用程序包。結(jié)合Docker、Kubernetes的聲明式部署和調(diào)度能力,輕松運(yùn)行微服務(wù)。同樣,Sring Cloud以應(yīng)用程序內(nèi)的包裝庫的形式來支持彈性伸縮,微服務(wù)容錯(cuò)使用Hystrixbulkhead和斷路器模式)與Ribbon(負(fù)載均衡)。但這些是不夠的,當(dāng)組合Kubernetes健康檢查、程序重啟和自動(dòng)伸縮能力,微服務(wù)才真正變成一個(gè)強(qiáng)壯的系統(tǒng)。

優(yōu)缺點(diǎn)

Spring Cloud

Spring Cloud為開發(fā)者提供了快速構(gòu)建分布式系統(tǒng)中的一些常見模式的工具,例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,路由等。它是為Java開發(fā)人員使用,構(gòu)建在Netflix OSS庫之上的。

優(yōu)點(diǎn)

Spring Platform提供的統(tǒng)一編程模型和Spring Boot的快速應(yīng)用程序創(chuàng)建能力,為開發(fā)人員提供了很好的微服務(wù)開發(fā)體驗(yàn)。使用很少的注解,就可以創(chuàng)建一個(gè)配置服務(wù)器或獲得客戶端庫來配置您的服務(wù)。

豐富的庫支持,覆蓋大多數(shù)運(yùn)行時(shí)需求。Spring Cloud的所有庫均由JAVA編寫,提供多特性、高控制和易配置。

不同的Spring Cloud庫彼此完全兼容。例如,Feign客戶端還將使用Hystrix用于斷路器、Ribbon用于負(fù)載均衡請求。一切都是注解驅(qū)動(dòng)的,易于Java開發(fā)者開發(fā)。

缺點(diǎn)

僅使用JAVA,既是Spring Cloud的優(yōu)點(diǎn),也是一大缺陷。微服務(wù)架構(gòu)之所以吸引人,在于按需交換各種技術(shù)棧、庫,甚至語言的能力。這一點(diǎn),Spring Cloud做不到。如果你想使用Spring Cloud/Netflix OSS基礎(chǔ)設(shè)置服務(wù),例如配置管理、服務(wù)發(fā)現(xiàn)或者負(fù)載均衡,解決方案是不優(yōu)雅的。雖然Netflix Prana項(xiàng)目實(shí)現(xiàn)了sidecar模式,顯示基于Java客戶類庫越過HTTP,使得用non-JVM語言編寫的應(yīng)用程序存在于NetflixOSS生態(tài)系統(tǒng)變得可能,但它仍然不是很優(yōu)雅。

除了JAVA應(yīng)用程序,還有太多與開發(fā)無關(guān)的事情需要Java開發(fā)人員處理。每個(gè)微服務(wù)需要運(yùn)行各種客戶端以進(jìn)行配置檢索、服務(wù)發(fā)現(xiàn)和負(fù)載均衡。雖然很容易設(shè)置,但這并不會(huì)降低對環(huán)境的構(gòu)建時(shí)間和運(yùn)行的依賴性。例如,開發(fā)人員可以使用@EnableConfigServer創(chuàng)建一個(gè)配置服務(wù)器,但這只是開心的假象。每當(dāng)開發(fā)人員想要運(yùn)行單個(gè)微服務(wù)時(shí),他們需要啟動(dòng)并運(yùn)行Config Server。對于受控環(huán)境,開發(fā)人員必須考慮使Config Server高度可用,并且由于它可以由GitSVN支持,因此它們需要一個(gè)共享文件系統(tǒng)。同樣,對于服務(wù)發(fā)現(xiàn),開發(fā)人員也是需要首先啟動(dòng)Eureka服務(wù)器。為了創(chuàng)建一個(gè)受控的環(huán)境,他們需要在每個(gè)AZ上使用多個(gè)實(shí)例實(shí)現(xiàn)集群。可以說,開發(fā)人員除了實(shí)現(xiàn)所有功能外,還需要額外管理一個(gè)復(fù)雜的微服務(wù)平臺(tái)。

Spring Cloud目前在微服務(wù)方面覆蓋的面相對有限,開發(fā)人員還需要考慮自動(dòng)化部署、調(diào)度、資源管理、過程隔離、自我修復(fù)、構(gòu)建流水線等,以獲得完整的微服務(wù)體驗(yàn)。對于這點(diǎn),我認(rèn)為拿Spring CloudKubernetes比較是不公平的,應(yīng)該比較Spring Cloud + Cloud Foundry (or Docker Swarm)Kubernetes。但這也意味著對于一個(gè)完整的端到端微服務(wù)體驗(yàn),Spring Cloud必須補(bǔ)充一個(gè)像Kubernetes這樣的應(yīng)用程序平臺(tái)。

Kubernetes

Kubernetes是一個(gè)用于自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用程序的開源系統(tǒng)。支持多種語言并且提供用于支持、運(yùn)行、擴(kuò)展和管理分布式系統(tǒng)的操作系統(tǒng)。

優(yōu)點(diǎn)

Kubernetes是多語言且語言不敏感的容器管理平臺(tái),能夠運(yùn)行云原生和傳統(tǒng)的容器化應(yīng)用程序。Kubernetes提供的服務(wù)(如配置管理、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、測試指標(biāo)收集和日志聚合)可供各種語言使用。這意味著一個(gè)平臺(tái)可以被多個(gè)團(tuán)隊(duì)(包括使用SpringJava開發(fā)人員)使用,并提供多種用途:應(yīng)??用程序開發(fā)、測試環(huán)境、構(gòu)建環(huán)境(源碼運(yùn)行、構(gòu)建服務(wù)、依賴倉庫)等。

Spring Cloud相比,Kubernetes解決了更廣的微服務(wù)架構(gòu)問題。除了提供運(yùn)行時(shí)服務(wù),Kubernetes也可以讓你制定環(huán)境、設(shè)置資源限制、RBAC、管理應(yīng)用程序生命周期、允許自動(dòng)擴(kuò)容和自我修復(fù)(幾乎表現(xiàn)得像一個(gè)抗脆弱平臺(tái))。

Kubernetes技術(shù)基于Google十五年的研發(fā)和容器管理經(jīng)驗(yàn)。此外,Kubernetes有近1000個(gè)貢獻(xiàn)者,是Github上最活躍的開源社區(qū)之一。

缺點(diǎn)

Kubernetes是多語言的,因此它的服務(wù)是通用的,并不針對不同的平臺(tái)(如Spring Cloud for JVM)進(jìn)行優(yōu)化。例如,配置會(huì)作為環(huán)境變量傳遞給應(yīng)用程序或掛載的文件系統(tǒng)。它沒有像Spring Cloud Config提供的配置更新功能。

Kubernetes不是一個(gè)以開發(fā)者為中心的平臺(tái),更偏向于DevOps的IT人員使用。因此,Java開發(fā)人員需要學(xué)習(xí)一些新的概念,需要學(xué)習(xí)解決問題的新方法。盡管通過MiniKuber開始一個(gè)Kubernetes開發(fā)實(shí)例很簡單,但手動(dòng)安裝一個(gè)高可用的Kubernetes集群仍顯得有些復(fù)雜。

Kubernetes是一個(gè)相對較新的平臺(tái)(2歲),仍然在發(fā)展和成長,每個(gè)版本都添加了很多新功能,可能很難跟上。好消息是,這一點(diǎn)已經(jīng)被考慮到了,KubernetesAPI將是可擴(kuò)展和向后兼容的。

Spring Cloud和Kubernetes的最佳實(shí)踐

如你所見,Spring CloudKubernetes在核心領(lǐng)域都很強(qiáng),并且正在其他領(lǐng)域努力改進(jìn)。Spring Cloud可以快速使用,對開發(fā)者比較友好;而KubernetesDevOps的絕配,雖然學(xué)起來可能有點(diǎn)難,但是覆蓋了更廣泛的微服務(wù)技術(shù)要點(diǎn)。

Spring CloudKubernetes處理了不同范圍的微服務(wù)架構(gòu)技術(shù)點(diǎn),而且是用了不同的方法。Spring Cloud方法是試圖解決在JVM中的微服務(wù)架構(gòu)要點(diǎn),而Kubernetes方法是試圖讓問題消失,為開發(fā)者在平臺(tái)層解決。Spring CloudJVM中非常強(qiáng)大,Kubernetes管理那些JVM很強(qiáng)大??雌饋砀魅∷L,充分利用這兩者的優(yōu)勢是自然而然的趨勢了。

結(jié)合使用Spring CloudKubernetes,用Spring Cloud提供應(yīng)用程序打包,DockerKubernetes提供部署和調(diào)度;Spring通過Hystrix線程池提供應(yīng)用程序內(nèi)隔離,Kubernetes通過資源、進(jìn)程和命名空間隔離;Spring為每個(gè)微服務(wù)提供健康終端,Kubernetes執(zhí)行健康檢查并且為健康服務(wù)的通信提供路由;Spring外部化且升級(jí)配置,Kubernetes給每個(gè)微服務(wù)分配配置......這樣的例子還有很多。

作者:Bilgin Ibryam
原文:https://dzone.com/articles/deploying-microservices-spring-cloud-vs-kubernetes
搬運(yùn):好雨科技
為方便閱讀原文略有刪改

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/32522.html

相關(guān)文章

  • 服務(wù)架構(gòu):引領(lǐng)數(shù)字化轉(zhuǎn)型的基石

    摘要:然而,敏銳的已經(jīng)意識(shí)到,德邦快遞率先引入的微服務(wù)架構(gòu),正在成為企業(yè)數(shù)字化轉(zhuǎn)型升級(jí)戰(zhàn)略成功的基石,成為企業(yè)引領(lǐng)行業(yè)創(chuàng)新的秘密武器。 2018年雙11,中國網(wǎng)民釋放出來超過2000億元的購買力,給快遞公司帶來了新的一輪考驗(yàn)。剛剛從大件快遞切入快遞市場的德邦快遞,卻無驚無險(xiǎn)地完成了客戶的托付。信任德邦快遞的店主和買家并不知道,在這戰(zhàn)績背后,德邦快遞投入了每年5億元的數(shù)字化建設(shè)成本,并采用了先...

    wayneli 評(píng)論0 收藏0
  • 阿里啟動(dòng)新項(xiàng)目:Nacos,比 Eureka 更強(qiáng)!

    摘要:服務(wù)實(shí)例在啟動(dòng)時(shí)注冊到服務(wù)注冊表,并在關(guān)閉時(shí)注銷。配置變更是調(diào)整系統(tǒng)運(yùn)行時(shí)的行為的有效手段之一。相對于來說,更強(qiáng)大。通過和實(shí)現(xiàn)配置的動(dòng)態(tài)變更。通過和實(shí)現(xiàn)服務(wù)的注冊與發(fā)現(xiàn)。 showImg(https://segmentfault.com/img/remote/1460000017759710?w=841&h=339); 什么是 Nacos? Nacos 是阿里巴巴推出來的一個(gè)新開源項(xiàng)目...

    zzbo 評(píng)論0 收藏0
  • 服務(wù)遷移之路 | Spring Cloud向Service Mesh轉(zhuǎn)變

    摘要:服務(wù)網(wǎng)關(guān)服務(wù)網(wǎng)關(guān)涵蓋的功能包括路由,鑒權(quán),限流,熔斷,降級(jí)等對入站請求的統(tǒng)一攔截處理。具體可以進(jìn)一步劃分為外部網(wǎng)關(guān)面向互聯(lián)網(wǎng)和內(nèi)部網(wǎng)關(guān)面向服務(wù)內(nèi)部管理。應(yīng)用服務(wù)應(yīng)用服務(wù)是企業(yè)業(yè)務(wù)核心。到此實(shí)際上已經(jīng)完成服務(wù)遷移工作。 導(dǎo)讀 Spring Cloud基于Spring Boot開發(fā),提供一套完整的微服務(wù)解決方案,具體包括服務(wù)注冊與發(fā)現(xiàn),配置中心,全鏈路監(jiān)控,API...

    rickchen 評(píng)論0 收藏0
  • 2021 年最新基于 Spring Cloud服務(wù)架構(gòu)分析

    摘要:是一個(gè)相對比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對比較新的微服務(wù)框架,...

    cikenerd 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<