基于SaaS化的低代码平台设计思路(⼀)
1.创作⽬的
主要是进⾏⼀个平时开发的思路记录,便于后期进⾏查询。平时都在写代码,做crud,很少有时间静下来写具体的设计思路及想法,暂且把想到的都写下来,算是⼀种经验积累吧。
2.设计思路
整个平台将基于多账户、多模块的设计,暂时将账户分为3种类型:企业级账户、⼩微企业账户、普通账户,不同的账户拥有不同的扩展权限。在数据库⽅⾯根据不同的账户进⾏数据存储,企业级账户使⽤独享数据库、⼩微企业账户分表存储、普通账户共享数据库。性能⽆瓶颈可扩展:因为合理的进⾏了分库,所以在性能上并没有什么瓶颈,并且数据库可以扔到不同的服务器上。暂时不需要往⼤数据上靠,因为没有那么多数据存,也不需要那么多数据,基本业务的数据⽤上10年也不会很多。
2.1.数据库设计
数据库分为基础库和业务库两个,整个平台考虑到云部署及独⽴部署2个⽅⾯,所以在设计上也是基于2种情况进⾏不同的划分,还需要考虑到后期的数据迁移等功能。云数据库服务
2.1.1云部署模式
云部署模式⾯向所有的⽤户,所以可根据⽤户类型进⾏数据库设计,默认云部署模式下的账户都是基于分表或共享表的形式进⾏数据存储。(1)基础信息库
该数据库主要存租户、权限、⽇志、配置信息等公共信息,因为基础信息库是共享的,所以使⽤redis进⾏数据缓存以提⾼⾼频访问,可将redis与mysql进⾏分开部署,这样可极⼤提⾼系统的响应速度。
(2)业务库
所有的分库分表都是基于业务库进⾏的,业务库可根据实际业务及⽤户量进⾏多个服务器的部署,通过租户的信息拿到该租户的数据库访问链接及唯⼀id,实现多库多表跨服务器的数据访问。数据库的所有主键id均采⽤guid的形式进⾏⽣成,确保每个id的唯⼀性;所有的业务表根据功能业务的不同进⾏明显区分,保证各个业务之间低耦合,不进⾏强制关联,建⽴中间关系表来表达业务之间的联系。
(3)数据库设计
基础库中主要是以租户为主账户信息,租户内可建⽴独享的⼆级账户、组织架构、功能权限等,每个租户在创建的时候会⾃动分配相应的数据库链接及表权限,具体业务模块可以进⾏动态的数据库结构创建以节省数据库开销。⽬前的思路是直接通过codefirst的形式进⾏动态的数据库逻辑建⽴,并且可以在平台上直接进⾏⼆次开发然后发布⾃⼰的业务模块,发布之后,其他租户通过购买模块服务进⾏业务的共享,以业务领域模型来驱动平台。
(4)技术选型
采⽤ 6 来进⾏整个平台的架构,⽬前的思路还是倾向于以微服务的形式进⾏,这样便于快速扩展及迭代产品,后期肯定在维护上要遇到很多问题,都是摸着⽯头过河,权当是摸索学习,万⼀趟出条⼤路也说不定。