Skip to content

业务中台(yidun-mplatform-business) ​

判断「这个客户这个业务还能不能用」,答案只在这里。它是服务生命周期的唯一事实来源。

1. 业务定位 ​

客户开通的每个易盾服务都由四层构成:

  • 产品:能力集合(如智能风控、内容安全)。
  • 业务:客户在某个产品下的一个服务实例,带 businessCode。
  • SKU:具体能力规格,状态决定能力是否可用。
  • 套餐:有效期与计费档,绑定在业务上,分主套餐与备用套餐。

策略中心、智能风控判断「服务是否可用」时,读的就是这里的业务与套餐状态。

2. 架构与模块划分 ​

模块类型职责
facade/dubbo-api + dubbo-providerDubbo业务/产品/套餐对外契约(BusinessInfoFacade 等)
facade/http-api、facade/http-platform-apiapp内部 HTTP、开放平台 HTTP
console/apiapp控制台入口
storageappKafka 消费、事件处理、定时任务
schedulerappElastic-Job(如产品演示任务)
clientjar对外发布的本地缓存/事件监听 jar
contractjar最小契约(枚举/常量)
service/base、service/businessjarDAO/Manager、核心业务规则

依赖链:common → domain → service/base → service/business → facade/console/storage/scheduler/client。

3. 核心链路 ​

4. 关键数据模型与状态机 ​

对象状态
业务 BusinessInfoOPEN(1) / CLOSE(0);关闭原因 NORMAL(-1) / PACKAGE_INVALID(0) 等
SKU SkuInfoNOT_AVAILABLE(500) / ON_TRIAL(800) / TRIAL_EXPIRED(600) / AVAILABLE(900) / END_SERVICE(700)
套餐 PackageInfoEFFECT(1) / INVALID(2) / WAITING_EFFECT(3) / CHECKING_EFFECT(4) / CHECK_REFUSE(5)

核心业务规则集中在 BusinessInfoServiceImpl(约 3400 行):绑定/解绑/切换/延期套餐,以及套餐失效时如何降级到备用套餐。

5. 存储与中间件 ​

组件用途
MySQL + MyBatis-Plus业务/产品/SKU/套餐绑定关系
Redis本地缓存与分布式锁
Kafka套餐事件消费、消息投递
事件中台业务/产品/套餐变更分发

6. 设计模式与扩展点 ​

扩展点位置说明
操作日志@OperateRecord 注解 + IOperateRecord SPI按 BusinessDataType 分发记录
缓存同步IEventDataService + 各 *CacheSyncTask变更异步推事件中台
套餐事件处理PackageEventMessageConsumer新增事件类型扩展处理分支
对外缓存client 模块 BusinessInfoCache下游直接依赖 jar 读本地缓存

base 层硬约定

新增用 insertBatch、删除用 deleteBatch、修改用 updateBatch,不允许新增其他方法名。操作日志切面依赖这些固定方法名,改名会导致日志漏记。

7. 上下游依赖 ​

方向模块说明
上游intelligent-risk 管理后台业务/产品/套餐 CRUD
上游device-fingerpint套餐、产品、转发查询
上游checker-namelist业务维度与适用层级
下游mplatform-event变更事件分发
下游mplatform-metaSKU/业务类型/字段/风险标签定义
下游套餐中台(外部仓库)套餐信息与绑定状态回写

8. 工程约束与变更红线 ​

  • 状态流转必须成对:业务关闭要同时处理套餐绑定状态与套餐中台回写。
  • 变更必须发事件:下游读的是本地缓存,不发事件等于配置不生效。
  • 删除业务前校验依赖:存在策略、名单引用时禁止删除。
  • 套餐切换要考虑时间边界:生效中、待生效、已过期三种状态处理路径不同。
  • HTTP 层统一异常与用户信息:GlobalExceptionHandler、GlobalUserInfoHandler(从 ShenYu 取用户写入 modifyBy)。

9. 关键代码索引 ​

主题路径说明
业务与套餐核心yidun-mplatform-business/service/business/src/main/java/.../BusinessInfoServiceImpl.java约 3400 行核心规则
套餐管理yidun-mplatform-business/service/business/src/main/java/.../PackageInfoServiceImpl.java查询与到期计算
事件同步yidun-mplatform-business/service/business/src/main/java/.../EventDataServiceImpl.java推送事件中台
套餐事件消费yidun-mplatform-business/storage/src/main/java/.../PackageEventMessageConsumer.java生效/过期/超额
操作日志切面yidun-mplatform-business/service/business/src/main/java/.../OperateRecordAspect.java注解驱动
对外缓存yidun-mplatform-business/client/src/main/java/.../cache/BusinessInfoCache.java下游依赖

10. 排查要点 ​

现象定位结论
客户反馈服务不可用查业务状态 + 套餐状态 + 到期时间套餐过期导致业务被自动关闭
套餐续费后仍不可用看套餐事件是否消费、业务是否重新开启续费只改套餐,业务需 reEnableWithPackage
下游拿不到最新业务信息看事件是否发出、下游缓存时间未发事件或下游缓存未刷新
操作日志缺失看是否用了约定的 base 方法名方法名不符导致切面失效
备用套餐没生效看降级规则与备用套餐状态备用套餐本身不可用
最近更新

内部资料,请勿外传