跳到主要内容

技术方案

版权声明

多租户

  • 共享服务
    • 服务运行的资源利用率可以最大化,减少资源浪费
    • 租户间的数据可能会存在相互干扰,并有数据泄漏风险,其完全由代码的准确性保证
    • 租户共享一套代码,无法在编译期完成定制化,只能在运行期根据租户配置数据动态启禁相关功能模块, 使得定制化和定制化控制的复杂度增加
    • 服务不可用会造成所有租户不能正常使用部分或全部功能
  • 独立服务
    • 数据完全隔离,租户间的数据互不干扰,且不会发生泄漏
    • 资源浪费较大,处于静默的租户也会占用大量的内存资源: 可以考虑一种按需启动服务的机制,仅在租户需要使用时才激活服务, 比较理想的方式就是函数化,就像远程调用函数一样,不调用则不消耗资源, 调用后资源也会被自动回收
    • 可以对不同租户提供不同的个性化服务,各个租户的运行代码可以是不同的
    • 单一租户的服务不可用不会影响其他租户的服务可用性
  • 数据隔离方案
    • 单库分表:通过 租户标识 分表
      • 单表数据量会随租户规模快速增长
      • 在数据规模较大时,会影响增删改查的性能,主要是查询性能
      • 在应用版本升级涉及表结构变化时,能够较为方便地实施,但变更耗时也受数据规模的影响
    • 单库多表:通过 租户标识 命名数据表
      • 单表数据量的增长速度较为平缓,与租户数量无关
      • 单表的数据查询性能不受租户数量影响
      • 应用升级时涉及表结构变更的实施范围更大,但表的变更耗时也不受租户数量影响

最终可以采用二者的综合方案,也即,在共享服务的模式下提供水平扩展能力, 根据租户的增减情况,动态增减服务群的规模,一个服务群负责为固定范围内的租户提供服务, 在具体的服务群内以共享服务方式提供给多个租户,且每个服务群均有各自独立的数据库, 该数据库可采用单表或多表模式存储服务群所面向的租户的数据。

通过服务群,可在最大限度利用资源的同时降低全部服务不可用的风险。

数据存储

  • Apache CouchDB: JSON 存储方案,与 MongoDB、ElasticSearch 类似
  • Apache Doris: 列式数据库,与 ClickHouse 类似,可用作数仓,其支持集群,部署更简单

可视化

  • AntV X6: 基于 HTML 和 SVG 的图编辑引擎,提供低成本的定制能力和开箱即用的内置扩展, 方便快速搭建 DAG 图、ER 图、流程图、血缘图等应用。 :内置功能丰富,支持多种布局
  • AMIS: 一个低代码前端框架,它使用 JSON 配置来生成页面,可以减少页面开发工作量,极大提升效率
  • JSON 可视化 - JSON Crack