多租户低代码 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 驱动 + 强隔离租户 + 可插拔插件架构 + 发布治理体系

该架构可支撑:

  • 百万级租户
  • 日亿级请求
  • 多端统一渲染
  • 行业级扩展能力
相关推荐
葡萄城技术团队2 小时前
从 Shortcut 的爆火,看 AI 时代电子表格的技术底座与架构演进
人工智能·架构
两万五千个小时3 小时前
构建mini Claude Code:12 - 从「文件冲突」到「分身协作」:Worktree 如何让多 Agent 安全并行
人工智能·python·架构
一拳不是超人4 小时前
从“必选项”到“性能包袱”:为什么现代框架开始“抛弃”虚拟 DOM?
前端·javascript·架构
云器科技4 小时前
从“数据中台“到“数智基建“:一树药业的湖仓架构升级实践
大数据·架构·湖仓平台
爱学习的大牛1235 小时前
GPU架构学习
学习·架构·gpu
生成论实验室5 小时前
即事经智能:一种基于生成易算的通用智能新范式(书)
人工智能·神经网络·算法·架构·信息与通信
知识即是力量ol6 小时前
微服务架构:从入门到进阶完全指南
java·spring cloud·微服务·nacos·架构·gateway·feign
2501_926978336 小时前
思想波与引力共振理论:统一物理主义意识框架的革命性探索--AGI理论系统基础12
人工智能·经验分享·架构·langchain·agi
天若有情6736 小时前
IoC不止Spring!求同vs存异,两种反向IoC的核心逻辑
java·c++·后端·算法·spring·架构·ioc