异步导出和事件归属
Task既是设备消息入口,也是通用导出任务登记服务。业务从Task接口进入,并不意味着所有数据都由Task持有;应按最后写入存储的消费者区分归属。
异步导出
nebula_ids.base_export_task保存导出请求及执行状态。各业务服务通过ExportTaskApi登记请求,Task分配Redis并发槽位并发出ExportTaskEvent,有对应业务类型的监听者执行导出,再经API更新日志、进度和结果。Task本模块监听应用运行、活跃等导出类型;其他业务模块可消费自己的类型,不应将所有导出实现归入Task。
| 字段 | 业务解释 |
|---|---|
type | 导出业务类型,用于路由到相应监听者 |
param | 该业务类型的查询条件序列化结果;不能认为所有任务共享同一JSON结构 |
status | 0启动、1手动终止、2完成、3失败、4排队等待 |
progress/log | 异步任务执行进度和过程说明 |
result | 最终文件结果地址,删除任务时通过infra文件API清理 |
creator/create_time/updater/update_time/deleted | BaseDO继承的审计和逻辑删除字段 |
实库另有tenant_id,实体不直接声明;这是物理列与实体表示方式的区别,不能推断系统没有租户隔离。当前仅id主键索引,未设置状态队列专用索引。Redis槽位控制并发,库中WAITING记录由调度方法再尝试启动;这不等于MySQL事务和Kafka发送具备跨系统原子性,本次未做故障恢复验证。
设备事件的读写边界
| 入口事件 | Task内动作 | 最终存储 归属说明 |
|---|---|---|
| APP下载 | 发app-download并由AppDownloadConsumer写入 | Task的遗留MySQL下载明细 |
| 任务推送回调 | 发task-call-back,APP任务另发apk-push-callback | Task维护flow_task_device;其他消费者的历史数据由其所属服务维护 |
| APP运行列表 | 发app-runtime-list,消费者写TD热库并回填任务关联 | Task运行明细与统计 |
| APP安装列表 | 转换为AppInstallEventDTO后发app-install-list | device服务后续处理;不因本入口在Task而将安装列表库归入Task |
| launcher广告回调 | 发launcher-ad-callback | launcher服务后续处理 |
| 黑名单操作/杀进程回调 | 发相应black回调消息 | blacklist服务后续处理 |
| 设备运行记录 | 发device-run-record | device服务后续处理 |
| 域名分发访问 | 域名接口发TOPIC_DOMAIN_DEVICE_ACTIVITY | device活跃链;独立于Task应用活跃链 |
这些是源码事件流证据,没有重放消息验证消费者运行状态。Topic名通过Kafka配置解析,文中以配置属性/常量标识,避免把某一环境名称当接口永恒约定。
非关系存储
TaskRedisDAO按任务ID缓存主对象;TaskDeviceRedisDAO按MAC建Hash,field为taskId;UotaRedisDAO维护版本实体和渠道版本ZSet;BloomFilterRunner使用bloom:filter:task:push;导出组件维护运行槽位和任务UUID。它们用于减少读库、筛选与协调,不作为本次已实测的数 据实体;没有连接Redis、列举用户数据或读取缓存值。
源码证据:service/export/BaseExportTaskServiceImpl.java:59、:133、:180、service/export/ExportTaskApiImpl.java:122、listener/TaskExportTaskEventListener.java:42、service/deviceevent/DeviceEventServiceImpl.java:80、dal/redis/task/TaskRedisDAO.java:17、dal/redis/task/TaskDeviceRedisDAO.java:23、dal/redis/task/BloomFilterRunner.java:14。状态枚举位于ik_project/yudao-cloud/yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java:20。路径基准见总览,完整导出表见遗留库附录。