多租户低代码 SaaS 平台架构白皮书

第一部分:跨端低代码 DSL Schema 规范

1. 设计目标

  • 平台无关(Vue / 小程序 / 未来端)
  • 不依赖具体 UI 组件库
  • 不包含 DOM 概念
  • 声明式 UI DSL
  • 可版本演进

2. 顶层结构

ts 复制代码
interface PageSchema {
  dslVersion: string
  meta: MetaSchema
  state?: Record<string, any>
  computed?: Record<string, ExpressionSchema>
  root: NodeSchema
}

3. MetaSchema

ts 复制代码
interface MetaSchema {
  id: string
  code: string
  name: string
  version: string
  tenantId?: string
  platform?: 'all' | 'web' | 'mp'
}

4. NodeSchema

ts 复制代码
interface NodeSchema {
  id: string
  component: string
  props?: Record<string, any>
  model?: { path: string }
  children?: NodeSchema[]
  style?: StyleSchema
  visible?: ExpressionSchema
  disabled?: ExpressionSchema
  readonly?: ExpressionSchema
  events?: EventSchema
  permission?: PermissionSchema
  dataSource?: DataSourceSchema
  ext?: Record<string, any>
}

5. ExpressionSchema

ts 复制代码
interface ExpressionSchema {
  type: 'js' | 'logic'
  value: string
}

表达式上下文允许:

  • state
  • user
  • tenant
  • env
  • datasource

禁止访问:

  • window
  • document
  • eval
  • this

6. 权限模型

ts 复制代码
interface PermissionSchema {
  roles?: string[]
  codes?: string[]
  logic?: 'AND' | 'OR'
}

7. DataSource 结构

ts 复制代码
interface DataSourceSchema {
  type: 'static' | 'api'
  apiCode?: string
  config?: Record<string, any>
  cache?: {
    enabled: boolean
    ttl: number
  }
  transform?: ExpressionSchema
}

第二部分:DSL 示例

示例一:客户新增表单

json 复制代码
{
  "dslVersion": "1.0.0",
  "meta": {
    "id": "page_customer_create",
    "code": "customer_create",
    "name": "客户新增",
    "version": "1.0.0"
  },
  "state": {
    "form": {}
  },
  "root": {
    "id": "root",
    "component": "Form",
    "children": [
      {
        "id": "name",
        "component": "Input",
        "model": { "path": "form.name" },
        "props": { "label": "姓名" }
      },
      {
        "id": "submit",
        "component": "Button",
        "props": { "text": "提交" },
        "events": {
          "click": [
            {
              "type": "api",
              "config": {
                "url": "/api/customer/save",
                "method": "POST",
                "body": "{{state.form}}"
              }
            }
          ]
        }
      }
    ]
  }
}

示例二:条件显示

json 复制代码
{
  "id": "companyName",
  "component": "Input",
  "model": { "path": "form.companyName" },
  "visible": {
    "type": "js",
    "value": "state.form.type === 'company'"
  }
}

第三部分:多租户 SaaS 架构设计

一、总体架构图

复制代码
                      ┌──────────────┐
                      │     CDN      │
                      └──────┬───────┘
                             │
                ┌────────────▼────────────┐
                │       API Gateway        │
                │ 路由 / 认证 / 限流 / 灰度 │
                └────────────┬────────────┘
                             │
        ┌────────────────────▼────────────────────┐
        │           低代码 Runtime 集群            │
        │  DSL 引擎 | 表达式引擎 | 权限引擎 | 状态引擎 │
        └────────────────────┬────────────────────┘
                             │
        ┌────────────────────▼────────────────────┐
        │            平台管理后台                  │
        │  设计器 | API中心 | 版本管理 | 发布系统   │
        └────────────────────┬────────────────────┘
                             │
        ┌────────────────────▼────────────────────┐
        │               核心服务层                 │
        │ 租户管理 | 权限服务 | 数据模型 | 流程引擎 │
        └────────────────────┬────────────────────┘
                             │
        ┌────────────────────▼────────────────────┐
        │                数据层                    │
        │  Tenant DB | Redis | DSL存储 | 对象存储   │
        └──────────────────────────────────────────┘

二、多租户隔离模式

推荐:数据库独立模式

复制代码
Tenant_A → DB_A
Tenant_B → DB_B
Tenant_C → DB_C

优点:

  • 强隔离
  • 易扩展
  • 易迁移

第四部分:运行时微内核架构

复制代码
core-runtime
├── component-engine
├── expression-engine
├── permission-engine
├── state-engine
├── data-engine
└── plugin-loader

特性:

  • 插件可扩展
  • 可按行业定制
  • 可支持未来端扩展

第五部分:发布架构

支持:

  • 草稿版本
  • 审批发布
  • 灰度发布
  • 多环境(Dev/Test/Prod)

发布流程:

复制代码
设计器 → 提交版本 → 审批 → 生成快照 → 推送 Runtime

第六部分:高并发优化

  • DSL 预编译缓存
  • 表达式 AST 缓存
  • Redis 二级缓存
  • API 结果缓存
  • 多 Runtime 水平扩展
  • Kubernetes 弹性伸缩

第七部分:企业级能力清单

能力 必须性


多租户隔离 必须

DSL 签名防篡改 必须

审计日志 必须

灰度发布 必须

API 注册中心 必须

在线调试 必须

插件系统 推荐

多环境发布 必须


总结

企业级多租户低代码 SaaS 平台的核心:

微内核运行时 + DSL 驱动 + 强隔离租户 + 可插拔插件架构 + 发布治理体系

该架构可支撑:

  • 百万级租户
  • 日亿级请求
  • 多端统一渲染
  • 行业级扩展能力
相关推荐
fake_ss1987 小时前
AI时代学习全栈项目开发的新范式
java·人工智能·学习·架构·个人开发·学习方法
米高梅狮子8 小时前
第2章 docker容器
运维·docker·云原生·容器·架构·kubernetes·自动化
微学AI10 小时前
Hermes Agent vs Claude Code 架构对比与创新分析
架构
沪漂阿龙10 小时前
面试题详解:检索链路设计全攻略——RAG 检索架构、查询理解、多路召回、混合检索、Rerank、上下文构造与评估闭环
大数据·人工智能·架构
码云之上11 小时前
万星入坞·其二:子应用如何优雅地"入坞"
性能优化·架构·前端框架
Apache RocketMQ11 小时前
RocketMQ 源码解析——Controller 高可用切换架构
架构·rocketmq·java-rocketmq
数字化顾问11 小时前
(122页PPT)数字化架构的演进和治理(附下载方式)
java·运维·架构
Jeking21711 小时前
低代码平台表单设计器unione form editor组件介绍--多行输入组件
低代码·动态表单·表单设计·表单引擎·unione cloud
悟乙己12 小时前
构建金融级 AI Agent:Claude for Financial Services 架构解析
人工智能·金融·架构
摘星编程12 小时前
从“单兵作战“到“团队协作“——解析 JiuwenSwarm 的 Team Agent 多智能体架构
架构