基座架构

了解 JSaas 基座平台的整体架构设计、核心组件及其协作方式。

整体架构

JSaas 采用分层化的基座架构,由底座平台统一管理多租户、认证、授权、日志、 消息等通用能力,各业务模块以插件形式接入,实现标准化与灵活性的平衡。

┌─────────────────────────────────────────────────┐
│                   JSaas 基座平台                    │
├─────────────────────────────────────────────────┤
│  统一入口层 (Gateway)                               │
│  ┌──────────┬──────────┬──────────┬──────────┐  │
│  │ 租户路由  │ 负载均衡  │ 限流熔断  │ 协议转换  │  │
│  └──────────┴──────────┴──────────┴──────────┘  │
├─────────────────────────────────────────────────┤
│  核心服务层 (Core Services)                        │
│  ┌────────┬────────┬────────┬────────────────┐  │
│  │ 认证服务 │ 授权服务 │ 租户管理 │ 配置中心       │  │
│  ├────────┼────────┼────────┼────────────────┤  │
│  │ 消息队列 │ 日志追踪 │ 任务调度 │ 文件存储       │  │
│  └────────┴────────┴────────┴────────────────┘  │
├─────────────────────────────────────────────────┤
│  模块加载层 (Module Loader)                        │
│  ┌──────────┬──────────┬──────────┬──────────┐  │
│  │ 模块注册  │ 依赖注入  │ 生命周期  │ 版本管理  │  │
│  └──────────┴──────────┴──────────┴──────────┘  │
├─────────────────────────────────────────────────┤
│  基础设施层 (Infrastructure)                       │
│  ┌────────┬────────┬────────┬────────────────┐  │
│  │ MySQL   │ Redis   │ Nacos   │ MinIO          │  │
│  └────────┴────────┴────────┴────────────────┘  │
└─────────────────────────────────────────────────┘

基座各层之间通过标准化的 Java SPI 接口通信,模块开发者只需实现规定的接口即可接入平台, 无需关心底层实现细节。

多租户机制

JSaas 支持三种多租户隔离策略,满足不同场景下的数据安全和性能需求:

共享数据库 / 共享 Schema

所有租户共用同一数据库和表结构,通过 tenant_id 字段隔离数据。适合中小规模租户,资源利用率最高。

sql
-- 每条业务数据自动注入租户标识
CREATE TABLE orders (
  id BIGINT PRIMARY KEY,
  tenant_id VARCHAR(32) NOT NULL,  -- 租户隔离字段
  order_no VARCHAR(64),
  amount DECIMAL(10,2),
  INDEX idx_tenant (tenant_id)
);

共享数据库 / 独立 Schema

每个租户拥有独立的 Schema,数据隔离性更强,适合对数据安全有较高要求的场景。 基座会根据当前租户自动切换 Schema。

独立数据库

每个租户分配完全独立的数据库实例,物理隔离级别最高,适合金融、医疗等强合规场景。 基座通过动态数据源路由实现无感切换。

权限认证

基座内置统一的认证与授权体系,模块无需重复开发登录和权限功能:

1

JWT Token 认证

基座签发 JWT Token,包含租户ID、用户ID和角色信息,模块通过标准 Filter 拦截校验。

2

RBAC 权限模型

角色-权限-资源的标准化模型,模块只需声明自身资源,权限分配由基座统一管控。

3

单点登录 (SSO)

支持 OAuth 2.0 / SAML 协议,可集成企业已有的身份认证系统。

模块内的 API 接口如需鉴权,只需在 Controller 上添加 @RequireAuth 注解即可,基座会自动完成 Token 校验和权限拦截,无需手动编写鉴权代码。

数据隔离

在代码层面,开发者可以通过注解或 API 轻松实现租户级别的数据隔离:

java
// 方式一:注解声明租户上下文
@TenantAware
@GetMapping("/orders")
public List<Order> listOrders() {
    // 基座自动注入当前租户ID,查询结果自动过滤
    return orderService.findAll();
}

// 方式二:手动获取租户上下文
String tenantId = TenantContextHolder.getTenantId();
List<Order> orders = orderRepository.findByTenantId(tenantId);