TOP 13 大最熱開源微服務 Java 框架

碼頭工人 5年前發布 | 13K 次閱讀 Java 開源 微服務 Java開發

本文列舉了 13 大可在 JVM 上構建可靠輕量級微服務的 Java 框架

經過長期發展,Java 最終在服務器領域找到一席之地,不同芯片架構和操作系統對“一次編寫,到處運行”的承諾很感興趣。與此同時,JavaScript 一直在挑戰 Java 的地位,前者因為高吞吐量和速度快接管了大批網絡流量。Node.js 不僅提高了速度和資源效率,還簡化了客戶端和服務器運行代碼的復雜度。

盡管競爭激烈,許多負責微服務架構開發的團隊依舊在繼續使用 Java,這可能有多方面原因,比如 Java 經過多年測試,Sun 創建了穩定的虛擬機,Oracle 大力培養和支持,用戶使用習慣等。

本文列舉了 Java 開發人員正在使用的 13 大開源項目,這些框架構成各地微服務架構基礎。

Spring Boot

Java 一直在構建 Spring 應用程序,Spring Boot 是 Spring 的特定版本,通過對配置細節進行處理,Spring Boot 可以自動化微服務配置過程,其創建是為了自啟動所有類型 Spring 項目,而不僅僅是微服務。一旦應用程序完成,Spring Boot 會混合在 Web 服務器中,并發出 JAR 文件,可以想象成原始 Docker 容器。

使用 Spring 開發微服務遵循與 Web 應用相同的 MVC 理念。該框架享有多年 Java 開發所構建的深層連接,包括所有主要和次要數據存儲,LDAP 服務器以及 Apache Kafka 等消息傳遞工具集成,眾多維護運行服務器集合的小功能,比如 Spring Vault,維護生產服務器所需密碼等。

Eclipse MicroProfile

2016 年,Java Enterprise 社區決定清除 Java Enterprise Edition 中的部分內容,以便用戶可使用經典部件構建簡單微服務。在去掉大量庫之后,社區保留了處理 REST 請求、解析 JSON 和管理依賴注入等功能,最終版本被稱為 Eclipse MicroProfile,其特點是快速且簡單。

從那時起,MicroProfile 社區就制定了一個協議,“每季度發布一次新版本,同時添加新代碼以保持微服務平穩安全運行”。對于使用 Java EE 的人來說,開發過程和代碼結構將非常熟悉,但無休止的配置麻煩已被去除。

Dropwizard

2011 年,Dropwizard 問世并開啟 Java Enterprise 開發人員的視野,其提供非常簡單的開發模型,用戶可添加業務邏輯,并根據慣例配置其他內容。整個 JAR 文件非常苗條,并且可以快速啟動。

Dropwizard 的最大限制可能是缺乏依賴注入,如果想使用依賴注入保持代碼干凈和松散耦合,用戶需要自己添加庫。與 Spring 不同,沒有 Dropwizard 方法可以做到這一點。但是,Dropwizard 支持大多數功能,比如日志記錄、健康檢查和提供彈性代碼。

WildFly Thorntail

Red Hat 用戶使用靈活的配置工具構建 MicroProfile 版本,該框架最初被稱為 WildFly Swarm,隨后被重命名為 Thorntail。只需在 Thorntail 上指定需要功能,用戶即可創建 Maven 構建文件,然后由 Maven 負責組裝一切。

Thorntail 通過掃描代碼檢測主要組件,也可使用 BOM 文件覆蓋。全部運行時,Thorntail 將刪除不被使用的 Java 企業版并創建小型 JAR 文件,可以使用命令部署。這是另一種遵循 Java 企業版傳統方法,而不保留沉重包袱的框架。

Helidon

Helidon 架構剔除了 Java Enterprise Edition,保留基于 servlet 的輕量級核心。在 Helidon 中,開發人員可使用 Netty 并添加代碼進行路由和錯誤處理。它采用兩種基本代碼模型,即 SE 和 MP 版本。

