132 lines
4.8 KiB
Markdown
132 lines
4.8 KiB
Markdown
|
|
# 迭代复盘
|
|||
|
|
|
|||
|
|
## 会话信息
|
|||
|
|
|
|||
|
|
- **会话主题**: 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同步方案,实现了数据的实时同步,支持多个对象同时复用同一套代码,为业务系统的高效运行和数据分析提供了支持。下一步将继续完善核心组件的实现,确保系统的稳定性和可靠性。
|