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