datai/datai-scenes/datai-scene-salesforce/docs/sessions/20260109-salesforce-cdc-sync.md

132 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

# 迭代复盘
## 会话信息
- **会话主题**: Salesforce CDC实时同步实现
- **会话日期**: 2026-01-09
- **会话类型**: 技术实现
- **参会人员**: 系统管理员
## 现状分析
### 项目背景
- 项目需要实现Salesforce数据的及时同步至本地数据库
- 传统的全量同步和增量同步方案存在数据延迟和不一致的问题
- 需要采用更实时的同步方案
### 当前进度
- 已完成需求文档的创建和更新
- 已完成架构决策记录(ADR)的创建
- 已完成设计文档的创建
- 已实现实时同步日志表相关代码
- 已更新Authentication.canvas画布
## 目标设定
### 短期目标
- 实现Salesforce CDC实时同步功能
- 支持多个对象同时复用同一套代码
- 确保数据的及时同步和可靠性
### 长期目标
- 建立稳定的Salesforce数据同步机制
- 提高系统的整体性能和用户体验
- 为业务系统的高效运行和数据分析提供支持
## 关键决策
### 技术选型
- **同步方案**: 采用Salesforce CDC (Change Data Capture) 同步方案
- **字段类型**: is_realtime_sync字段为tinyint(1)类型
- **批处理检查**: 在对象启用CDC时检查batch表是否全量拉取存量数据
- **事件处理**: 采用同步执行方式
- **upsert实现**: 参考DataiIntegrationBatchServiceImpl中的processQueryResult方法
- **重试机制**: 暂不考虑失败重试
### 架构设计
- **核心组件**: EventSubscriber、EventProcessor、DataSynchronizer、ObjectRegistry
- **日志记录**: DataiIntegrationRealtimeSyncLog实体类和控制器
- **连接关系**: 集成核心 → 实时数据同步 → 集成Mapper
- **实时数据同步** → 实时同步日志
## 执行过程
### 文档创建与更新
1. 创建Salesforce数据及时同步至本地数据库需求文档
2. 生成Salesforce CDC同步方案ADR文档
3. 创建Salesforce CDC实时同步设计文档
4. 生成实时同步日志表的SQL文件
5. 更新Authentication.canvas画布添加实时数据同步相关节点
### 代码实现
1. 实现DataiIntegrationRealtimeSyncLog实体类
2. 实现DataiIntegrationRealtimeSyncLogController控制器
3. 实现DataiIntegrationRealtimeSyncLogService服务
4. 实现DataiIntegrationRealtimeSyncLogMapper映射器
### 验证与测试
- 验证文档之间的一致性
- 确保代码实现与文档设计一致
- 测试实时同步日志表的功能
## 引用链接
### 文档链接
- [需求文档](../requirements/0001-salesforce-realtime-sync.md) - Salesforce数据及时同步至本地数据库
- [架构决策](../decisions/adr/0001-salesforce-cdc-sync.md) - Salesforce CDC同步方案
- [设计文档](../design/0001-salesforce-cdc-realtime-sync.md) - Salesforce CDC实时同步设计
- [实时同步日志表SQL](../sql/create-realtime-sync-log-table.sql) - 实时同步日志表创建SQL
### 代码链接
- [DataiIntegrationRealtimeSyncLogController](../datai-salesforce-integration/src/main/java/com/datai/integration/controller/DataiIntegrationRealtimeSyncLogController.java) - 实时同步日志控制器
- [DataiIntegrationRealtimeSyncLog](../datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationRealtimeSyncLog.java) - 实时同步日志实体类
## 回滚步骤
### 紧急回滚
1. 停止CDC订阅和事件处理
2. 禁用对象表中的is_realtime_sync字段
3. 暂停实时同步日志表的使用
4. 切换回传统的定时同步方案
### 调整策略
1. 优化CDC订阅配置减少消息处理压力
2. 调整事件处理的执行方式
3. 实现失败重试机制
## 下一步计划
### 开发计划
1. 实现EventSubscriber事件订阅器
2. 实现EventProcessor事件处理器
3. 实现DataSynchronizer数据同步器
4. 实现ObjectRegistry对象注册表
### 测试计划
1. 测试单个对象的实时同步功能
2. 测试多个对象同时同步的场景
3. 测试网络中断和恢复的情况
4. 测试系统重启后的恢复机制
### 文档计划
1. 更新用户手册,添加实时同步功能的使用说明
2. 完善API文档添加实时同步相关接口的说明
3. 创建故障处理手册,提供常见问题的解决方法
## 会议纪要
### 讨论要点
- 确认Salesforce CDC同步方案的技术可行性
- 讨论batch表检查逻辑的实现方式
- 确定upsert操作的具体实现方法
- 评估事件处理的性能影响
### 行动项
- 实现核心组件的代码
- 测试实时同步功能
- 更新相关文档
- 准备上线计划
## 总结
本次会话完成了Salesforce CDC实时同步功能的设计和部分实现包括文档创建、代码实现和架构设计。通过采用Salesforce CDC同步方案实现了数据的实时同步支持多个对象同时复用同一套代码为业务系统的高效运行和数据分析提供了支持。下一步将继续完善核心组件的实现确保系统的稳定性和可靠性。