對(duì)于處理大量技術(shù)債務(wù)的團(tuán)隊(duì)來說,微服務(wù)帶來更大的靈活性和更容易的可擴(kuò)展性。更小的代碼庫更容易理解,而且有了清晰的服務(wù)分離,整個(gè)體系結(jié)構(gòu)更加“干凈”。想學(xué)習(xí)java工具的同學(xué)不妨報(bào)個(gè)Java培訓(xùn)班,可以節(jié)省學(xué)習(xí)時(shí)間,提高學(xué)習(xí)效率,在短時(shí)間內(nèi)學(xué)有所成,還能找到一份不錯(cuò)的工作。
我們將介紹一些最流行的構(gòu)建微服務(wù)的框架,包括傳統(tǒng)的和容器專用的。
1.用于微服務(wù)的雅加達(dá)EE/JavaEE
經(jīng)典的JavaEE,現(xiàn)在的JakartaEE(JEE),用于構(gòu)建應(yīng)用程序的方法是面向單體的。傳統(tǒng)上,使用JavaEE構(gòu)建的企業(yè)應(yīng)用程序?qū)⒈淮虬揭粋€(gè)單獨(dú)的EAR(企業(yè)檔案)部署單元中,該部署單元包括WAR(Web檔案)模塊和JAR(Java檔案)文件。
盡管沒有任何技術(shù)限制排除將JEE用于微服務(wù)架構(gòu),但仍存在巨大的開銷成本。每個(gè)服務(wù)都需要打包為一個(gè)獨(dú)立的單元,這意味著它應(yīng)該部署在自己的JEE服務(wù)器中。這可能意味著部署數(shù)十個(gè)甚至數(shù)百個(gè)應(yīng)用程序服務(wù)器來支持一個(gè)典型的企業(yè)應(yīng)用程序。
幸運(yùn)的是,社區(qū)很早就注意到標(biāo)準(zhǔn)JEE并沒有解決微服務(wù)引入的新構(gòu)建挑戰(zhàn)。自2016年以來,已經(jīng)啟動(dòng)了許多額外的開源項(xiàng)目來支持JEE中構(gòu)建的微服務(wù)。想學(xué)習(xí)java工具的同學(xué)不妨報(bào)個(gè)Java培訓(xùn)班,可以節(jié)省學(xué)習(xí)時(shí)間,提高學(xué)習(xí)效率,在短時(shí)間內(nèi)學(xué)有所成,還能找到一份不錯(cuò)的工作。
EclipseMicroProfile是一組不斷增長的基于JEE技術(shù)的API。這是一個(gè)用于構(gòu)建企業(yè)Java微服務(wù)的操作系統(tǒng)社區(qū)規(guī)范,得到了包括Oracle、RedHat和IBM在內(nèi)的一些業(yè)內(nèi)知名公司的支持。
2.Spring(SpringBoot和SpringCloud)
Spring是構(gòu)建Java應(yīng)用程序最流行的框架之一,與Java/JartaEE一樣,它也可以用于構(gòu)建微服務(wù)。
盡管如此,讓一個(gè)具有微服務(wù)架構(gòu)的應(yīng)用程序在Spring框架上運(yùn)行并不是最簡單的過程,你需要使用SpringCloud(大量利用SpringBoot)、幾個(gè)NetflixOSS項(xiàng)目,最后還需要一些Spring的“配置魔法”。
3.Lagom(Lightbend)
Lightbend為我們提供了另一種選擇。Lagom在Lightbend堆棧中加入Play和Akka,為構(gòu)建微服務(wù)提供了一種更簡單的方法。他們的重點(diǎn)不僅是為那些轉(zhuǎn)向微服務(wù)的人提供一個(gè)簡單的解決方案,還確保這些微服務(wù)易于擴(kuò)展和響應(yīng)。通過java培訓(xùn)的學(xué)習(xí),你可以學(xué)到很多企業(yè)級(jí)項(xiàng)目經(jīng)驗(yàn)和技能,找到工作后,可以立馬上崗實(shí)操,大大提高開發(fā)效率。
Lagom利用Lightbend的功能,并在一個(gè)框架中利用它們,該框架專門用于構(gòu)建可在大型部署中有效擴(kuò)展的響應(yīng)式微服務(wù)。他們不僅關(guān)注單個(gè)微服務(wù),還關(guān)注整個(gè)系統(tǒng)。
4.Dropwizard
Dropwizard是一個(gè)用于開發(fā)操作友好、高性能、RESTfulweb服務(wù)的Java框架。Dropwizard模塊允許連接Dropwizards核心之外的其他項(xiàng)目,還有一些由社區(qū)開發(fā)的模塊可以連接類似于SpringCloud的NetflixEureka等項(xiàng)目。
由于Dropwizard是一個(gè)社區(qū)項(xiàng)目,沒有像Spring和Pivotal、JavaEE和Oracle、Lagom和Lightbend這樣的大公司支持,它的開發(fā)可能會(huì)較慢,但它背后有一個(gè)強(qiáng)大的社區(qū),它是大公司和小項(xiàng)目的首選框架。
5.Vertx、SpotifyApollo、Kubless和其他“特定于微服務(wù)”的框架
除了我們?cè)谶@里提到的4個(gè)大項(xiàng)目外,還有很多其他項(xiàng)目值得一提,也可以用于編寫微服務(wù):
Vertx也是Eclipse基金會(huì)的一個(gè)工具包,用于在JVM上構(gòu)建反應(yīng)式應(yīng)用程序。有些人可能會(huì)認(rèn)為它應(yīng)該在四巨頭中占有一席之地。在java培訓(xùn)中,培訓(xùn)課程不僅注重理論,更注重項(xiàng)目的實(shí)戰(zhàn)能力,能夠讓你快速適應(yīng)企業(yè)開發(fā)的進(jìn)度,成為企業(yè)所需要的Java人才。
SpotifyApollo是一組Java庫,用于Spotify編寫Java微服務(wù)。Apollo包括HTTP服務(wù)器和URI路由系統(tǒng)等功能,使得實(shí)現(xiàn)RESTful服務(wù)變得很簡單。
Kubless是一個(gè)Kubernetes原生的無服務(wù)器框架。它是專門為部署在Kubernetes集群上而設(shè)計(jì)的,因此用戶可以使用本地KubernetesAPI服務(wù)器和網(wǎng)關(guān)。
其他框架包括Spark、Ninja和Jodd、Restlet和Bootique.io。
Java微服務(wù)領(lǐng)域非常大,值得關(guān)注的小參與者和行業(yè)巨頭一樣多。
總結(jié)
無論你使用哪種框架或平臺(tái),構(gòu)建微服務(wù)都不會(huì)與它們緊密耦合。成功實(shí)施微服務(wù)架構(gòu)并不止于應(yīng)用程序本身。圍繞它的大部分成本來自所謂的開發(fā)運(yùn)維流程、監(jiān)控、CI/CD、記錄更改、服務(wù)器配置以及為生產(chǎn)中的應(yīng)用程序提供持續(xù)支持所需的更多成本。如果想快速掌握java,參加Java培訓(xùn)就是個(gè)不錯(cuò)的選擇,有明確清晰的學(xué)習(xí)路線和經(jīng)驗(yàn)豐富的專業(yè)講師面授指導(dǎo)教學(xué),讓學(xué)習(xí)更科學(xué),更有效。