Multi-Tenant
2017-03-07 08:28:40 0 举报
登录查看完整内容
多租户(Multi-Tenant)是一种软件架构模式,它允许单个软件实例为多个客户提供服务。在这种模式下,每个客户被称为一个“租户”,他们共享相同的软件基础设施,但彼此之间相互隔离,拥有自己的数据和配置。这种设计可以提高资源利用率,降低成本,并简化管理和维护工作。多租户技术广泛应用于云计算、虚拟化和数据库等领域,如Amazon Web Services、Microsoft Azure和Google Cloud Platform等云服务提供商都提供了多租户的支持。
作者其他创作
大纲/内容
租户下的用户账号
Tenant
ConfigProperty
id:Stringname:Stringmeta:ConfigMetakey:Stringcontent:StringdataType:StringcheckRule:Stringorder:int
配置元数据类图
TenantConfigInfoProperty
configInfo:TenantConfigInfokey:Stringvalue:String
HTTP Headers
传统产品与多租户配置比较
租户配置数据类图
RelationType
IncludeDependAssociation
基于Tenant索引构建分布式DB集群
ConfigInfoRelation
mainInfo:TenantConfigrelaInfo:TenantConfigInfotype:RelationType
数据安全
系统菜单配置类图
Role
PK:roleId
roleName......
Permission
PK:permissionId
permissionName......
数据库层:1.建立合适的索引2.消除大数据量表连接3.避免复杂SQL
ConfigMeta
id:Stringname:Stringtype:ConfigTypekey:Stringcontent:Stringproperties:MetaProperty[]relations:MetaRelation[]
Contactor
tenantId:Stringid:Stringname:Stringposition:Stringmobile:String
订购记录,记录租户选择了何种价格策略,以及服务期限或服务次数
RolePermission
3可配置
UserRole
基于数据库、Cache的权限验证类图
定时任务
功能可配置:1.原子功能划分2.功能包设计
1多租户
应用层1.敏感数据字段存储加密2.非对称密钥加密3.HTTPS安全传输4.用户认证与授权5.防跨站脚本攻击(XSS)Session截持,SQL注入,请求重放攻击
订购
SysMenu
id:StringtenantId:Stringname:Stringtips:StringfunctionorderparentMenu:SysMenu
应用层:1.Cache2.报表计算3.基于Tenant的索引搜索4.异步操作
Authorization user_agent X-Forwarded-ForRefererETag
ConfigType
id:Stringname:StringprocessClass:Stringremark:String
Web层:1.Web开发的优化策略2.Http服务器的优化策略
IPermissionDAO
+hasPermission():bool
token令牌
Journal
tenantId:Stringid:StringuserId:StringserviceDate:Date
2高性能
流水账
User
tenantId:Stringid:StringuserId:Stringpassword:String:status:int
数据可配置:1.表预分配16个字段2.预分配字段的含义、类型用元数据表存储
原则:能不支持模糊查询的不支持,必须支持的采用数据全文检索查询,不要使用like '%xxx%'
id:Stringname:Stringcountry:Stringprovince:Stringcity:Stringcontacter:stringaddress:Stringtelephone:Stringstatus:int
Subscriber
tenantId:Stringid:StringpolicyId:StringbeginDate:DateendDate:Dateremainder:intsubscribedDate:Date
数据库层1.透明数据加密(TDE)2.备份与恢复3.用户权限控制4.审计
类图1-1 租户管理
CachePermissionDAO
菜单可配置问题:一个租户一套菜单一个菜单可以关联一个原子功能组成树型上下级菜单结构同级菜单存在显示顺序问题
界面可配置:1. 菜单可配置2.操作可配置3.界面元素可配置-暂时不做
HTTPS/JSON
Redis Center Cache(Spring Session)
前后端分离,表现层异步请求加载,缓存和支持离线应用后端子系统基于Rabbitmq的消息总线交互
待审核、已审核、启用、禁用、取消等,启用状态才能登录系统
Function
CustomerGroup
tenantId:Stringid:StringparentId:Stringnumber:Stringname:String
异步
内网
类图1-3 基于RBAC的权限系统数据模型
DBPermissionDAO
MetaRelation
mainObj:ConfigMetarelaObj:ConfigMetarelation:RelationType
模糊查询
Customer
tenantId:Stringid:StringgroupId:Stringnumber:Stringcountry:Stringprovince:Stringcity:Stringaddress:Stringtelephone:Stringtrade:String
索引
缓存未命中,查DB
流程配置:1.暂时不实现
统计分析:对于历史数据统计分析采用后台任务定时统计策略,部分实时性比较高的查询采用增量统计结果加历史统计结果
PricePolicy
id:StringpolicyName:Stringunit:intprice:BigDecimal
PK:userId
usename......
PermissionClient
折线图
类图1-2 客户管理
计费
柱状图
TenantConfigInfo
id:Stringtenant:TenantconfigMeta:ConfigMetaname:Stringvalue:Stringproperties:TenantConfigPropertyrelations:ConfigInfoRelation[]
饼图
0 条评论
回复 删除
下一页