近期参与SAAS项目第一代应用设计,为满足整体灵活性,复用性和可定制化,得出如下应用层模型,希望能给大家相互参考学习,设计上有什么缺漏请多指教
核心思想
- 模块为最小化购买单位 例如商城模块 分销模块等
- 多个模块组合成为一个版本 例如基础版本 旗舰版等
- 每个模块都关联了对应的接口/页面路由 将对应的关系上报给配置中心
- 根据租户购买情况 得出用户有哪些模块的权限 进而每个用户显示不同的功能及权限 由租户网关统一校验
- 以此达成多租户共享同一套应用程序但各自使用不同的模块
应用层架构图
模块
- 模块是SAAS购买/赠送的最小单位 例如商城模块,活动模块等 每个模块都有对应的定价
- 一个模块可以配置这个模块包含了哪些页面和接口
- 每个模块启动时自动向配置中心提交自己归属的页面和接口 用于网关校验
- 模块是被定制化的最小单位,可标记这个模块在某个租户上是否被定制化,若是已定制化的标记,则路由到定制化后的服务上去,具体的接口和页面的配置也已定制化后的为准
版本
- 多个模块组合打包即成为一个版本
- 用户可以版本为单位进行购买 批量获得各个模块的权限