Node.js 程序員會對 Helidon SE 非常熟悉,因為其具有由句點連接的長鏈函數調用。對于使用 JAX-RS 的 Java 程序員而言,Helidon MP 看起來會很熟悉,Helidon 集成了一些備受好評的工具,用于檢查服務器運行狀況或通過微服務跟蹤數據流。

Cricket

Cricket 是一個快速 API 開發框架,雖然小,但包含相對豐富的功能,比如鍵值數據存儲,以節省連接數據庫和調度程序,控制重復的后臺處理。沒有其他依賴項增加復雜性或鎖定,因此將代碼添加到 Cricket 并啟動獨立微服務非常容易。

Jersey

開發 Web 服務的標準之一是用于 RESTful Web 服務的 Java API(又名 JAX-RS),這是一個已在 Jersey 框架中實現的通用規范。該方法在很大程度上取決于使用注釋來指定路徑映射和返回詳細信息。解析參數和打包 JSON 其他內容,Jersey 均可處理。

Jersey 的主要優點是實現 JAX-RS 標準,部分開發人員也會將 Jersey 和 Spring Boot 結合在一起使用。

Play

體驗 JVM 跨語言功能的最佳方式之一是用 Play 框架,這是與 Java 或其他 JVM 語言鏈接的 Scala 代碼。該代碼非常現代,具有異步、無狀態模型等,不會使服務器過載,沒有無休止的線程試圖跟蹤用戶及會話數據。Play 有一些額外功能可用于充實網站,比如 OpenID、驗證和文件上傳支持。

Swagger

構建 API 可能看起來像編寫偵聽端口并提供答案的代碼一樣簡單,但 Swagger 開發人員不會同意此說法。他們創建了名為 OpenAPI 的完整 API 規范語言,Swagger 團隊提供將此規范轉換為自動化測試和文檔等的代碼。

Swagger 配置文件對 API 非常簡單,可用于實現并記錄接口行為,提供工具測試在其下構建的代碼,此外,提供 API 治理機制。Swagger 是 API 的生態系統,并且不局限于 Java。如果團隊轉移到 Node.js 或其他語言,則會有 Swagger Codegen 模塊等待將 OpenAPI 規范轉換為該語言的實現。

Restlet

框架之間的較大差異之一是與其他服務和庫之間的連接數。Restlet 是可提供最大功能和連接集合的項目之一。為防微服務對郵件服務器接收 POP,IMAP 或者 SMTP, Restlet 集成了 JavaMail 庫;為防構建大量文本索引和元數據,Restlet 集成了 Lucene 和 Solr。

Restlet 不需要使用 JSON,因為代碼可以處理 XML、CSV、YAML 等多種文件格式,還可獲得用于構建響應模板的多個不同選項。此外,Restlet 客戶端允許在 Chrome 瀏覽器測試 API。

Squash

因為部件松散耦合且很難跟蹤通過系統所有層的數據流,因此調試微服務一直是個難題。Squash 允許在 Kubernetes 集群運行代碼中設置斷點,在 IDE 接收所有數據,就好像本地運行代碼一樣。Squash 還集成了 Node.js 和 Python 運行時,以防微服務集合沒有使用 Java 代碼。

Telepresence

Telepresence 是另一個調試選擇,可為遠程 Kubernetes 集群微服務創建本地代理,對此服務的調用將轉移到本地,可以在其中設置斷點或執行本地計算機上可進行的任何操作。

Zipkin

Zipkin 用于在微服務上記錄并關聯事件,以便在問題通過機器集合時進行隔離和研究。Zipkin 有 Java 等至少六種語言實現版本,因此可處理多語言系統。不少框架已經通過某種形式集成 Zipkin,比如 Spring。

參考鏈接:

https://www.infoworld.com/article/3329944/java/13-java-frameworks-for-rock-solid-microservices.html

 

來自:https://www.infoq.cn/article/9_FjqSgeSfkGFIV290j7?utm_source=tuicool&utm_medium=referral

 本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!