SaaS系统的销售微服务与权限微服务边界设计

在设计SaaS系统的销售微服务与权限微服务的边界时,需要结合领域驱动设计(DDD)和微服务拆分原则,确保高内聚、低耦合。以下是结合微服务架构原则、多租户SaaS需求及权限管理场景的完整设计方案,整合了权限服务与销售服务的边界划分、订阅生命周期管理等核心模块。

一、整体架构设计

1、架构原则​

  • 服务自治性:每个微服务独立部署、独立数据库,遵循单一职责原则。
  • 多租户支持:采用字段级隔离,通过tenant_id区分企业数据。
  • 通信方式:REST API用于同步调用(如鉴权),RocketMQ用于异步事件(如订阅到期通知)。

2、服务划分

微服务 核心职责
销售服务 产品套餐管理、订单处理、订阅生命周期(创建/续费/到期)、计费策略。
权限服务 功能权限管理(RBAC)、租户-功能有效期映射、鉴权(JWT/OAuth2.0)
网关服务 统一入口、路由分发、请求限流

二、核心模块设计

1、​订阅与权限联动机制

(1)订阅状态管理(销售服务)

  • 订阅生命周期管理(到期、续费、失效),维护订阅表,记录企业购买的功能模块、有效期。
  • 定时任务每日扫描到期订阅,触发订阅到期事件通知权限服务。

(2)权限状态同步(权限服务)​

  • 监听到期事件,消费RocketMQ事件,更新租户功能有效期映射表(租户ID、功能模块、到期时间)。
  • 鉴权时双重校验(RBAC校验、订阅校验):检查用户角色是否关联功能、查询租户功能有效期,拦截过期请求。

2、多租户权限模型

(1)​功能隔离

通过功能表的字段区分不同功能包,销售服务将功能包与企业订阅关联。

(2)数据隔离

所有表增加tenant_id字段。

3、关键接口定义

服务 接口示例 用途
销售服务 POST /api/sales/subscription 创建订阅
权限服务 POST /api/auth/check 实时鉴权
网关服务 路由规则:/api/sales/** → 销售服务, /api/auth/** → 权限服务 动态路由与负载均衡

​三、数据流与事件驱动

1、创建订阅处理流程

(1)用户浏览产品版本及功能列表。

(2)创建订单,支付成功后创建订阅记录。

(3)支付成功,创建订阅记录。

(4)订阅生效,通知权限服务更新租户功能有效期表。

2、订阅到期处理流程

(1)订阅到期判断(销售微服务)​。通过定时任务(如每天凌晨)扫描订阅表的订阅到期字段,标记到期企业。

(2)发布订阅状态事件(销售微服务)​。当订阅到期/续费时,销售服务发送事件到消息队列。

(3)权限状态更新(权限微服务)​。权限服务消费事件,更新数据库中的企业功能有效期表​。

3、用户访问拦截流程

(1)用户请求通过网关路由至权限服务。

(2)权限服务解析JWT令牌获取tenant_id和user_id。

(3)查询RBAC权限表和租户有效期表。

(4)拦截逻辑:无权限或者功能已过期返回403。

四、安全与监控设计

1、安全策略

  • API鉴权:网关统一验证JWT令牌,权限服务细粒度控制功能访问。
  • 数据加密:敏感字段(如支付信息)采用AES加密存储。
  • 防攻击:网关集成Sentinel防DDoS,SQL注入拦截基于MyBatis参数化查询。

2、可观测性

  • 监控:Prometheus采集服务指标(如鉴权接口QPS),Grafana可视化仪表盘。
  • 日志:ELK集中管理日志,通过tenant_id快速定位企业级问题。

通过销售服务管理订阅生命周期、权限服务执行动态鉴权,结合事件驱动与多租户隔离策略,实现了SaaS系统核心功能。

相关推荐
Chan167 小时前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
喵叔哟14 小时前
25.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户服务接口
微服务·架构·.net
吾日三省Java18 小时前
微服务体系下将环境流量路由到开发本机
微服务·系统架构·团队开发
Zfox_1 天前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
雪碧聊技术1 天前
将单体架构项目拆分成微服务时的两种工程结构
微服务·架构·module·project·工程结构
洛神灬殇2 天前
【LLM大模型技术专题】「入门到精通系列教程」基于ai-openai-spring-boot-starter集成开发实战指南
网络·数据库·微服务·云原生·架构
啾啾Fun2 天前
【Java微服务组件】分布式协调P4-一文打通Redisson:从API实战到分布式锁核心源码剖析
java·redis·分布式·微服务·lua·redisson
后海 0_o2 天前
2025前端微服务 - 无界 的实战应用
前端·微服务·架构
喵叔哟2 天前
24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
微服务·架构·.net
bing_1582 天前
跨多个微服务使用 Redis 共享数据时,如何管理数据一致性?
redis·微服务·mybatis