SaaS系统从0到1搭建,01前期准备-数据隔离方案

·  阅读 956
SaaS系统从0到1搭建,01前期准备-数据隔离方案

目标:SaaS系统

最近因项目需要,会做个SaaS系统,方向是车队管理类似的,需求还不知道,只是有个方向。

大体上就是要SaaS,然后用户量级也不会很庞大,毕竟开大货车啥车的,人数的量就在那。

(我是后半夜Java,在掘金这分享下经验,那些靠copy的搬运作者,不要随意copy到其他平台了,哪天闲的就去投诉)

所以提前预研了下,总结以前的经验,希望不在去踩坑,在这也分享下建设思路,欢迎大家提意见哈

既然选择SaaS了,那应该已经对SaaS有所了解了,这里不再重复SaaS的概念了。

数据隔离方案 业内

那既然是开建的准备,先梳理下数据的隔离性:

业内三种方法:

1、数据库隔离,也就是一个租户一个数据库(database)。好处是数据有问题恢复快,但成本高啊。

2、数据库的schema隔离(用MySQL),道理上还是一个库(DB),只是不同的user账号,好处是就一个库,但数据有问题恢复起来会相互影响。

3、同个数据库、同个schema(user),采用业务字段隔离。共享程度最高,隔离级别最低。好处就是一个数据库就足够支持N多的租户,缺点嘛,安全性在设计与撸码的时候一定一定一定要考虑好,记得要codereview。然后这个的数据库备份,数据库还原啥的也是比较有难度的。

确定个方案

好的,那这3种方案,咱这考虑直接选第三种,原因有下:

1、本身的业务类型所限,不会有太多的量。

2、用一个库多个租户,足够撑起近期2-3年的业务量,如果真的做好了,发展好了,估计大概率会有重构的,是吧,按互联网发展的经验。

3、第一个肯定先排除,因为刚开始每个服务商都要新建个数据库,成本有限哈。

4、估计后面会引人ES,不然第三个方案的统计类的,作为运营设计会比较方便。

那继续分析下前期准备,一个完整的业务请求流程大体上,是由用户发起请求、网络传输、防火墙(网关)、业务逻辑执行、返回数据。那去掉网络这块 和 运维的灾备等处理 交给运维网管团队,咱研发业务实现的就是考虑中间这个环节。

高并发思考

为了突出咱架构设计上的合理性,前沿性,也就是3高,高性能、高可用、高扩展,这3高做好了才是个高并发的完美框架(至少当前互联网发展的top是如此了)。

高性能:后面代码实现上,要做好就是。

高可用:集群搞上去。

高扩展:如果有高峰期,有活动啥的,需要临时扩展服务器,那需要立马上去。

选好方案后,下篇继续....

建个库先 image.png

将租户主表也先建个

image.png CREATE TABLE car_tenant_base( idint(11) DEFAULT NULL, tenant_codevarchar(255) DEFAULT NULL COMMENT '租户编码', tenant_namevarchar(255) DEFAULT NULL COMMENT '租户名', contact_addressvarchar(255) DEFAULT NULL COMMENT 'l联系人地址', contact_phonevarchar(255) DEFAULT NULL COMMENT 'l联系人电话', contact_emailvarchar(255) DEFAULT NULL COMMENT '联系人邮箱', contact_namevarchar(255) DEFAULT NULL COMMENT '联系人', legal_namevarchar(255) DEFAULT NULL COMMENT '法人姓名', create_timedatetime DEFAULT NULL, update_timedatetime DEFAULT NULL, create_uservarchar(255) DEFAULT NULL, update_userdatetime DEFAULT NULL, delete_falg` tinyint(4) DEFAULT '0' COMMENT '逻辑删除0-默认,1-删除' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

`

分类:
后端
标签: