近期参与SAAS项目第一代应用设计,为满足整体灵活性,复用性和可定制化,得出如下应用层模型,希望能给大家相互参考学习,设计上有什么缺漏请多指教

核心思想

  1. 模块为最小化购买单位 例如商城模块 分销模块等
  2. 多个模块组合成为一个版本  例如基础版本 旗舰版等
  3. 每个模块都关联了对应的接口/页面路由  将对应的关系上报给配置中心
  4. 根据租户购买情况 得出用户有哪些模块的权限 进而每个用户显示不同的功能及权限 由租户网关统一校验
  5. 以此达成多租户共享同一套应用程序但各自使用不同的模块

应用层架构图

模块

  1. 模块是SAAS购买/赠送的最小单位 例如商城模块,活动模块等 每个模块都有对应的定价
  2. 一个模块可以配置这个模块包含了哪些页面和接口
  3. 每个模块启动时自动向配置中心提交自己归属的页面和接口 用于网关校验
  4. 模块是被定制化的最小单位,可标记这个模块在某个租户上是否被定制化,若是已定制化的标记,则路由到定制化后的服务上去,具体的接口和页面的配置也已定制化后的为准

版本

  1. 多个模块组合打包即成为一个版本
  2. 用户可以版本为单位进行购买 批量获得各个模块的权限

前台与后台

  1. 以微商城SAAS举例  给到消费者用的页面等为前台
  2. 商户管理店铺的端口为后台

配置中心

  1. 每个模块将其对应包含的接口和页面启动时上报到配置中心

统一租户网关

  1. 实现SSO登录及其校验
  2. 租户及租户的客户每次访问页面或调用接口时  读取配置中心配置  校验其是否有这个页面/接口的权限 决定是否放行
  3. 对租户的租约到期时间进行校验 若已到期或快要到期的 则跳转引导续费
  4. 判断该租户的模块是否被定制化 若已定制化 则转发到对应的定制化模块上
  5. 提供接口给租户查询自己拥有多少个模块及其页面和接口

功能页面

  1. 具体功能对应的页面则为功能页面 例如商城页面等
  2. 每个页面可能包含多个模块的功能 页面前端组件根据该租户已购的模块动态显示/隐藏对应的组件 实现租户页面动态显示

非功能页面

  1. 续费 充值 支付等页面为非功能页面
  2. 这类页面不用经过网关校验 属于路由白名单

通用模块

  1. 即无需购买都有的模块 例如账号密码管理 子账号管理等
  2. 对应的接口和页面都为非功能页面/接口

租户购买/续费

  1. 即记录该租户和具体的哪些模块的关联关系及其租约到期时间
  2. 视为该租户已经购入了这个模块

小节

整体租户使用时调用路径如下:

访问页面:

  1. 根据路由规则或读取得出该页面关联有多少哪些个模块
  2. 网关校验该租户是否有这个页面的权限  即该用户有无购入该页面关联的模块  有则放行
  3. 当前是否处在即将到期或已到期状态下  不是则放行
  4. 根据该租户购有的模块 动态显示页面上的组件  即页面上本可有但用户没有购买的组件则隐藏不显示

调用接口:

  1. 根据路由规则得出该接口关联在哪个模块
  2. 网关校验该租户是否有这个接口的权限 即该用户有无购入这个接口对应的模块 有则放行
  3. 当前是否处在即将到期或已到期状态下  不是则放行

以此应用架构下,新增功能时可以水平扩充多个模块并保持灵活的权限控制,并且支持小部分客户的定制化,做到定制化且不影响原有的非定制化的功能,缺点是租约网关负荷相对较大,需要使用缓存等减轻租约网关压力。

初代SAAS平台应用层架构设计相关推荐

  1. SaaS平台产品架构设计

    当我们去搜索"架构",可以得到很多的架构图片,比如组织架构.业务架构.数据架构.技术架构.安全架构.产品架构.部署架构等. 什么是架构,通常大家说架构一般指软件架构,架构是指软件的 ...

  2. 大型 SaaS 平台产品架构设计

    更多内容关注微信公众号:fullstack888 当我们去搜索"架构",可以得到很多的架构图片,比如组织架构.业务架构.数据架构.技术架构.安全架构.产品架构.部署架构等. 什么是 ...

  3. 从Watson看AI平台的架构设计

    本文转自:https://blog.csdn.net/dev_csdn/article/details/78426133 摘要:本文分析IBM Watson在技术架构上所面临的问题及解决办法,总结了人 ...

  4. 谈一谈SaaS产品的架构设计

    1. SaaS 是什么 从字面中理解SaaS的全称是Software as a service, 即软件即服务. 从服务模式来看,SaaS是一种软件授权和交付模式,以订阅模式代替传统授权模式,以集中式 ...

  5. 专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变

    专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变 发表于11小时前| 2426次阅读| 来源CSDN| 3 条评论| 作者钱曙光 SDCCSDCC讲师专访腾讯徐汉彬架构WebPHP width ...

  6. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  7. 主流物联网平台的架构设计思考

    主流物联网平台的架构设计思考 物联网平台的总体架构 物联网平台的技术架构 用户级物联网平台的解决方案: 车联网平台的主流解决方案:

  8. 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现

    作者:陈迪豪,小米深度学习工程师,负责小米云深度学习平台的架构和实现,目前专注于TensorFlow和Kubernetes社区. 责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至 ...

  9. 论企业集成平台的架构设计

    来自软考论文 论企业集成平台的架构设计 三.选择合适的应用集成平台 (介绍)目前,开放式(开源)企业应用集成的规范和平台的主流技术有两种: - 种是微软公司的COM+(组件对象模型)规范和Window ...

最新文章

  1. django源码笔记-【1】
  2. matlab 字符串替换
  3. 九度 1462:两船载物问题(01背包)
  4. Java知多少(96)绘图之设置字型和颜色
  5. IOS - 本地消息推送
  6. oracle 等待原因查找,查询引起锁等待的SQL语句
  7. 大数据对医学发展有什么影响
  8. SVM多分类的几种方式
  9. Python数据分析实例
  10. Facebook不上市纯属炒作
  11. 高通apq8096连接外网
  12. 人工智能时代已经到来,政务工业商业等各领域都将是刚需
  13. 启动solidworks时显示VBE6EXT.OLB不能被加载
  14. ZZ GP技术的展望——道生一,一生二
  15. 让我们看看往年的1024传智播客怎么安排的
  16. 常用数学公式,推导记录
  17. GPS定位为什么需要4颗以上卫星?
  18. 我厌倦玩计算机游戏了英语翻译,我喜欢玩电子游戏英文翻译,我喜欢电脑游戏怎么说...
  19. 2017-本命年里发生的那些事
  20. Markdown进阶

热门文章

  1. 数据结构课程设计 校园导航系统
  2. OVIS数据集代码解析
  3. Qt录音+百度语音Linux C++ SDK识别包实现语音识别
  4. 绝版功能回归,Win11开始向Win7进化了
  5. 神经网络算法用什么软件,神经网络算法的基本原理
  6. Android中的录音与音频合成
  7. EasyCode的Mybatis终极版模板
  8. 《阿里巴巴Java开发手册(正式版)》--编程规约
  9. 2013年8月《身份证、指纹、实名制》
  10. 肌理插画怎么画?【肌理插画教程】