626 lines
23 KiB
Markdown
626 lines
23 KiB
Markdown
# Salesforce数据集成模块 - 系统架构说明
|
||
|
||
## 系统架构概述
|
||
|
||
本系统采用经典的分层架构设计,结合工厂模式、代理模式等设计模式,实现了高内聚、低耦合的Salesforce数据集成解决方案。系统基于Spring Boot框架,使用MyBatis作为持久层框架,支持多种Salesforce API协议。
|
||
|
||
## 1. 分层架构
|
||
|
||
### 1.1 表现层(Controller Layer)
|
||
|
||
**职责**:接收HTTP请求,参数校验,调用业务层,返回响应
|
||
|
||
**核心组件**:
|
||
- [DataiIntegrationObjectController](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/controller/DataiIntegrationObjectController.java):对象同步控制
|
||
- [DataiIntegrationFieldController](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/controller/DataiIntegrationFieldController.java):字段管理
|
||
- [DataiIntegrationBatchController](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/controller/DataiIntegrationBatchController.java):批次管理
|
||
- [DataiIntegrationSyncLogController](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/controller/DataiIntegrationSyncLogController.java):同步日志管理
|
||
|
||
**技术特性**:
|
||
- 基于Spring MVC的RESTful API设计
|
||
- 使用Swagger/OpenAPI 3进行接口文档
|
||
- 基于Spring Security的权限控制
|
||
- 统一的异常处理
|
||
- 操作日志记录(@Log注解)
|
||
|
||
**设计模式**:
|
||
- 控制器模式:统一请求处理流程
|
||
- DTO模式:数据传输对象,隔离外部接口和内部模型
|
||
|
||
### 1.2 业务层(Service Layer)
|
||
|
||
**职责**:实现业务逻辑,事务管理,调用数据访问层
|
||
|
||
**核心组件**:
|
||
- [ISalesforceDataPullService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/ISalesforceDataPullService.java):Salesforce数据拉取服务
|
||
- [IDataiIntegrationObjectService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationObjectService.java):对象管理服务
|
||
- [IDataiIntegrationFieldService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationFieldService.java):字段管理服务
|
||
- [IDataiIntegrationBatchService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationBatchService.java):批次管理服务
|
||
- [IDataiIntegrationSyncLogService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationSyncLogService.java):同步日志服务
|
||
- [IDataiIntegrationApiCallLogService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationApiCallLogService.java):API调用日志服务
|
||
- [IDataiIntegrationRateLimitService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationRateLimitService.java):限流管理服务
|
||
- [IDataiIntegrationMetadataChangeService](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationMetadataChangeService.java):元数据变更服务
|
||
|
||
**技术特性**:
|
||
- 基于Spring的依赖注入
|
||
- 使用@Transactional进行事务管理
|
||
- 使用@Async进行异步处理
|
||
- 使用@Cacheable进行缓存管理
|
||
- 使用@Scheduled进行定时任务
|
||
|
||
**设计模式**:
|
||
- 服务层模式:封装业务逻辑
|
||
- 策略模式:不同的同步策略(全量/增量)
|
||
- 模板方法模式:定义同步流程骨架
|
||
|
||
### 1.3 数据访问层(Mapper Layer)
|
||
|
||
**职责**:数据库操作,SQL映射
|
||
|
||
**核心组件**:
|
||
- [DataiIntegrationObjectMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationObjectMapper.java):对象数据访问
|
||
- [DataiIntegrationFieldMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationFieldMapper.java):字段数据访问
|
||
- [DataiIntegrationBatchMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationBatchMapper.java):批次数据访问
|
||
- [DataiIntegrationBatchHistoryMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationBatchHistoryMapper.java):批次历史数据访问
|
||
- [DataiIntegrationSyncLogMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationSyncLogMapper.java):同步日志数据访问
|
||
- [DataiIntegrationApiCallLogMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationApiCallLogMapper.java):API调用日志数据访问
|
||
- [DataiIntegrationRateLimitMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationRateLimitMapper.java):限流数据访问
|
||
- [DataiIntegrationMetadataChangeMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/DataiIntegrationMetadataChangeMapper.java):元数据变更数据访问
|
||
- [CustomMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/CustomMapper.java):自定义SQL
|
||
- [SalesforceMapper](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/mapper/SalesforceMapper.java):Salesforce相关SQL
|
||
|
||
**技术特性**:
|
||
- 基于MyBatis的ORM映射
|
||
- 使用XML配置SQL语句
|
||
- 支持动态SQL
|
||
- 使用ResultMap进行结果映射
|
||
|
||
**设计模式**:
|
||
- DAO模式:数据访问对象
|
||
- Mapper模式:SQL映射
|
||
|
||
### 1.4 模型层(Model Layer)
|
||
|
||
**职责**:数据模型定义,数据传输
|
||
|
||
**核心组件**:
|
||
|
||
**领域模型(Domain)**:
|
||
- [DataiIntegrationObject](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationObject.java):对象实体
|
||
- [DataiIntegrationField](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationField.java):字段实体
|
||
- [DataiIntegrationBatch](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationBatch.java):批次实体
|
||
- [DataiIntegrationBatchHistory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationBatchHistory.java):批次历史实体
|
||
- [DataiIntegrationSyncLog](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationSyncLog.java):同步日志实体
|
||
- [DataiIntegrationApiCallLog](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationApiCallLog.java):API调用日志实体
|
||
- [DataiIntegrationRateLimit](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationRateLimit.java):限流实体
|
||
- [DataiIntegrationMetadataChange](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationMetadataChange.java):元数据变更实体
|
||
- [DataiIntegrationPicklist](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationPicklist.java):选择列表实体
|
||
- [DataiIntegrationFilterLookup](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationFilterLookup.java):过滤查找实体
|
||
|
||
**数据传输对象(DTO)**:
|
||
- DataiIntegrationObjectDto:对象DTO
|
||
- DataiIntegrationFieldDto:字段DTO
|
||
- DataiIntegrationBatchDto:批次DTO
|
||
- DataiIntegrationSyncLogDto:同步日志DTO
|
||
- DataiIntegrationApiCallLogDto:API调用日志DTO
|
||
- DataiIntegrationRateLimitDto:限流DTO
|
||
- DataiIntegrationMetadataChangeDto:元数据变更DTO
|
||
- DataiConfigAuditLogDto:配置审计日志DTO
|
||
- DataiConfigEnvironmentDto:配置环境DTO
|
||
- DataiConfigSnapshotDto:配置快照DTO
|
||
|
||
**视图对象(VO)**:
|
||
- DataiIntegrationObjectVo:对象VO
|
||
- DataiIntegrationFieldVo:字段VO
|
||
- DataiIntegrationBatchVo:批次VO
|
||
- DataiIntegrationSyncLogVo:同步日志VO
|
||
- DataiIntegrationApiCallLogVo:API调用日志VO
|
||
- DataiIntegrationRateLimitVo:限流VO
|
||
- DataiIntegrationMetadataChangeVo:元数据变更VO
|
||
|
||
**参数对象(Param)**:
|
||
- [DataiSyncParam](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/model/param/DataiSyncParam.java):同步参数
|
||
|
||
**技术特性**:
|
||
- 使用Lombok简化代码
|
||
- 使用Swagger注解生成API文档
|
||
- 继承BaseEntity基类
|
||
- 使用Jackson进行JSON序列化
|
||
|
||
**设计模式**:
|
||
- DTO模式:数据传输对象
|
||
- VO模式:视图对象
|
||
- Builder模式:对象构建
|
||
|
||
## 2. 核心子系统架构
|
||
|
||
### 2.1 连接管理子系统
|
||
|
||
**职责**:管理Salesforce连接,支持多种API协议
|
||
|
||
**核心组件**:
|
||
- [SessionManager](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/SessionManager.java):会话管理器
|
||
- [AbstractConnectionFactory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/factory/AbstractConnectionFactory.java):连接工厂抽象基类
|
||
- [RESTConnectionFactory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/factory/impl/RESTConnectionFactory.java):REST连接工厂
|
||
- [SOAPConnectionFactory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/factory/impl/SOAPConnectionFactory.java):SOAP连接工厂
|
||
- [BulkV1ConnectionFactory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/factory/impl/BulkV1ConnectionFactory.java):Bulk V1连接工厂
|
||
- [BulkV2ConnectionFactory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/factory/impl/BulkV2ConnectionFactory.java):Bulk V2连接工厂
|
||
- [ConnectionProxy](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/proxy/ConnectionProxy.java):连接代理
|
||
|
||
**接口定义**:
|
||
- [ISalesforceConnectionFactory](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/factory/ISalesforceConnectionFactory.java):连接工厂接口
|
||
- [IRESTConnection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/IRESTConnection.java):REST连接接口
|
||
- [IPartnerV1Connection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/IPartnerV1Connection.java):SOAP连接接口
|
||
- [IBulkV1Connection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/IBulkV1Connection.java):Bulk V1连接接口
|
||
- [IBulkV2Connection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/IBulkV2Connection.java):Bulk V2连接接口
|
||
|
||
**实现类**:
|
||
- [RESTConnection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/RESTConnection.java):REST连接实现
|
||
- [PartnerV1Connection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/PartnerV1Connection.java):SOAP连接实现
|
||
- [BulkV1Connection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/BulkV1Connection.java):Bulk V1连接实现
|
||
- [BulkV2Connection](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/core/BulkV2Connection.java):Bulk V2连接实现
|
||
|
||
**设计模式**:
|
||
- 工厂模式:创建不同类型的连接
|
||
- 抽象工厂模式:定义连接工厂的抽象
|
||
- 模板方法模式:定义连接创建流程
|
||
- 单例模式:连接实例缓存
|
||
- 代理模式:连接代理
|
||
|
||
**技术特性**:
|
||
- 连接池管理
|
||
- 会话缓存
|
||
- 自动重连
|
||
- 线程安全
|
||
|
||
### 2.2 数据同步子系统
|
||
|
||
**职责**:实现Salesforce数据同步功能
|
||
|
||
**核心组件**:
|
||
- [SalesforceDataPullServiceImpl](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/impl/SalesforceDataPullServiceImpl.java):数据拉取服务实现
|
||
|
||
**同步流程**:
|
||
1. **全量同步流程**:
|
||
- 查询所有全量批次
|
||
- 使用线程池并行拉取批次数据
|
||
- 统计同步结果
|
||
- 更新对象状态
|
||
|
||
2. **增量同步流程**:
|
||
- 检查增量更新开关
|
||
- 创建增量批次
|
||
- 拉取增量数据
|
||
- 更新对象状态
|
||
|
||
**设计模式**:
|
||
- 策略模式:全量同步和增量同步策略
|
||
- 模板方法模式:同步流程模板
|
||
- 观察者模式:同步状态监听
|
||
|
||
**技术特性**:
|
||
- 多线程并行处理
|
||
- 批次级别的错误隔离
|
||
- 自动重试机制
|
||
- 进度跟踪
|
||
|
||
### 2.3 元数据管理子系统
|
||
|
||
**职责**:管理Salesforce对象和字段的元数据
|
||
|
||
**核心组件**:
|
||
- 对象元数据同步
|
||
- 字段元数据同步
|
||
- 元数据变更监控
|
||
|
||
**元数据同步流程**:
|
||
1. 从Salesforce获取对象元数据
|
||
2. 保存到本地数据库
|
||
3. 获取对象字段元数据
|
||
4. 保存字段信息
|
||
5. 获取选择列表值
|
||
6. 保存选择列表信息
|
||
7. 获取过滤查找信息
|
||
8. 保存过滤查找信息
|
||
9. 记录元数据变更
|
||
|
||
**设计模式**:
|
||
- 建造者模式:元数据对象构建
|
||
- 观察者模式:元数据变更监听
|
||
|
||
### 2.4 监控与日志子系统
|
||
|
||
**职责**:监控系统运行状态,记录操作日志
|
||
|
||
**核心组件**:
|
||
- API调用日志
|
||
- 同步日志
|
||
- 限流监控
|
||
- 统计分析
|
||
|
||
**日志记录流程**:
|
||
1. 拦截器捕获操作
|
||
2. 记录操作信息
|
||
3. 记录操作结果
|
||
4. 记录执行时间
|
||
5. 保存到数据库
|
||
|
||
**设计模式**:
|
||
- 观察者模式:日志监听
|
||
- 责任链模式:日志处理链
|
||
|
||
### 2.5 定时任务子系统
|
||
|
||
**职责**:执行定时任务
|
||
|
||
**核心组件**:
|
||
- [SalesforceSyncTask](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/task/SalesforceSyncTask.java):同步任务
|
||
- [RateLimitResetTask](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/task/RateLimitResetTask.java):限流重置任务
|
||
|
||
**技术特性**:
|
||
- 基于Spring @Scheduled的定时任务
|
||
- 支持Cron表达式
|
||
- 任务执行状态监控
|
||
|
||
## 3. 数据库设计
|
||
|
||
### 3.1 核心表结构
|
||
|
||
**对象表(datai_integration_object)**:
|
||
- 存储Salesforce对象的元数据和配置信息
|
||
- 支持对象级别的同步配置
|
||
- 记录对象同步状态
|
||
|
||
**字段表(datai_integration_field)**:
|
||
- 存储Salesforce对象的字段信息
|
||
- 记录字段属性和权限
|
||
- 支持字段级别的配置
|
||
|
||
**批次表(datai_integration_batch)**:
|
||
- 存储数据同步的批次配置
|
||
- 支持全量批次和增量批次
|
||
- 记录批次执行状态
|
||
|
||
**批次历史表(datai_integration_batch_history)**:
|
||
- 存储批次执行历史
|
||
- 记录批次执行结果
|
||
- 支持批次执行分析
|
||
|
||
**同步日志表(datai_integration_sync_log)**:
|
||
- 存储数据同步操作日志
|
||
- 记录同步操作类型和状态
|
||
- 支持同步操作审计
|
||
|
||
**API调用日志表(datai_integration_api_call_log)**:
|
||
- 存储Salesforce API调用日志
|
||
- 记录API调用时间和耗时
|
||
- 支持API使用分析
|
||
|
||
**限流表(datai_integration_rate_limit)**:
|
||
- 存储API限流信息
|
||
- 记录API使用量
|
||
- 支持限流监控
|
||
|
||
**元数据变更表(datai_integration_metadata_change)**:
|
||
- 存储元数据变更记录
|
||
- 记录字段新增、修改、删除
|
||
- 支持元数据变更审计
|
||
|
||
**选择列表表(datai_integration_picklist)**:
|
||
- 存储选择列表值
|
||
- 记录选择列表配置
|
||
- 支持选择列表管理
|
||
|
||
**过滤查找表(datai_integration_filter_lookup)**:
|
||
- 存储过滤查找信息
|
||
- 记录字段依赖关系
|
||
- 支持字段依赖分析
|
||
|
||
### 3.2 分库分表方案
|
||
|
||
**当前方案**:
|
||
- 单库单表
|
||
- 基于对象API的表隔离
|
||
- 每个对象对应一张表
|
||
|
||
**分区方案**:
|
||
- 对于大数据量对象(> 500万条),使用分区表
|
||
- 按日期字段进行范围分区
|
||
- 支持按月、按季度、按年分区
|
||
|
||
**分区表示例**:
|
||
```sql
|
||
CREATE TABLE sf_account (
|
||
id VARCHAR(18) PRIMARY KEY,
|
||
name VARCHAR(255),
|
||
created_date DATETIME,
|
||
last_modified_date DATETIME
|
||
) PARTITION BY RANGE (YEAR(created_date)) (
|
||
PARTITION p2023 VALUES LESS THAN (2024),
|
||
PARTITION p2024 VALUES LESS THAN (2025),
|
||
PARTITION p2025 VALUES LESS THAN (2026),
|
||
PARTITION pmax VALUES LESS THAN MAXVALUE
|
||
);
|
||
```
|
||
|
||
**分表方案**:
|
||
- 对于超大数据量对象(> 1亿条),考虑分表
|
||
- 按对象ID哈希分表
|
||
- 支持动态扩容
|
||
|
||
**分表示例**:
|
||
```sql
|
||
-- 按ID哈希分表
|
||
CREATE TABLE sf_account_0 (
|
||
id VARCHAR(18) PRIMARY KEY,
|
||
name VARCHAR(255),
|
||
...
|
||
);
|
||
CREATE TABLE sf_account_1 (
|
||
id VARCHAR(18) PRIMARY KEY,
|
||
name VARCHAR(255),
|
||
...
|
||
);
|
||
```
|
||
|
||
### 3.3 索引设计
|
||
|
||
**主键索引**:
|
||
- 所有表都使用自增ID作为主键
|
||
- Salesforce对象表使用Salesforce ID作为主键
|
||
|
||
**唯一索引**:
|
||
- 对象API唯一索引
|
||
- 字段API+字段名称唯一索引
|
||
|
||
**普通索引**:
|
||
- 同步状态索引
|
||
- 同步时间索引
|
||
- 批次类型索引
|
||
- 创建时间索引
|
||
|
||
**复合索引**:
|
||
- 对象API+同步状态复合索引
|
||
- 批次API+批次类型复合索引
|
||
|
||
## 4. 并发控制
|
||
|
||
### 4.1 线程池配置
|
||
|
||
**SalesforceExecutor**:
|
||
- 核心线程数:CPU核心数
|
||
- 最大线程数:CPU核心数 * 2
|
||
- 队列容量:100
|
||
- 线程存活时间:60秒
|
||
|
||
### 4.2 并发控制策略
|
||
|
||
**连接并发控制**:
|
||
- 使用连接池管理连接
|
||
- 使用ReentrantLock保证线程安全
|
||
- 使用ConcurrentHashMap缓存连接
|
||
|
||
**数据同步并发控制**:
|
||
- 使用线程池执行同步任务
|
||
- 使用CopyOnWriteArrayList存储结果
|
||
- 使用Future管理异步任务
|
||
|
||
**数据库并发控制**:
|
||
- 使用事务保证数据一致性
|
||
- 使用乐观锁防止并发冲突
|
||
- 使用悲观锁保证关键操作
|
||
|
||
### 4.3 分布式锁
|
||
|
||
**当前方案**:
|
||
- 单机部署,使用本地锁
|
||
|
||
**未来方案**:
|
||
- 分布式部署,使用Redis分布式锁
|
||
- 支持集群部署
|
||
|
||
## 5. 缓存策略
|
||
|
||
### 5.1 会话缓存
|
||
|
||
**缓存内容**:
|
||
- Salesforce会话信息
|
||
- 连接实例
|
||
|
||
**缓存策略**:
|
||
- 使用Spring Cache
|
||
- 基于内存的缓存
|
||
- 会话过期自动清理
|
||
|
||
### 5.2 元数据缓存
|
||
|
||
**缓存内容**:
|
||
- 对象元数据
|
||
- 字段元数据
|
||
|
||
**缓存策略**:
|
||
- 使用Spring Cache
|
||
- 基于内存的缓存
|
||
- 定时刷新
|
||
|
||
### 5.3 配置缓存
|
||
|
||
**缓存内容**:
|
||
- 对象配置
|
||
- 批次配置
|
||
|
||
**缓存策略**:
|
||
- 使用Spring Cache
|
||
- 基于内存的缓存
|
||
- 配置变更时刷新
|
||
|
||
## 6. 事务管理
|
||
|
||
### 6.1 事务策略
|
||
|
||
**本地事务**:
|
||
- 使用Spring @Transactional
|
||
- 基于数据库事务
|
||
- 支持事务传播
|
||
|
||
### 6.2 事务边界
|
||
|
||
**同步事务**:
|
||
- 批次级别的事务
|
||
- 单个批次失败不影响其他批次
|
||
|
||
**元数据事务**:
|
||
- 对象级别的事务
|
||
- 对象同步失败不影响其他对象
|
||
|
||
### 6.3 事务隔离级别
|
||
|
||
**默认隔离级别**:
|
||
- READ_COMMITTED
|
||
|
||
**特殊场景**:
|
||
- 关键操作使用SERIALIZABLE
|
||
|
||
## 7. 异常处理
|
||
|
||
### 7.1 异常分类
|
||
|
||
**业务异常**:
|
||
- 对象不存在
|
||
- 批次不存在
|
||
- 配置错误
|
||
|
||
**系统异常**:
|
||
- 连接失败
|
||
- 网络超时
|
||
- 数据库错误
|
||
|
||
**第三方异常**:
|
||
- Salesforce API错误
|
||
- 限流触发
|
||
- 会话过期
|
||
|
||
### 7.2 异常处理策略
|
||
|
||
**自动重试**:
|
||
- 网络异常自动重试
|
||
- 限流触发自动重试
|
||
- 会话过期自动重连
|
||
|
||
**错误记录**:
|
||
- 记录错误日志
|
||
- 记录错误信息
|
||
- 记录错误堆栈
|
||
|
||
**错误恢复**:
|
||
- 批次级别的错误恢复
|
||
- 手动重试机制
|
||
- 断点续传
|
||
|
||
## 8. 安全设计
|
||
|
||
### 8.1 认证授权
|
||
|
||
**认证**:
|
||
- 基于Spring Security
|
||
- 支持多种认证方式
|
||
|
||
**授权**:
|
||
- 基于角色的访问控制(RBAC)
|
||
- 细粒度的权限控制
|
||
- 接口级别的权限控制
|
||
|
||
### 8.2 数据安全
|
||
|
||
**数据加密**:
|
||
- 敏感数据加密存储
|
||
- 传输数据加密
|
||
|
||
**数据隔离**:
|
||
- 基于部门的数据隔离
|
||
- 基于用户的数据隔离
|
||
|
||
### 8.3 审计日志
|
||
|
||
**操作审计**:
|
||
- 记录所有操作
|
||
- 记录操作人
|
||
- 记录操作时间
|
||
|
||
**数据审计**:
|
||
- 记录数据变更
|
||
- 记录变更前后值
|
||
- 记录变更原因
|
||
|
||
## 9. 性能优化
|
||
|
||
### 9.1 查询优化
|
||
|
||
**索引优化**:
|
||
- 合理创建索引
|
||
- 避免全表扫描
|
||
- 使用覆盖索引
|
||
|
||
**SQL优化**:
|
||
- 避免SELECT *
|
||
- 使用批量操作
|
||
- 使用分页查询
|
||
|
||
### 9.2 缓存优化
|
||
|
||
**多级缓存**:
|
||
- 一级缓存:MyBatis缓存
|
||
- 二级缓存:Redis缓存
|
||
- 本地缓存:Caffeine缓存
|
||
|
||
**缓存策略**:
|
||
- 热点数据缓存
|
||
- 定时刷新
|
||
- 缓存预热
|
||
|
||
### 9.3 并发优化
|
||
|
||
**异步处理**:
|
||
- 使用异步任务
|
||
- 使用消息队列
|
||
- 使用事件驱动
|
||
|
||
**批量处理**:
|
||
- 批量插入
|
||
- 批量更新
|
||
- 批量删除
|
||
|
||
## 10. 可扩展性设计
|
||
|
||
### 10.1 插件化设计
|
||
|
||
**连接插件**:
|
||
- 支持自定义连接工厂
|
||
- 支持自定义连接实现
|
||
|
||
**同步插件**:
|
||
- 支持自定义同步策略
|
||
- 支持自定义数据转换
|
||
|
||
### 10.2 配置化设计
|
||
|
||
**动态配置**:
|
||
- 支持运行时配置变更
|
||
- 支持配置热加载
|
||
|
||
**策略配置**:
|
||
- 支持同步策略配置
|
||
- 支持批次策略配置
|
||
|
||
### 10.3 模块化设计
|
||
|
||
**模块独立**:
|
||
- 模块间低耦合
|
||
- 模块可独立部署
|
||
- 模块可独立扩展
|
||
|
||
**接口标准**:
|
||
- 定义标准接口
|
||
- 支持多种实现
|
||
- 支持接口替换
|