高并发低代码平台架构设计

本文基于当前鲁班低代码平台各仓库的既定关系与调用链,从高级架构师视角推演各系统的部署关系,并给出高并发优化高可用保障系统架构图与部署图、以及系统 Roadmap 与蓝图,便于在流量与可用性要求提升时按图演进。


一、系统关系与调用链(现状锚点)

鲁班平台由六个仓库组成,边界固定、契约清晰:

系统职责技术栈下游依赖
luban-ui组件库 + 设计器 + Render 运行时Vue3 / Nx无(被集成)
luban管理后台Vue3 / Vite / Pinia / Element Plusluban-bff /api/*
luban-website对外站点(SSR)Nuxt 3luban-bff /api/public/*
luban-bff接入层:认证、聚合、协议适配Next.js(Node)luban-backend /backend/*
luban-backend主后端:站点/页面/用户/设置Spring Boot / MyBatis / Redis / MySQLMySQL、Redis
luban-backend-go与主后端同契约的 Go 实现Go / GinMySQL、Redis

调用关系:管理后台与对外站点只访问 BFF;BFF 通过 BACKEND_BASE_URL 调用主后端(可切换 Java/Go);主后端写 MySQL、用 Redis 做系统设置等缓存;公开页按 slug+path 读已发布页面(只读、无鉴权)。


二、系统架构图

下图从逻辑视角描述各系统之间的数据流与职责边界,便于在高并发与高可用设计时对齐「从哪里扩容、从哪里缓存」。

要点:BFF 为单一入口,可在此做限流、熔断与协议收敛;后端可多实例无状态扩展;数据层需单独做高可用与容量规划。


三、部署图(多环境推演)

在「生产高可用、可水平扩展」的前提下,各系统部署关系可推演如下。图中区分管理端流量对外站点流量,便于后续按路径做差异化优化(如对外读多写少、可强缓存)。

部署要点

  • luban:静态资源可走 CDN 或对象存储,仅 HTML 入口走 LB。
  • luban-bff:无状态,多实例 + LB 水平扩展;可单独为「公开接口」做实例组或路由策略(读多可加大缓存)。
  • luban-website:Nuxt SSR 多实例,前面 CDN 缓存静态与可选「按 slug+path 的页面结果」。
  • luban-backend:无状态,多实例 ×M;连接池、线程池按实例与 DB/Redis 容量调优。
  • Redis:系统设置等热点读;生产建议主从或集群,保证高可用。
  • MySQL:主从读写分离可期;写主读从,后端或通过数据源路由实现。

四、高并发优化

4.1 读写分离与缓存

  • MySQL:主库写,从库读(列表、单条查询、公开页查询)。BFF/后端通过数据源路由或 JDBC 配置实现读写分离。
  • Redis
    • 系统设置:已实现的 settings:global 读缓存,写时更新 DB + 刷新 Redis。
    • 可选:公开页按 (slug, path) 缓存public:page:{slug}:{path},TTL 按发布变更频率设定(如 60s~300s),发布/下架时主动失效。
  • BFF 层:对「公开页面」接口可做短时内存/Redis 缓存,减少对后端的重复请求。

4.2 连接与线程池

  • luban-backend:数据库连接池(如 HikariCP)大小 ≈ 实例数 × 每实例连接数,总连接数不超过 MySQL max_connections;线程池(Tomcat/Netty)与 CPU 核数、IO 比例匹配,避免过多阻塞线程。
  • luban-bff:Node 异步 IO,注意对后端调用的连接复用与超时设置;可配置 BACKEND_BASE_URL 指向后端 LB,避免单点。

4.3 静态与页面级加速

  • luban / luban-website 静态资源:构建产物上传 CDN,HTML 中引用 CDN 域名;首屏与交互资源分离,必要资源预加载。
  • luban-website 已发布页:SSR 结果可按路由(如 /:siteSlug/:path*)在 CDN 或 BFF 侧做短 TTL 缓存,降低后端与 SSR 压力。

4.4 限流与熔断

  • 入口:在 LB/网关或 BFF 对按 IP/UserID/接口的 QPS 限流,防止雪崩。
  • BFF → Backend:对后端调用做熔断(如连续失败 N 次或错误率超阈值则熔断),并返回友好降级(如「稍后重试」),避免拖垮后端。

4.5 异步与削峰(可选演进)

  • 非实时操作(如「批量发布」「导出」)可投递到消息队列,由 Worker 消费,避免长耗时请求占满连接与线程。
  • 写操作(创建/更新站点、页面)保持同步;若未来有「页面渲染结果预生成」等重计算,可异步写缓存。

五、高可用保障

5.1 无状态与水平扩展

  • luban-bff、luban-backend、luban-website:均设计为无状态,不依赖本地存储会话;通过 LB 多实例部署,单实例故障由 LB 摘除即可。
  • luban:纯前端 SPA,静态托管即可,可用性依赖 CDN/托管平台。

5.2 数据层高可用

  • MySQL:至少一主一从,主故障时提升从为主(手动或通过编排/工具);有条件可多从库做读扩展。
  • Redis:主从复制 + 哨兵,或集群模式;避免单点,设置合理 maxmemory 与淘汰策略。

5.3 健康检查与自愈

  • 各服务提供 /ping/health,LB 或 K8s 探针定期探测;失败则摘除实例或重启容器。
  • 数据库与 Redis 的连接失败应有重试与退避,并记录告警,便于运维介入。

5.4 契约一致与多运行时

  • luban-backendluban-backend-go 保持 API 契约一致(见 luban-backend/docs/API.md);BFF 仅通过 BACKEND_BASE_URL 切换,可在某运行时故障时切到另一实现,或按地域/流量拆分部署,提升整体可用性。

六、系统 Roadmap 与蓝图

在「当前六库分工不变、契约稳定」的前提下,可按阶段落地高并发与高可用能力,并预留扩展点。

阶段目标关键动作
P0 当前功能闭环、契约统一管理后台 + 对外站点 + BFF + 主后端(Java/Go 二选一)打通;API 文档与错误码统一。
P1 稳基高可用、可观测MySQL 主从、Redis 主从/哨兵;BFF/Backend 多实例 + 健康检查;集中日志与基础监控(QPS、延迟、错误率)。
P2 扛量高并发、读扩展后端读走从库;公开页 (slug, path) Redis 缓存;BFF/公开接口限流与熔断;静态资源上 CDN。
P3 优化体验与成本luban-website SSR 结果 CDN 或 BFF 缓存;可选消息队列做异步任务;按需引入 Go 版分流或多地域部署。
P4 演进平台化与开放多租户/多站点隔离与配额;开放 API 与 webhook;审计与操作日志;可选 schema 版本与回滚。

蓝图(简图)


七、小结

以当前六库关系与调用链为锚点,高并发低代码平台架构可总结为:

  1. 系统架构图:明确客户端 → 边缘/接入(BFF)→ 后端 → 数据层与前端资产集成关系,便于确定扩容与缓存边界。
  2. 部署图:管理端与对外站点分区部署,BFF/Backend 多实例无状态,数据层 MySQL/Redis 主从或集群,保证可水平扩展与故障隔离。
  3. 高并发:读写分离、Redis 缓存(系统设置 + 公开页)、连接/线程池调优、CDN 与限流熔断,按阶段实施。
  4. 高可用:无状态服务 + LB、数据层主从与哨兵/集群、健康检查与契约一致的多运行时(Java/Go)切换能力。
  5. Roadmap:从 P0 功能闭环到 P4 平台化,分阶段落地稳基、扛量、优化与开放能力,便于按业务节奏迭代。

按上述架构与部署关系推进,可在不打破现有仓库边界的前提下,系统化地提升鲁班低代码平台的并发能力与可用性,并为后续多地域、多租户预留清晰扩展路径。

0%