更新時間:2022-04-18 10:54:14 來源:動力節(jié)點 瀏覽1658次
支持Java微服務(wù)的框架有哪些?動力節(jié)點小編來告訴大家。
經(jīng)典的 Java EE,現(xiàn)在是 Jakarta EE (JEE),用于構(gòu)建應(yīng)用程序的方法是面向單體應(yīng)用的。傳統(tǒng)上,使用 Java EE 構(gòu)建的企業(yè)應(yīng)用程序?qū)⒈淮虬絾蝹€ EAR(企業(yè)存檔)部署單元中,其中包括 WAR(Web 存檔)模塊和 JAR(Java 存檔)文件。
盡管沒有任何技術(shù)限制排除將 JEE 用于微服務(wù)架構(gòu),但存在大量開銷成本。每個服務(wù)都需要打包為一個獨立的單元,這意味著它應(yīng)該部署在自己的單獨 JEE 服務(wù)器中。這可能意味著部署數(shù)十甚至數(shù)百個應(yīng)用程序服務(wù)器來支持典型的企業(yè)應(yīng)用程序。
幸運的是,社區(qū)很早就注意到標(biāo)準(zhǔn) JEE 并沒有解決微服務(wù)引入的新構(gòu)建挑戰(zhàn)。自 2016 年以來,已經(jīng)啟動了許多額外的開源項目來支持在 JEE 中構(gòu)建的微服務(wù)。
Eclipse MicroProfile是一組不斷增長的基于 JEE 技術(shù)的 API。它是用于構(gòu)建企業(yè) Java 微服務(wù)的操作系統(tǒng)社區(qū)規(guī)范,得到了業(yè)內(nèi)一些知名人士的支持,包括甲骨文、紅帽和 IBM。
底線:沒有理由不能將 Java EE 用于微服務(wù),但它沒有解決運行多個個性化服務(wù)的操作方面的問題。對于那些想要將現(xiàn)有的單體 JEE 應(yīng)用程序遷移到微服務(wù)的人來說,有很多基于 JEE 技術(shù)的“附加”工具可以滿足您的需求。
Spring 是用于構(gòu)建 Java 應(yīng)用程序的最流行的框架之一,并且與 Java/Jakarta EE 一樣,它也可用于構(gòu)建微服務(wù)。正如他們所說,“[微服務(wù)]在流程級別執(zhí)行 Spring 一直在組件級別執(zhí)行的操作。”
盡管如此,在 Spring 框架上啟動并運行具有微服務(wù)架構(gòu)的應(yīng)用程序并不是最直接的過程……您需要使用 Spring Cloud(大量利用 Spring Boot)、幾個 Netflix OSS 項目,最后還有一些 Spring “配置魔法”。
底線:Spring 非常適合微服務(wù)的開發(fā),以及圍繞運營角度的外部開源項目提供的產(chǎn)品。但這并不意味著它會很容易。
Lightbend 為我們提供了另一種選擇。繼續(xù)使用相同的主題,Lagom 使用 Play 和 Akka 圍繞 Lightbend 堆棧進行封裝,以提供一種更簡單的方式來構(gòu)建微服務(wù)。他們的重點不僅是為那些轉(zhuǎn)向微服務(wù)的人提供一個簡單的解決方案,而且要確保這些微服務(wù)易于擴展和反應(yīng)。
Lightbend 的首席技術(shù)官兼聯(lián)合創(chuàng)始人 Jonas Bonér 在 2015 年接受InfoQ 采訪時說:
“大多數(shù)微服務(wù)框架都專注于讓構(gòu)建單個微服務(wù)變得容易——這是最容易的部分。Lagom 將其擴展到微服務(wù)系統(tǒng)、大型系統(tǒng)——這是困難的部分,因為在這里我們面臨著分布式系統(tǒng)的復(fù)雜性。”
底線:Lagom 采用 Lightbend 的功能并在一個框架中利用它們,該框架專為構(gòu)建可在大型部署中有效擴展的反應(yīng)式微服務(wù)而設(shè)計。他們的重點不僅在于單個微服務(wù),還在于整個系統(tǒng)。
與我們在這篇文章中看到的其他框架不同,Dropwizard是一個 Java 框架,用于開發(fā)操作友好、高性能、RESTful Web 服務(wù)。一個自以為是的 Java 集合,使構(gòu)建生產(chǎn)就緒的 Java 應(yīng)用程序變得更加容易。
Dropwizard Modules允許掛接Dropwizard 核心不附帶的其他項目,還有社區(qū)開發(fā)的模塊可以掛接Netflix Eureka 等項目,類似于Spring Cloud。
底線:由于 Dropwizard 是一個社區(qū)項目,沒有得到 Spring 和 Pivotal、Java EE 和 Oracle、Lagom 和 Lightbend 等大公司的支持,因此它的開發(fā)可能會慢一些,但它背后有一個強大的社區(qū),它是一個不錯的選擇為大型公司和小型項目提供框架。
除了我們在這里提到的 4 大玩家之外,還有很多其他項目值得一提,也可以用于編寫微服務(wù):
Vertx也隸屬于 Eclipse Foundation,是一個用于在 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ù)器框架。它專為部署在 Kubernetes 集群上而設(shè)計,因此用戶能夠使用原生 Kubernetes API 服務(wù)器和網(wǎng)關(guān)。
其他框架包括 Spark、Ninja 和 Jodd、Restlet和Bootique.io。
底線:Java 微服務(wù)的競爭環(huán)境相當(dāng)大,值得一試的小玩家和行業(yè)巨頭一樣多。
相關(guān)閱讀