# G2rain Infra

License Java (opens new window) Spring Boot (opens new window) Spring Cloud (opens new window) Maven (opens new window)

g2rain-infra 是 G2rain 平台的基础设施与运行支撑模块,负责承载字典、国际化、区域与语言、路由元数据、分布式 ID 支撑等平台级公共能力,并与 Nacos、Redis 等基础设施协同,服务于平台核心模块、业务域模块与前端支撑应用的统一接入。

本项目由 谷雨开源 SaaS 平台(G2rain) 团队维护,基于 Apache License 2.0 开源发布。


# 1. 徽标与状态标识

  • 平台定位:基础设施与运行支撑模块
  • 仓库类型:平台核心模块
  • 当前状态:稳定版本

# 2. 项目简介

g2rain-infra 不是面向单一业务域的服务,而是为整个平台提供“高复用、强平台属性”的公共支撑能力。

它主要解决以下问题:

  • 平台通用基础数据能力不应散落在多个服务中重复实现
  • 国际化、区域与语言、路由元数据等能力需要统一治理
  • 分布式 ID 与通用支撑逻辑需要稳定的统一承载
  • 公共配置、同步与基础设施协同不应耦合在具体业务模块中

在 G2rain 整体体系中,g2rain-infrag2rain-basisg2rain-iam 一起构成平台核心层的重要组成部分。


# 3. 平台定位

在 G2rain“企业级 AI 原生开源 SaaS 平台”体系中,g2rain-infra 位于平台核心层,承担的是“平台公共支撑能力与运行侧基础服务”的统一承载职责。

它关注的不是某个具体业务场景的页面或流程,而是:

  • 哪些能力会被多个模块共同依赖
  • 哪些通用基础数据应统一建模和管理
  • 哪些运行支撑能力需要与配置中心、缓存、同步机制联动
  • 哪些平台级公共服务应沉淀为稳定的基础设施模块

# 4. 核心能力

# 4.1 字典与基础数据能力

提供平台级字典及其使用关系管理能力,适用于多个模块共享的标准化数据定义场景。

典型价值:

  • 避免各业务模块重复维护相同字典
  • 统一字典查询与使用关系管理
  • 为平台前后端统一枚举和基础数据展示提供支撑

# 4.2 国际化与语言区域能力

提供多语言文案、语言区域(Locale)与相关使用关系管理能力。

典型价值:

  • 支撑平台国际化扩展
  • 支撑前端页面与后端文案的一致管理
  • 为多语言租户或多区域交付提供基础能力

# 4.3 路由元数据能力

集中维护路由定义类元数据,供网关或业务侧消费。

典型价值:

  • 统一管理路由配置
  • 为入口治理与服务协同提供元数据基础
  • 降低路由规则分散在多个模块中的维护成本

# 4.4 分布式 ID 支撑能力

承载与号段、雪花等分布式 ID 策略相关的支撑逻辑。

典型价值:

  • 保证平台中通用 ID 能力有统一落点
  • 避免不同模块各自实现 ID 逻辑
  • 支持后续业务扩展中的统一编号体系

# 4.5 运行与配置协同能力

围绕平台运行时依赖形成统一支撑,包括:

  • Nacos 服务发现与动态配置
  • Redis 缓存与同步协同
  • Spring Cloud Stream 消息通道支撑
  • 公共配置外部化

典型价值:

  • 平台运行侧能力统一化
  • 公共配置与同步机制集中管理
  • 降低业务模块直接处理基础设施集成细节的复杂度

# 5. 核心能力结构说明

从平台视角看,g2rain-infra 承接的是“多个模块都要用,但不应散落实现”的能力。

可以把它理解为三类能力集合:

# 5.1 平台公共基础数据集合

  • 字典
  • 国际化文案
  • 区域与语言
  • 路由元数据

这一类能力强调统一数据定义、统一维护与统一消费。

# 5.2 平台运行支撑集合

  • 配置中心协同
  • 缓存协同
  • 消息同步协同
  • 健康检查与运行暴露能力

这一类能力强调平台运行期的一致性与可治理性。

# 5.3 通用支撑策略集合

  • 分布式 ID
  • 公共基础设施接入约定
  • 平台公共逻辑沉淀

这一类能力强调为后续模块扩展提供稳定基础。


# 6. 关键支撑流程

