Light-4J 是一個尖端的 Java 框架,它透過結合敏捷性和效能徹底改變了開發。它採用現代開發範例,符合微服務原則並滿足當今動態軟體架構的需求。
在本教程中,我們將深入探討其核心理念、關鍵功能和架構概念。我們將剖析是什麼讓它變得輕量級,以及這種質量如何轉化為提高的開發速度和資源效率。
最後,我們將透過生成一個現成的 RESTful API 專案來揭示它如何滿足當代的開發需求。
Light-4J是什麼?
Light 平臺提供了各種定製的框架,用於根據合同規範開發不同的 API 樣式或微服務。Light-4J 是 Light 平臺的一部分,旨在構建具有不同選項的雲原生 Web 應用程式和 API。
它是面向 Java 開發人員的尖端開源微服務框架,旨在簡化可擴充套件、輕量級微服務架構的開發和部署。 Light-4J 注重簡單性、效率和最佳效能,使開發人員能夠構建強大的模組化應用程式,從而無縫地適應現代軟體開發的需求。
Light-4J 的重要特徵之一是透過在其框架中嵌入閘道器來優先解決雲原生服務中的橫切問題。該閘道器無縫管理請求/響應鏈的各個方面。這些功能被封裝到外掛或中介軟體處理程式中,並在伺服器初始化期間透過控制反轉 (IoC) 服務整合到框架中。
重要的是,開發人員可以透過配置靈活地啟用、禁用或修改這些外掛的行為。這種設計理念使開發人員能夠專注於編寫業務邏輯,從而消除管理橫切關注點的複雜性。
開發人員可以快速構建應用程式原型、迭代和部署應用程式,從而提高響應不斷變化的需求和市場需求的敏捷性。此外,Light-4J透過每秒滿足數百萬個請求來降低生產運營成本。這會降低記憶體消耗並加快執行速度,這對於最佳化應用程式效能至關重要。
Light-4J的特點
讓我們來看看Light-4J的核心特性:
- 微服務架構: Light-4J 的架構考慮了微服務,允許開發人員輕鬆構建、部署和管理獨立且可擴充套件的微服務,從而提高靈活性、敏捷性和更輕鬆的維護。
- 非同步和非阻塞通訊:它利用非同步和非阻塞通訊模式。這會提高響應能力,因為該框架可以有效處理併發請求,使其適合具有高併發要求的應用程式。
- 分散式資料管理:與整體架構不同,Light-4J 提倡分散式資料管理方法。每個微服務都管理自己的資料,從而可以靈活地選擇適合特定服務需求的資料儲存解決方案。
- 高效能和低延遲: Light-4J 專為高效能和低延遲而設計。透過利用非同步處理和簡約設計,它可確保更快的響應時間,滿足現代應用程式對速度和效率的期望。
- 效能最佳化技術: Light-4J 提供強大的快取策略來提高應用程式速度和效率。此外,該框架還包括負載平衡功能,確保應用程式可以無縫擴充套件以滿足不斷增長的需求。
- 安全中介軟體:無縫整合安全中介軟體,實現穩健的身份驗證和授權,確保微服務和敏感資料的保護。此外,它還提供用於有效日誌記錄和監控的中介軟體,提供對應用程式行為和效能的洞察。
- 定製能力: Light-4J具有強大的外掛系統,使開發人員能夠擴充套件其功能。這種模組化有助於定製,允許整合根據特定專案要求定製的附加功能或第三方外掛。
- 全面的文件和社群支援:它還擁有全面的文件、教程和學習路徑。開發人員可以訪問豐富的資源,幫助他們瞭解框架、實施最佳實踐並解決問題。
- 社群:此外,Light-4J 受益於充滿活力和活躍的開發者社群。參與該社群為使用該框架的開發人員提供了寶貴的見解、支援和協作機會。
設計原則
- Light-4J 遵循多項設計原則,這些原則塑造了其開發並有助於其作為微服務框架的有效性。這些設計原則使 Light-4J 能夠為用 Java 構建微服務提供輕量級、高效且靈活的平臺。讓我們看看指導 Light-4J 開發的一些關鍵設計原則。
- Light-4J 專為滿足微服務架構的需求而設計。因此,它必須同時在幾個關鍵領域表現出色。其中包括實現高吞吐量以有效處理大量請求,保持低延遲以確保快速響應時間,以及輕量級以最大限度地減少資源消耗。
- 此外,Light-4J 有效解決了微服務固有的各種橫切問題,例如路由、安全、日誌記錄和監控,同時保持最佳效能。這種多方面的方法對於使用 Light-4J 無縫開發和部署基於微服務的應用程式至關重要。
- Light-4J 的基礎是JBoss Undertow HTTP 伺服器,以其穩健性和效率而聞名。透過利用這一基礎,它繼承了Undertow的可靠性和效能優勢,進一步增強了其處理 HTTP 請求和響應的能力。
- 此外,Light-4J 最大限度地減少了對第三方庫的依賴,堅持簡約的方法,增強了穩定性、安全性和易於維護性。
使用 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生成器或從示例專案開始。
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 git@github.com:networknt/light-codegen.git
同樣,我們可以將model-config儲存庫(程式碼生成工具的配置專案)克隆到baseDir中:
$ git clone git@github.com: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 (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 框架的分步指南。
從示例專案開始
light-example-4j儲存庫包含基於 Light-4J 框架的各種功能的各種示例 API。我們可以使用它們在 Light-4J 之上構建和開發我們自己的框架。
我們可以直接將light-example-4J儲存庫從 GitHub 克隆到我們的本地計算機:
$ git clone git@github.com: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 框架的各個元件。