wso2~apim~carbon-apimgt的介绍
WSO2 API Manager(APIM)的 product-apim
项目是一个集成型代码仓库,负责将底层组件组合为完整产品。其核心子项目及架构组成如下:
🔧 一、核心组件仓库:carbon-apimgt
仓库地址:github.com/wso2/carbon-apimgt
功能:提供 API 管理的核心逻辑实现,以 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
仓库地址:github.com/wso2/product-apim
功能:整合 carbon-apimgt
及其他依赖,生成可部署产品。关键子项目包括:
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 https://github.com/wso2/carbon-apimgt.git cd carbon-apimgt && mvn clean install git clone -b v1.10.0 https://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 管理能力的灵活定制与高效交付。开发时需严格遵循版本匹配与构建顺序,确保组件兼容性。