Skip to Content

2026年01月19日

本周工作计划与执行完成进度

中心服务平台 - 轻量化跨境分布式第二阶段改造

  • 目标: 控制变更范围,降低引入风险,实现面向客户可用的初步功能体验。
  • 进度: 已完成 55% | 计划完成 55%(🟢 未开始 | 🟡 进行中 | ⚠️ 部分完成 | ✅ 已完成 | 📌 已验证)
    • 📌 以往已完成的工作内容此处不再重复,详情请参阅上周及上月的。
    • ✅ 在长沙的开发服务器上安装数据同步所需的中间件,并完成相应的配置与性能调优。
    • ✅ 将各中间件进行串联整合,验证整体链路的连通性及对服务器资源的需求。
    • ✅ 复盘跨境服务器单向同步设计方案,梳理并确定最简化且最优的技术路径。
    • ✅ 持续完善跨境服务器数据同步方案的设计文档,提升其完整性和可实施性,达到可启动开发的成熟度。
    • 🟡 基于跨境服务器数据同步方案的设计文档,开展开发工作,共包含 61 项子任务:
      • 阶段 1: 项目设置 (共享基础设施); 目的: 项目初始化和基础结构搭建 ✅
        • ✅ Task 001: 在 es-center-server-main-service/src/main/java/com/es/center/server/datasync/ 创建 datasync 包结构
        • ✅ Task 002: 在 build.gradle.kts 中添加 Apache Commons VFS 依赖(使用 libs.commons.vfs2 统一版本管理)
        • ✅ Task 003: 在 build.gradle.kts 中添加 Apache Commons Compress 依赖(使用 Spring Boot BOM 版本)
      • 阶段 2: 基础设施 (阻塞前置条件); 目的: 核心基础设施,必须在任何用户故事实现前完成 ✅
        • ✅ Task 004: 在 src/main/resources/db/ 创建 sync_log 表 SQL 脚本
        • ✅ Task 005: 在 src/main/resources/db/ 创建触发器函数 SQL 脚本
        • ✅ Task 006: 在 src/main/java/com/es/center/server/datasync/model/SyncLog.java 创建 SyncLog 简单记录(使用 JdbcTemplate,非 JPA)
        • ✅ Task 007: 在 src/main/java/com/es/center/server/datasync/model/FileChecksum.java 创建 FileChecksum 记录
        • ✅ Task 008: 在 src/main/java/com/es/center/server/datasync/model/DownloadResult.java 创建 DownloadResult 记录
        • ✅ Task 009: 在 src/main/java/com/es/center/server/datasync/model/FileToDownload.java 创建 FileToDownload 记录
        • ✅ Task 010: 创建 DataSyncConfig 配置类(getNodeRole() 从 cloud-service.nodes 配置获取节点角色)
        • ✅ Task 011: 创建 DataSyncTableMetadataService(SQL 优化:直接排除 z_ 前缀、ddl_history、sync_log)
        • ✅ Task 012: 创建 DataSyncTriggerInstaller(installTriggers() 返回 boolean;添加 tables 空值检查)
        • ✅ Task 013: 创建 DataSyncApplicationStartupRunner(initMasterNode() 根据 installTriggers() 返回值打印日志)
        • ✅ Task 014: 在 DataSyncConfig 中实现 SFTP 客户端 LoadingCache,支持动态配置刷新(使用 Guava LoadingCache,5 分钟过期)
        • 🟢 Task 015: 在 src/main/java/com/es/center/server/datasync/secondary/download/ 创建 DataSyncSftpDownloader
        • 🟢 Task 016: 在 src/main/java/com/es/center/server/datasync/secondary/schedule/ 创建 DataSyncSecondaryScheduleService
      • 阶段 3: 用户故事 1 - 全量数据备份 (优先级: P1) 🎯 MVP; 目标: 实现每天自动执行完整数据备份,确保从节点拥有完整的数据副本 ✅
        • ✅ Task 017: 在 src/main/java/com/es/center/server/datasync/master/export/ 创建 DataSyncFullExportService
        • ✅ Task 018: 在 src/main/java/com/es/center/server/datasync/master/archive/ 创建 DataSyncMasterArchiveService
        • ✅ Task 019: 在 src/main/java/com/es/center/server/datasync/master/schedule/ 创建 DataSyncMasterScheduleService
        • ✅ Task 020: 在 DataSyncFullExportService 中实现逐表导出的全量导出逻辑(分批 1000 条,JSONL.gz 格式)
        • ✅ Task 021: 为每个数据文件实现校验和文件生成(MD5 + 文件大小 + 记录数)
        • ✅ Task 022: 实现基于 UTC 时间的每日全量导出触发(UTC 01:00 检查)
        • ✅ Task 023: 实现从生成目录到输出目录的原子性文件移动
        • ✅ Task 024: 实现归档清理(输出目录保留 2 天,归档目录保留 3 天)
        • ✅ Task 025: 为全量导出操作添加日志(开始/完成/失败)
      • 阶段 4: 用户故事 2 - 增量数据同步 (优先级: P2); 目标: 实现实时捕获业务数据变更并快速同步到从节点,确保数据一致性
        • 🟢 Task 026: 在 src/main/java/com/es/center/server/datasync/master/export/ 创建 DataSyncIncrementalExportService
        • 🟢 Task 027: 在 src/main/java/com/es/center/server/datasync/secondary/import/ 创建 DataSyncIncrementalImportService
        • 🟢 Task 028: 在 src/main/java/com/es/center/server/datasync/secondary/watch/ 创建 DirectoryWatchService
        • 🟢 Task 029: 实现查询 sync_log 表的增量导出逻辑
        • 🟢 Task 030: 实现增量文件生成成功后的 sync_log 删除
        • 🟢 Task 031: 实现带 I/U/D 操作处理的增量导入
        • 🟢 Task 032: 在 DataSyncIncrementalImportService 中实现批量插入/更新/删除操作
        • 🟢 Task 033: 实现用于在文件到达时触发导入的目录监听服务
        • 🟢 Task 034: 将增量导出集成到主节点调度服务(1 秒间隔)
        • 🟢 Task 035: 为增量同步操作添加日志
      • 阶段 5: 用户故事 3 - 故障自动恢复 (优先级: P2); 目标: 实现服务重启后自动恢复同步状态,无需人工干预
        • 🟢 Task 036: 在 DataSyncTriggerInstaller 中实现主节点生成目录的启动清理
        • 🟢 Task 037: 在 DataSyncTriggerInstaller 中实现从节点下载目录的启动清理
        • 🟢 Task 038: 在 DataSyncTriggerInstaller 中实现从节点启动时的残留导入文件处理
        • 🟢 Task 039: 为启动恢复操作添加日志
        • 🟢 Task 040: 为不完整文件状态添加错误处理
      • 阶段 6: 用户故事 4 - 数据完整性校验 (优先级: P3); 目标: 实现同步数据的完整性验证,并在发现问题时发送告警
        • 🟢 Task 041: 在 src/main/java/com/es/center/server/datasync/secondary/download/ 创建 DataSyncChecksumService
        • 🟢 Task 042: 在 src/main/java/com/es/center/server/datasync/util/ 创建 FailedFileHandler
        • 🟢 Task 043: 实现 SFTP 文件列表和下载逻辑与 DataSyncSftpDownloader 的集成
        • 🟢 Task 044: 实现校验和验证(文件大小 + MD5 + 记录数)
        • 🟢 Task 045: 实现失败文件移动到 failed 目录
        • 🟢 Task 046: 实现校验失败的告警通知
        • 🟢 Task 047: 为验证和失败场景添加日志
      • 阶段 7: 用户故事 5 - 历史数据归档 (优先级: P3); 目标: 实现自动清理过期的同步文件,避免占用过多存储空间
        • 🟢 Task 048: 在 src/main/java/com/es/center/server/datasync/secondary/archive/ 创建 DataSyncSecondaryArchiveService
        • 🟢 Task 049: 实现从节点归档管理(归档保留 3 天)
        • 🟢 Task 050: 实现从节点 failed 目录清理(failed 保留 3 天)
        • 🟢 Task 051: 实现成功导入文件移动到归档目录
        • 🟢 Task 052: 实现失败导入文件移动到 failed 目录
        • 🟢 Task 053: 为归档操作添加日志
      • 阶段 8: 优化与横切关注点; 目的: 影响多个用户故事的改进
        • 🟢 Task 054: 为所有新增 Java 文件添加 spotless 格式化
        • 🟢 Task 055: 验证所有 SQL 使用小写(符合 constitution 要求)
        • 🟢 Task 056: 验证所有 setter 注入遵循字段名 = Bean 名称约定
        • 🟢 Task 057: 验证所有日志使用 @Slf4j,非 System.out.println
        • 🟢 Task 058: 验证所有空值检查使用 StringUtils.isBlank,非手写检查
        • 🟢 Task 059: 验证所有返回使用 Optional.empty(),非 null
        • 🟢 Task 060: 为所有公共 API 添加文档注释
        • 🟢 Task 061: 运行 quickstart.md 验证 - 同步功能的端到端测试

中心服务平台 - 安全加固及优化(性能、稳定性、用户体验)

  • 目标: 安全加固及优化(性能、稳定性、用户体验)
  • 进度: 已完成 75% | 计划完成 90%(🟢 未开始 | 🟡 进行中 | ⚠️ 部分完成 | ✅ 已完成 | 📌 已验证)
    • 📌 以往已完成的工作内容此处不再重复,详情请参阅上周及上月的。

其它

  • 目标: 记录日常耗时的杂项工作、协作事项,以及必要的沟通、讨论等隐性事务。
  • 进度: 属非计划内事务(🟢 未开始 | 🟡 进行中 | ⚠️ 部分完成 | ✅ 已完成 | 📌 已验证)
    • 📌 以往已完成的工作内容此处不再重复,详情请参阅上周及上月的。
    • 23 日
      • 印度客户回放功能开会讨论

总结

备忘

Last updated on