# 6.1 公共基础数据统一承载流程

  1. 平台定义字典、国际化、区域、语言、路由等公共基础数据
  2. g2rain-infra 统一承载这些数据的存储、查询与管理能力
  3. 平台核心模块、业务域模块与前端应用按需消费这些能力
  4. 形成统一的数据支撑底座

# 6.2 运行配置协同流程

  1. 平台运行时从 Nacos 加载外部化配置
  2. g2rain-infra 依赖统一配置完成运行支撑能力初始化
  3. 通过 Redis、消息通道等机制配合同步或缓存场景
  4. 为其他模块提供稳定的公共支撑服务

# 6.3 平台公共能力复用流程

  1. 新模块建设时识别公共支撑需求
  2. 若能力具有平台复用价值,则沉淀到 g2rain-infra
  3. 平台其他模块直接复用,而不是重复实现
  4. 形成平台统一基础设施能力闭环

# 7. 工程结构

g2rain-infra/
├── g2rain-infra-api/       # 对外契约层:API 接口、DTO/VO、枚举、错误码等
├── g2rain-infra-biz/       # 业务实现层:Controller、Service、DAO、MyBatis Mapper
└── g2rain-infra-startup/   # 启动层:Spring Boot 入口、全局配置、OpenAPI 等

# 7.1 g2rain-infra-api

负责定义对外契约,适合作为其他模块依赖的接口层与共享对象层。

# 7.2 g2rain-infra-biz

负责具体业务实现,承接控制器、服务、持久化与能力编排逻辑。

# 7.3 g2rain-infra-startup

负责应用启动、运行配置、OpenAPI 暴露与整体服务装配。


# 8. 技术栈

类别 说明
运行时 Java 25
框架 Spring Boot 4.0.x、Spring Cloud 2025.1.x、Spring Cloud Alibaba (Nacos)
持久化 MyBatis、MySQL
缓存 / 消息 Redis、Spring Cloud Stream(Redis Binder)
其他 MapStruct、Lombok、springdoc-openapi

# 9. 与其他模块的关系

# 9.1 与 g2rain-basis

g2rain-basis 负责平台基础控制与交付能力,g2rain-infra 负责平台公共支撑能力。

两者关系可以理解为:

  • g2rain-basis 更偏平台治理与控制
  • g2rain-infra 更偏平台支撑与运行基础

# 9.2 与 g2rain-infra-app

g2rain-infra-app 是前端侧对应的支撑应用,负责为部分基础设施与平台支撑场景提供交互界面。

# 9.3 与 g2rain-deploy

g2rain-infra 会纳入标准部署与交付体系,是平台整体运行环境中的组成部分。

# 9.4 与业务域模块

业务域模块可以直接消费 g2rain-infra 提供的公共能力,而无需在各自模块内部重复实现字典、国际化、区域语言或通用支撑逻辑。


# 10. 环境要求

  • JDK 25
  • Apache Maven 3.9+
  • MySQL
  • Redis
  • Nacos

# 11. 快速开始

# 11.1 克隆仓库

git clone https://github.com/g2rain/g2rain-infra.git
cd g2rain-infra

# 11.2 编译

mvn clean package -DskipTests

# 11.3 运行

java -jar g2rain-infra-startup/target/g2rain-infra-startup-*.jar

或:

cd g2rain-infra-startup
mvn spring-boot:run

# 12. 配置说明

常见配置项包括:

  • SERVER_PORT
  • SPRING_PROFILES_ACTIVE
  • NACOS_SERVER_ADDR
  • SPRING_CLOUD_NACOS_*

建议优先通过环境变量或安全配置中心管理敏感配置。


# 13. 容器镜像

g2rain-infra-startup 集成了 Jib,可用于构建容器镜像。

mvn -pl g2rain-infra-startup -am compile jib:build

# 14. 典型使用场景

  • 平台字典能力统一承载
  • 多语言与区域语言配置支撑
  • 路由元数据统一管理
  • 分布式 ID 相关支撑能力建设
  • 平台运行配置与同步机制协同
  • 业务模块公共基础能力复用

# 15. 贡献指南

欢迎通过 Issue 和 Pull Request 参与改进。

建议在提交前完成本地编译与必要验证:

mvn clean verify

# 16. 许可证

本项目基于 Apache 2.0许可证 开源。


# 17. 联系我们