wso2~apim~carbon-apimgt的介紹
WSO2 API Manager(APIM)的 product-apim 項目(mu)是一個(ge)集成型(xing)代碼(ma)倉庫(ku),負責將底層(ceng)組件組合為完整(zheng)產品。其核心子項目(mu)及(ji)架(jia)構組成如下:
?? 一、核心組件倉庫:carbon-apimgt
倉庫地址:
功能:提供 API 管理(li)的(de)核心邏輯實現,以 OSGi 模塊形式組織。主要子模塊包括:
apimgt/implementation- 網關流量處理(鑒權、限流、統計)
- API 發布/訂閱流程實現
- 密鑰管理服務(OAuth2、JWT)
apimgt/integration- 與第三方系統(Keycloak、LDAP)的適配器
- 事件驅動擴展(如 Kafka 事件源)
apimgt/features- 功能集打包(如
org.wso2.carbon.apimgt.store.feature對應開發者門戶)
- 功能集打包(如
apimgt/hostobjects- JavaScript 擴展對象(用于策略腳本等定制)
apimgt/stubs- Web Service 客戶端存根(如 Admin API 調用)
?? 二、產品集成倉庫:product-apim
倉庫地址:
功能:整合 carbon-apimgt 及(ji)其他依(yi)賴,生(sheng)成可部署產品(pin)。關(guan)鍵子項目(mu)包括:
distribution- 產品打包邏輯(生成
wso2am-<version>.zip) - 包含啟動腳本、默認配置及依賴庫
- 產品打包邏輯(生成
modules- 功能模塊化組件(如
api-import-export工具) - 擴展點實現(如自定義序列化器)
- 功能模塊化組件(如
features- 產品級功能包(如
apim-store-feature對應開發者門戶) - 依賴管理(聲明所需
carbon-apimgt版本)
- 產品級功能包(如
samples- 示例配置與插件(如 OIDC 身份提供者集成)
?? 三、構建流程與依賴關系
-
構建順序
- 先編譯
carbon-apimgt→ 生成組件 JAR 包并安裝到本地 Maven 倉庫 - 再編譯
product-apim→ 引用本地倉庫中的組件,打包完整產品
git clone -b v5.0.3 //github.com/wso2/carbon-apimgt.git cd carbon-apimgt && mvn clean install git clone -b v1.10.0 //github.com/wso2/product-apim.git cd product-apim && mvn clean install - 先編譯
-
版本對應規則
APIM 版本 carbon-apimgt 版本 備注 APIM 1.10.0 v5.0.3 需嚴格匹配標簽 APIM 1.9.1 v1.9.1 歷史版本維護分支 -
熱更新限制
修改carbon-apimgt代碼后,需重新構建并更新本地 Maven 倉庫,否則product-apim仍用舊組件。
??? 四、定制開發指南
- 修改核心邏輯
- 在
carbon-apimgt中修改代碼(如org.wso2.carbon.apimgt.hostobjects) - 執行
mvn clean install更新本地倉庫 - 重建
product-apim以包含新組件
- 在
- 新增產品級功能
- 在
product-apim/modules下添加新模塊 - 通過 POM 聲明依賴并注冊為 OSGi 服務
- 在
- 配置覆蓋
- 定制默認配置:修改
product-apim/distribution/src/resources/conf中的文件(如deployment.toml)
- 定制默認配置:修改
?? 五、架構優勢與設計理念
- 模塊解耦:核心功能(
carbon-apimgt)與產品集成(product-apim)分離,便于復用。 - 熱插拔特性:通過 OSGi 動態加載功能包(如新增認證協議支持)。
- 可擴展性:
samples目錄提供插件開發模板,支持自定義網關策略或存儲層。
?? 六、常見問題解決
- 修改未生效 → 確保
carbon-apimgt版本與product-apim要求的版本一致,并重新構建本地依賴。 - 構建失敗 → 檢查網絡是否可訪問 WSO2 Nexus 倉庫(部分依賴需從私有庫下載)。
- 證書動態更新 → 在集群中需將信任庫掛載為持久化卷,避免 Pod 重啟重置。
總結:子項目協作流程
graph LR
A[carbon-apimgt] -- 提供核心組件 JAR --> B[product-apim]
B -- 整合打包 --> C[可部署產品 ZIP]
C -- 運行 --> D{API 網關<br>開發者門戶<br>管理控制臺}
通過此架構,WSO2 實現了 API 管理能力的靈活定制與高效交付。開發時需嚴格遵循版本匹配與構建順序,確保組件兼容性。