1. 分层设计
在系统最前端的层就需要进行租户识别
分层:
呈现层,调度层,业务层,数据层
呈现层是共享的,所有租户都是一致的。
调度层必须进行租户识别,并将不同租户的请求调度至不同子系统
业务层对租户是透明的,所有租户都相同
数据层,必须做好租户安全隔离
2. 数据隔离要透明
不需要业务开发人员在代码中编码隔离不同租户数据
3. 租户识别方案
a. url识别租户,使用三级域名,不同租户使用不同的域名,根据域名判断租户
b. 根据登录名判断租户,要做好租户切换问题,不同租户有相同用户名如何操作?
4. 租户管理
a. 计费系统(周期性计费、使用量计费)
b. 租户定制
5. 定制化开发
a. 不同模块分成子系统,通过控制台中配置不同租户订购不同模块
b. 不同子系统分开部署
6. 灰度升级
a. 子系统接口必须根据版本号进行区分
b. 使用url区分租户可以配置nginx根据域名来做分发
7. 动态扩容
横向和纵向扩展(应用服务器和数据库的扩容)
IaaS、PaaS、SaaS
IaaS:Infrastructure as a Service(基础设施即服务),例如提供sdk ,像文本数据库Sqlite提供sqlite.dll操作数据库文件
PaaS:Platform as a Service (平台即服务)中间件,例如提供虹膜比对中间件(虹膜比对服务软件)或者像Sql Server数据库,有服务端,提供客户端调用平台服务
SaaS:Software as a Service (软件即服务)提供完整的软件功能,例如邮件系统,有完整的功能