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

该架构可支撑:

  • 百万级租户
  • 日亿级请求
  • 多端统一渲染
  • 行业级扩展能力
相关推荐
love530love1 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
Leaton Lee1 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
凌云拓界2 小时前
文件管理:让AI安全操作你的电脑 ——CogitoAgent开发实战(三)
javascript·人工智能·架构·开源·node.js
凌云拓界3 小时前
联网能力:让AI看见更广阔的世界 ——CogitoAgent开发实战(四)
javascript·人工智能·架构·node.js·创业创新
Cosolar3 小时前
保姆级 CrewAI 教程:从零构建多智能体协作系统
人工智能·python·架构
树上有只程序猿3 小时前
主流低代码管理平台深度解析(最新)
人工智能·低代码·软件开发·软件需求
wb043072013 小时前
厨房实况直播——从阿明的“外卖骑手追踪系统“,看实时系统与事件驱动架构
架构
绿算技术4 小时前
万卡推理集群存储选型分析:从核心架构到应用视角
大数据·科技·算法·架构
heimeiyingwang5 小时前
【架构实战】分布式事务Saga模式:长事务的优雅解决方案
分布式·架构