Light-4J簡介
一、簡介
傳統框架雖然強大,但經常引入挑戰敏捷性的複雜性。現代開發所需的框架不僅強大而且靈活。包括Light-4J在內的輕量級框架採用簡約的設計理念。他們專注於提供基本功能,避免不必要的複雜性,從而縮短開發人員的學習曲線並優先考慮快速的開發週期。
Light-4J 是一個尖端的 Java 框架,它透過結合敏捷性和效能徹底改變了開發。它採用現代開發範例,符合微服務原則並滿足當今動態軟體架構的需求。
在本教程中,我們將深入探討其核心理念、關鍵功能和架構概念。我們將剖析是什麼讓它變得輕量級,以及這種品質如何轉化為提高的開發速度和資源效率。
最後,我們將透過產生現成的 RESTful API 專案來揭示它如何滿足當代的開發需求。
2. Light-4J是什麼?
Light 平台提供了各種客製化的框架,用於根據合約規格開發不同的 API 樣式或微服務。 Light-4J 是 Light 平台的一部分,旨在建立具有不同選項的雲端原生 Web 應用程式和 API。
它是針對 Java 開發人員的尖端開源微服務框架,旨在簡化可擴展、輕量級微服務架構的開發和部署。 Light-4J 專注於簡單性、效率和最佳效能,使開發人員能夠建立強大的模組化應用程序,從而無縫地適應現代軟體開發的需求。
Light-4J 的重要特徵之一是透過在其框架中嵌入網關來優先解決雲端原生服務中的橫切問題。此網關無縫管理請求/回應鏈的各個方面。這些功能被封裝到插件或中間件處理程序中,並在伺服器初始化期間透過控制反轉 (IoC) 服務整合到框架中。
重要的是,開發人員可以透過配置靈活地啟用、停用或修改這些插件的行為。這種設計理念使開發人員能夠專注於編寫業務邏輯,從而消除管理橫切關注點的複雜性。
開發人員可以快速建立應用程式原型、迭代和部署應用程序,從而提高響應不斷變化的需求和市場需求的敏捷性。此外,Light-4J透過每秒滿足數百萬個請求來降低生產營運成本。這會降低記憶體消耗並加快執行速度,這對於優化應用程式效能至關重要。
3. Light-4J的特點
讓我們來看看 Light-4J 的核心特性:
- 微服務架構: Light-4J 的架構考慮了微服務,讓開發人員輕鬆建置、部署和管理獨立且可擴展的微服務,從而提高靈活性、敏捷性和更輕鬆的維護。
- 非同步和非阻塞通訊:它利用非同步和非阻塞通訊模式。這會提高回應能力,因為該框架可以有效處理並發請求,使其適合具有高並發要求的應用程式。
- 分散式資料管理:與整體架構不同,Light-4J 提倡分散式資料管理方法。每個微服務都管理自己的數據,從而可以靈活地選擇適合特定服務需求的數據儲存解決方案。
- 高效能和低延遲: Light-4J 專為高效能和低延遲而設計。透過利用非同步處理和簡約設計,它可確保更快的回應時間,滿足現代應用程式對速度和效率的期望。
- 效能優化技術: Light-4J 提供強大的快取策略來提高應用程式速度和效率。此外,該框架還包括負載平衡功能,確保應用程式可以無縫擴展以滿足不斷增長的需求。
- 安全中間件:無縫整合安全中間件,實現穩健的身份驗證和授權,確保微服務和敏感資料的保護。此外,它還提供用於有效日誌記錄和監控的中間件,提供對應用程式行為和效能的洞察。
- 客製化能力: Light-4J具有強大的插件系統,使開發人員能夠擴展其功能。這種模組化有助於定制,允許整合根據特定項目要求定制的附加功能或第三方插件。
- 全面的文件和社群支援:它還擁有全面的文件、教學和學習路徑。開發人員可以存取豐富的資源,幫助他們了解框架、實施最佳實踐並解決問題。
- 社群:此外,Light-4J 受益於充滿活力和活躍的開發者社群。參與該社群為使用該框架的開發人員提供了寶貴的見解、支持和協作機會。
4. 設計原則
Light-4J 遵循多項設計原則,這些原則塑造了其發展並有助於其作為微服務框架的有效性。這些設計原則使 Light-4J 能夠為用 Java 建構微服務提供輕量級、高效且靈活的平台。讓我們來看看指導 Light-4J 開發的一些關鍵設計原則。
Light-4J 專為滿足微服務架構的需求而設計。因此,它必須同時在幾個關鍵領域表現出色。其中包括實現高吞吐量以有效處理大量請求,保持低延遲以確保快速回應時間,以及輕量級以最大限度地減少資源消耗。
此外, Light-4J 有效解決了微服務固有的各種橫切問題,例如路由、安全性、日誌和監控,同時保持最佳效能。這種多方面的方法對於使用 Light-4J 無縫開發和部署基於微服務的應用程式至關重要。
Light-4J 的基礎是 JBoss Undertow HTTP 伺服器,以其穩健性和效率而聞名。透過利用這一基礎,它繼承了Undertow的可靠性和效能優勢,進一步增強了其處理 HTTP 請求和回應的能力。
此外,Light-4J 最大限度地減少了對第三方函式庫的依賴,堅持簡約的方法,增強了穩定性、安全性和易於維護性。
4.1.設計優先的方法
Light-4J 從根本上採用設計優先的方法,在實際實施之前優先考慮和定義 API 合約和規格。透過採用設計優先的方法,Light-4J 鼓勵我們預先精心規劃和記錄 API 所需的功能和行為。這涉及利用行業標準規範(例如 OpenAPI 或 AsyncAPI)以機器可讀的格式定義 API 合約。
這些規範可作為 API 的藍圖,詳細說明其端點、請求和回應負載、身份驗證要求以及其他相關資訊。此外,它還促進參與開發過程的不同利害關係人之間的協作和協調。
此外,設計優先的方法有助於根據 API 規格自動產生程式碼和文件。這簡化了開發過程,因為開發人員可以使用 Light-4J 程式碼產生器等工具來建立初始專案結構,為 API 端點產生樣板程式碼,並從 API 合約自動產生 API 文件。我們將在接下來的部分中詳細了解這一點。
4.2.安全第一的方法
Light-4J 也將安全性作為其設計理念的基礎,採用「安全第一」的方法。這確保了基於該框架構建的應用程式得到強有力的保護,免受潛在威脅和漏洞的影響。此方法的核心是用於身份驗證和授權的 OAuth2 協定的無縫整合。這使得我們的應用程式能夠輕鬆實現安全身份驗證和授權機制。
此外, Light-4J 利用其嵌入式分散式閘道來促進跨服務網路的 OAuth2 令牌的分散式驗證。分散式閘道器充當集中式身分驗證和授權中心,攔截傳入請求並在允許存取受保護資源之前驗證 OAuth2 令牌。這種分散式令牌驗證方法可確保微服務架構中所有服務的安全實施一致且可靠。
5. 使用 Light-4J 設定我們的開發環境
建立強大的開發環境是利用 Light-4J 功能進行微服務開發的關鍵一步。此流程包括安裝和配置框架、定義符合最佳實踐的專案結構,以及將 Light-4J 無縫整合到我們的工作流程中。
Light-4J 與 Java 相容。 Light-4J v1.5.x 和v1.6.x 版本已可投入生產,並依賴Java 8,而v2.0.x 則基於Java 11 建置。因此,在我們的電腦上安裝JDK 8 或JDK 11 就可以了Light-4J 所必需的。
要開始使用 Light-4J,我們有兩個選項:使用light-codegen
產生器或從範例專案開始。
5.1.使用light-codegen
產生器
我們可以使用light-codegen
工具來促進 Light 中所有可用框架的專案鷹架。它由Rocker模板引擎提供支持,既可以作為實用程序,也可以作為專案鷹架的 Web 服務。它鼓勵用戶在編碼之前創建服務合約規範,然後根據設計的規範建立專案。我們可以透過多種方式使用它,包括命令列、Docker、腳本和 Web UI。
讓我們了解如何使用該生成器使用 Light-4J 和 OpenAPI 3.0 建立基本的 REST API 專案。
首先,讓我們建立一個基本目錄並在其中導航:
$ mkdir baseDir
$ cd baseDir
首先,我們可以將light-codegen
儲存庫克隆到baseDir
:
$ git clone [email protected]:networknt/light-codegen.git
同樣,我們可以將model-config
儲存庫(程式碼產生工具的設定專案)克隆到baseDir
:
$ git clone [email protected]:networknt/model-config.git
此專案包含light-rest-4j
、 light-hybrid-4j-server
、 light-hybrid-4j-service
和light-graphql-4j
等框架的模型定義和設定檔。
接下來,我們需要切換到light-codegen
目錄並建立專案:
$ cd light-codegen
$ mvn install -DskipTests
建置完成後,我們可以返回baseDir
。然後,我們可以執行 CLI 工具,產生基於 OpenAPI 3.0 規範的範例PetStore
REST API 專案。新產生的項目將包含用於暫存請求回應鏈的設定檔:
$ java -jar light-codegen/codegen-cli/target/codegen-cli.jar \
-f openapi \
-o light-example-4j/Rest/openAPI/petstore \
-m model-config/rest/openapi/petstore/1.0.0/openapi.yaml \
-c model-config/rest/openapi/petstore/1.0.0/config.json
讓我們來分解一下這些參數和選項的意思:
- -f (framework) – 生成器的 REST 框架規格類型
- -o(輸出)-生成專案的目標目錄
- -m(模型) – IDL 規範,包含每個 REST API 的請求和回應格式
- -c (config) – 設定文件,提供 HTTP 連接埠、套件和要產生的項目名稱等詳細信息
因此,成功執行上述指令後,我們將在baseDir
的新light-example-4j
資料夾中產生新的petstore
專案:
..... A project has been generated successfully in light-example-4j/Rest/openAPI/petstore folder. Have fun!!!
最後,我們可以切換到新產生的light-example-4j
中的petstore
目錄,並啟動專案以存取其 REST API:
$ cd light-example-4j/Rest/openAPI/petstore
$ mvn install exec:exec
這將在 8443 連接埠上啟動 HTTPS 伺服器。因此,我們可以透過存取 API 來驗證 REST 服務是否已啟動:
https://127.0.0.1:8443/v1/pets
這將列印所有寵物:
[{"id":1,"name":"catten","tag":"cat"},{"id":2,"name":"doggy","tag":"dog"}]
我們也可以透過其 id 存取特定寵物:
https://127.0.0.1:8443/v1/pets/1
這將簡單地返回:
{"id":1,"name":"catten","tag":"cat"}
因此,我們可以根據需要輕鬆操作現成的配置和規範,並在 Light-4J 之上開發我們的框架。
在本地產生腳手架專案的另一種方法是透過 Java 命令列呼叫light-codegen
。我們可以從發布頁面下載codegen-cli.jar
,將其放入我們的工作目錄中,並透過命令列運行它。
最後,我們可以參考light-codegen
教學來取得開發各種其他 API 框架的逐步指南。
5.2.從範例專案開始
light-example-4j儲存庫包含基於 Light-4J 框架的各種功能的各種範例 API。我們可以使用它們在 Light-4J 之上建立和開發我們自己的框架。
我們可以直接將light-example-4J
儲存庫從 GitHub 複製到我們的本機電腦:
$ git clone [email protected]:networknt/light-example-4j.git
一旦我們克隆了儲存庫,我們就可以根據我們的用例選擇任何可用的項目。例如,要建立符合 OpenAPI 3.0 規範的 RESTful API,我們將變更到複製儲存庫中的下列目錄:
$ cd light-example-4j/rest/openapi
否則,我們也可以使用 Swagger 2.0 進行建置並啟動特定項目來存取其 REST API,如上所述:
$ cd light-example-4j/rest/swagger
同樣,我們可以根據需要開始使用許多其他可用的框架。
此外,我們還可以參考各種教程,根據我們的需求逐步解釋如何使用 Light 框架的各個元件。
六,結論
Light-4J 是一個專為微服務開發而設計的現代 Java 框架,強調敏捷性、效能和可擴展性。其輕量級設計理念確保了簡單性和效率,而其微服務架構則提高了靈活性和更易於維護。憑藉非同步通訊和安全第一方法等功能,Light-4J 使開發人員能夠無縫建立強大的應用程式。
在本文中,我們討論了 Light-4J 的各種功能和設計原則。我們也了解如何使用light-codegen
工具快速建立 REST API 專案。
隨著 Light-4J 的不斷發展,我們可以期待新的功能和增強功能,使其成為建立下一代微服務架構的首選。