状态同步机制
引用文件
本文引用的文件
- RuleBlacklistStatusListener.java
- BpmBlacklistStatusListener.java
- BlackCallbackConsumer.java
- BusinessTypeEnum.java
- BpmProcessInstanceStatusEvent.java
- ApkUninstallUpdateEvent.java
- ApkUninstallUpdateConsumer.java
- BlacklistUtil.java
- DeviceBlackCallbackEventDTO.java
- Idempotent.java
- IdempotentRedisDAO.java
- RedisDistributionLockUtils.java
- BloomFilterUtils.java
- README.md
目录
简介
本文件系统化阐述黑名单状态同步机制,覆盖事件驱动架构、监听器设计、状态传播路径、触发条件(审批完成、规则匹配、手动修改)、状态数据结构(状态枚举、变更历史、冲突解决)、跨系统一致性保障(分布式锁、幂等性、重试机制),以及监控与性能优化建议。目标是帮助读者快速理解并安全地扩展黑名单状态同步能力。
项目结构
黑名单状态同步涉及多个模块协作:
- 规则模块:产生“规则变更导致流程不启动”的事件
- BPM模块:产生“流程实例状态变化”的事件
- 黑名单模块:作为事件消费者,接收并处理状态变更
- 报告模块:消费“APK卸载更新”事件,完善历史记录
- 通用框架:提供事件模型、幂等与分布式锁工具、布隆过滤器等基础设施
图表来源
- RuleBlacklistStatusListener.java
- BpmBlacklistStatusListener.java
- BlackCallbackConsumer.java
- ApkUninstallUpdateConsumer.java
- DeviceBlackCallbackEventDTO.java
- ApkUninstallUpdateEvent.java
章节来源
核心组件
- 事件监听器
- 规则变更监听器:监听规则模块发出的“流程不启动”事件,将黑名单配置的BPM状态置为未启动
- BPM状态监听器:监听BPM模块发出的流程实例状态事件,交由黑名单业务服务处理审批结果
- 黑名单回调消费者:监听设备回调事件,落库并下发“APK卸载更新”事件
- 报告模块消费者:消费“APK卸载更新”事件,完善历史记录字段
- 事件模型
- 规则变更事件:携带规则ID与业务ID
- BPM流程状态事件:携带流程实例ID、状态、业务信息
- 设备回调事件DTO:包含事件ID、设备信息、黑名单ID列表
- 卸载更新事件:包含设备MAC/CPU、包名、卸载时间等
- 状态工具
- 提供黑名单状态更新、草稿封装等能力
- 基础设施
- 幂等注解与RedisDAO:保证同一业务请求在时间窗内仅执行一次
- 分布式锁工具:基于Redis实现加锁/解锁
- 布隆过滤器工具:用于高效判断黑名单命中与批量刷新
章节来源
- RuleBlacklistStatusListener.java
- BpmBlacklistStatusListener.java
- BlackCallbackConsumer.java
- ApkUninstallUpdateConsumer.java
- BlacklistUtil.java
- BusinessTypeEnum.java
- BpmProcessInstanceStatusEvent.java
- DeviceBlackCallbackEventDTO.java
- ApkUninstallUpdateEvent.java
- Idempotent.java
- IdempotentRedisDAO.java
- RedisDistributionLockUtils.java
- BloomFilterUtils.java
架构总览
黑名单状态同步采用事件驱动架构,围绕“规则变更”和“BPM流程状态变化”两条主线进行状态传播,并通过消息队列实现跨模块解耦。
图表来源
- RuleBlacklistStatusListener.java
- BlacklistUtil.java
- BlackCallbackConsumer.java
- ApkUninstallUpdateConsumer.java
详细组件分析
规则变更监听器(RuleBlacklistStatusListener)
职责:监听规则模块发出的“流程不启动”事件,针对黑名单业务类型,将对应配置的BPM状态置为未启动,确保后续审批流程正确推进。
图表来源
章节来源