最熱門的 10 個 Java 微服務框架

1、Spring Boot

Java 構建 Spring 應用程序已經有很長一段時間了,Spring Boot 是 Spring 的一個特定版本,它通過對配置細節的處理,使微服務構建更加簡便。創建 Spring Boot 旨在自啓動任何類型的 Spring 項目,而不僅僅是微服務。應用程序完成後,Spring Boot 將在 web 服務器中混合,並輸出一個 JAR 文件,JVM 除外。你可以將其視爲原始 Docker 容器。這也是許多負責構建微服務的開發者都非常喜歡 Spring Boot 的原因。

使用 Spring 開發微服務遵循與 Web 應用相同的 MVC 理念。該框架享有多年 Java 開發中建立的所有深度連接,包括所有主要和次要數據存儲、LDAP 服務器和 Apache Kafka 等消息傳遞工具的集成。還有許多用於維護運行服務器集合的小特性,比如 Spring Vault,這是一種用於維護生產環境中服務器所需的密碼的工具。所有這些優點都說明了爲什麼 Java 程序員多年來一直喜歡 Spring Boot 的原因。
在這裏插入圖片描述

2、Eclipse MicroProfile

2016 年,Java Enterprise 社區決定清理 Java Enterprise Edition 中的內容,以便人們可以使用經典部件構建簡單的微服務。他們去除了大量的庫,但保留了處理 REST 請求,解析 JSON 和管理依賴注入的功能代碼,最終被稱爲 Eclipse MicroProfile,其特性爲快速而簡單。

從那以後,MicroProfile 社區制定了一個協議,每季度發佈一個新版本,同時添加新代碼以保持微服務平穩安全地運行。任何 Java EE 開發者都會非常熟悉開發過程和代碼結構,而且還吧配置麻煩給省去了。
在這裏插入圖片描述

3、Dropwizard

當 Dropwizard 在 2011 年出現時,Dropwizard 框架爲開發者提供了一個非常簡單的模型,裏面包含了許多重要的模塊,你可以根據需求添加一些業務邏輯,或者配置其他內容,最後你會發現 JAR 文件非常小,並且能夠快速啓動。

Dropwizard 最大的限制可能是缺乏依賴注入。如果你希望使用依賴項注入來保持代碼的整潔和鬆散耦合,則需要自己添加庫,這點和 Spring 不同,但是現在 Dropwizard 也支持大多數功能,包括日誌記錄、健康檢查和提供彈性代碼。
在這裏插入圖片描述
4、WildFly Thorntail

Red Hat 的工作人員使用一個靈活的配置工具構建了他們自己的 MicroProfile 版本。該框架最初被稱爲 WildFly Swarm,但後來被重新命名爲 WildFly Thorntail,Thorntail 通過指定所需的特性來幫助您創建自己的 Maven 構建文件,然後 Maven 負責組裝所有東西。

Thorntail 還將通過掃描代碼來檢測組件,也可以使用 BOM(材料清單) 文件覆蓋。當它全部運行時,Thorntail 將刪除 Java Enterprise Edition 中不使用的部分,並創建一個很小的 JAR 文件,可以使用一個命令進行部署——這是一個非常巧妙的特性,允許 Thorntail 項目將其稱爲 Uber-JAR。這是遵循 Java Enterprise Edition 的另一種傳統方法,它不會保留所有沉重的負擔。

5、Helidon

Helidon 去除了 Java Enterprise Edition,保留輕量級的、基於 servlet 的核心,並吸引了大量的粉絲。在 Helidon 的,開發人員從 Netty,並添加代碼進行路由和錯誤處理。它採用了代碼的兩個基本模型,即所謂的 SE 和 MP 版本。

Node 開發者可能更熟悉 Helidon SE,因爲其具有由句點連接的函數調用。使用 JAX-RS 的 Java 程序員則更熟悉 Helidon MP。此外,Helidon 還集成了一些備受好評的工具,這些都是它能夠吸引大量開發者的原因。
在這裏插入圖片描述
6、Cricket

另外一個用於快速 API 開發框架的是 Cricket。Cricket 很小,儘管它包括許多額外的功能,如鍵值數據存儲,以避免連接數據庫和調度程序來控制後臺重複處理。沒有添加複雜性或其他依賴項,因此很容易將代碼添加到 Cricket 並啓動獨立的微服務。

7、Jersey

開發 web 服務的標準方法之一是 RESTful web 服務的 Java API(又名 JAX-RS),這是 Jersey 框架中實現的通用規範。這種方法主要依賴於使用註釋來指定路徑映射和返回細節。從參數解析到 JSON 打包的所有其他內容都由 Jersey 處理。

Jersey 的主要優點是它實現了 JAX-RS 標準,這個特性非常受歡迎,一些開發人員習慣將 Jersey 與 Spring Boot 結合在一起使用。

8、Play

體驗 JVM 跨語言能力的最佳方式之一是使用 Play 框架,這是可以與 Java 或任何其他 JVM 語言兼容的。它的基礎非常現代,具有異步、無狀態的模型,不會讓試圖跟蹤用戶及其會話數據的線程使服務器過載。還有許多額外的特性可以用來充實網站,比如 OpenID、驗證和文件上傳支持。

Play 代碼庫已經發展了十多年,因此你還會發現類似於對 XML 的支持的這種古老的功能。play 既成熟又輕盈,這種組合還是比較有特色的。
在這裏插入圖片描述
9、Swagger

構建一個 API 看起來就像編寫一個監聽端口的代碼一樣簡單,但是 Swagger 的開發人員不這麼認爲。他們已經創建了一個完整的 API 規範語言 OpenAPI,你可以使用它來說明你的 API。這似乎是一個額外的步驟,但是 Swagger 團隊還提供了將該規範轉換爲自動化測試、文檔等的代碼。

Swagger 配置文件中的 API 很簡單,用於實現接口、記錄接口的,並提供一組工具來測試構建在其下的代碼,甚至還有一種 API 治理機制。

Swagger 是一個 api 生態系統,它不侷限於 Java。如果你的團隊遷移到 Node.js 或其他幾十種語言中的任何一種,都有一個 Swagger Codegen 模塊將 OpenAPI 規範轉換成該語言的實現。
在這裏插入圖片描述
10、Restlet

不同框架之間最大的區別之一是和其他服務或庫的連接數量。Restlet 項目提供了更大的特性和連接集合,它已經與 JavaMail 之類的庫集成,避免微服務需要對某些郵件服務器使用 POP、IMAP 或 SMTP;爲防構建大量文本索引和元數據,還集成了 Lucene 和 Solr。

Restlet 中還有很多特性在持續開發。例如,你不需要使用 JSON,因爲它可以直接處理 XML、CSV、YAML 和其他一些文件格式,此外,它還允許用戶從 Chrome 瀏覽器測試 api。
在這裏插入圖片描述


“不積跬步,無以至千里”,希望未來的你能:有夢爲馬 隨處可棲!加油,少年!

關注公衆號:「Java 知己」,每天更新Java知識哦,期待你的到來!

  • 發送「Group」,與 10 萬程序員一起進步。
  • 發送「面試」,領取BATJ面試資料、面試視頻攻略。
  • 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。
  • 千萬不要發送「1024」…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章