在過去的五年中,隨著專門為支持新的微服務(wù)而構(gòu)建的技術(shù)的發(fā)展,該行業(yè)出現(xiàn)了爆炸式的發(fā)展。但這并不意味著它們最適合每個人的需要。事實上,與通常在考慮技術(shù)堆棧的情況下開發(fā)的Monolith不同,微服務(wù)體系結(jié)構(gòu)中的每個服務(wù)都可以使用基于其自身功能的不同框架構(gòu)建。我們將介紹一些最流行的構(gòu)建微服務(wù)的java框架——傳統(tǒng)框架和容器專用框架。想學(xué)習(xí)java技術(shù),建議考慮報名參加Java培訓(xùn),有明確的學(xué)習(xí)路線和全面系統(tǒng)的課程,能獲得較快提升。
1.用于微服務(wù)的Jakarta EE/Java EE
經(jīng)典的JavaEE(現(xiàn)在稱為Jakarta
EE(JEE))構(gòu)建應(yīng)用程序的方法是面向獨石的。傳統(tǒng)上,使用JavaEE構(gòu)建的企業(yè)應(yīng)用程序?qū)⒋虬絾蝹€EAR(企業(yè)存檔)部署單元中,其中包括WAR(Web存檔)模塊和JAR(Java存檔)文件。
盡管沒有任何技術(shù)限制排除在微服務(wù)體系結(jié)構(gòu)中使用JEE的可能性,但存在著巨大的間接成本。每個服務(wù)都需要打包為一個獨立的單元,這意味著它應(yīng)該部署在自己的JEE服務(wù)器中。這可能意味著部署幾十臺甚至數(shù)百臺應(yīng)用服務(wù)器來支持典型的企業(yè)應(yīng)用程序。
幸運的是,社區(qū)很早就注意到標(biāo)準JEE沒有解決微服務(wù)引入的新構(gòu)建挑戰(zhàn)。自2016年以來,許多額外的開源項目已經(jīng)開始支持JEE中構(gòu)建的微服務(wù)。
Eclipse
Micropofile是一組基于JEE技術(shù)的不斷增長的API。它是一個用于構(gòu)建企業(yè)Java微服務(wù)的操作系統(tǒng)社區(qū)規(guī)范,由業(yè)內(nèi)一些知名公司支持,包括Oracle、Red
Hat和IBM。
2.Spring (Spring Boot 和 Spring Cloud)
Spring是構(gòu)建Java應(yīng)用程序最流行的框架之一,與Java/Jakarta
EE一樣,它也可以用于構(gòu)建微服務(wù)。正如他們所說,“[微服務(wù)]在流程級別上做的事情,與Spring在組件級別上做的事情一樣?!蓖ㄟ^java培訓(xùn),你可以學(xué)習(xí)更多java工具,以提高java技能。
不過,要在Spring框架上啟動并運行具有微服務(wù)體系結(jié)構(gòu)的應(yīng)用程序,這并不是最簡單的過程……你需要使用Spring云(充分利用Spring引導(dǎo))、幾個Netflix
OSS項目,最后還要使用一些Spring“配置魔法”。
Spring為微服務(wù)的開發(fā)做好了充分的準備,并提供了一個圍繞外部開源項目的產(chǎn)品,以解決運營角度的問題。但這并不意味著這會很容易。
3.Lagom (Lightbend)
Lightbend為我們提供了另一種選擇。繼續(xù)使用相同的主題,Lagom在Lightbend
stack上包裹Play和Akka,以提供一種更簡單的方式構(gòu)建微服務(wù)。他們的重點不僅是為那些轉(zhuǎn)向微服務(wù)的人提供一個簡單的解決方案,而且要確保這些微服務(wù)易于擴展和響應(yīng)。
“大多數(shù)微服務(wù)框架都專注于簡化單個微服務(wù)的構(gòu)建——這是最簡單的部分。Lagom將其擴展到了微服務(wù)系統(tǒng)和大型系統(tǒng)——這是最困難的部分,因為我們面臨著分布式系統(tǒng)的復(fù)雜性?!?/span>
Lagom在一個框架中利用了Lightbend的功能,專門為構(gòu)建跨大型部署有效擴展的反應(yīng)式微服務(wù)而設(shè)計。他們不僅關(guān)注單個微服務(wù),而且關(guān)注整個系統(tǒng)。
4.Dropwizard
與本文中介紹的其他框架不同,Dropwizard是一個Java框架,用于開發(fā)操作友好、高性能、RESTful
web服務(wù)。一個固執(zhí)己見的Java庫集合,使構(gòu)建生產(chǎn)就緒的Java應(yīng)用程序變得更加容易。
Dropwizard模塊允許連接Dropwizard核心以外的其他項目,還有一些由社區(qū)開發(fā)的模塊用于連接Netflix
Eureka等項目,類似于Spring
Cloud。想要學(xué)習(xí)java更多知識和技能,在java培訓(xùn)中,也有很多關(guān)于java安全工具的學(xué)習(xí),理論知識+實踐項目,雙管齊下,學(xué)以致用,讓你深入淺出地學(xué)習(xí)java。
由于Dropwizard是一個社區(qū)項目,沒有像Spring和Pivotal、Java
EE和Oracle、Lagom和Lightbend這樣的大公司的支持,它的開發(fā)可能會慢一些,但它背后有一個強大的社區(qū),它是大公司和小項目的一個通用框架。
5.Vertx、Spotify Apollo、Kubeless和其他“特定于微服務(wù)”的框架
除了我們在這里提到的四大參與者之外,還有很多其他項目值得一提,也可以用于編寫微服務(wù):
Vertx也在Eclipse基金會的基礎(chǔ)上,是在JVM上構(gòu)建反應(yīng)式應(yīng)用程序的工具包。有人可能會說,它應(yīng)該在四巨頭中占有一席之地。
Spotify
Apollo是Spotify編寫Java微服務(wù)時使用的一組Java庫。Apollo包括HTTP服務(wù)器和URI路由系統(tǒng)等功能,這使得實現(xiàn)RESTful服務(wù)變得非常簡單。
Kubeless是Kubernetes原生的無服務(wù)器框架。它專門設(shè)計用于部署在Kubernetes群集上,因此用戶能夠使用本機Kubernetes
API服務(wù)器和網(wǎng)關(guān)。
其他框架包括Spark、Ninja和Jodd、Restlet和Bootique.io。
無論你使用哪個框架或平臺,構(gòu)建微服務(wù)都不會與它們緊密耦合。這是一種思維方式和體系結(jié)構(gòu)方法,最佳實踐(一如既往)是為應(yīng)用程序的獨特需求找到最佳選項。很多人都會選擇報java培訓(xùn)班學(xué)習(xí),可以更快速學(xué)到有用的知識和技能,節(jié)省很多時間和精力。