datai/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/techContext.md

12 KiB
Raw Blame History

Salesforce数据集成模块 - 技术上下文

技术栈概览

本模块基于Java 22和Spring Boot框架构建采用Maven作为构建工具使用MyBatis作为持久层框架集成Salesforce Partner API实现高效、可靠的数据集成解决方案。

1. 开发环境

1.1 JDK版本

  • 版本JDK 22
  • 供应商OpenJDK / Oracle JDK
  • 特性
    • 支持最新的Java语言特性
    • 性能优化
    • 安全性增强

1.2 构建工具

  • 工具Maven
  • 版本3.6+
  • 配置
    • 编译源码版本22
    • 编译目标版本22
    • 编码UTF-8

1.3 IDE

  • 推荐IDEIntelliJ IDEA
  • 插件
    • Lombok Plugin
    • MyBatis Plugin
    • Spring Boot Plugin

2. 核心框架

2.1 Spring Boot

  • 版本:根据父模块版本
  • 核心依赖
    • spring-boot-starter-webWeb开发
    • spring-boot-starter-aopAOP支持
    • spring-boot-starter-validation参数校验
    • spring-boot-starter-cache缓存支持
    • spring-boot-starter-actuator监控支持

关键配置

  • 自动配置
  • 嵌入式服务器Tomcat
  • 配置外部化
  • 健康检查

2.2 Spring MVC

  • 作用Web层框架
  • 特性
    • RESTful API支持
    • 请求映射
    • 参数绑定
    • 异常处理
    • 拦截器

2.3 Spring Security

  • 作用:安全框架
  • 特性
    • 认证授权
    • 权限控制
    • 方法级安全
    • CSRF防护

2.4 Spring AOP

  • 作用:面向切面编程
  • 特性
    • 日志记录
    • 事务管理
    • 权限控制
    • 性能监控

2.5 Spring Cache

  • 作用:缓存抽象
  • 特性
    • 缓存注解
    • 缓存管理器
    • 多级缓存支持

3. 持久层框架

3.1 MyBatis

  • 版本:根据父模块版本
  • 核心依赖
    • mybatis-spring-boot-starterMyBatis集成
    • mybatis-plus-boot-starterMyBatis-Plus增强

特性

  • SQL映射
  • 动态SQL
  • 结果映射
  • 缓存支持
  • 插件机制

配置

  • Mapper扫描
  • 类型别名
  • 配置文件位置

3.2 MyBatis-Plus

  • 作用MyBatis增强工具
  • 特性
  • 通用Mapper
  • 通用Service
  • 代码生成器
  • 分页插件
  • 性能分析

4. 数据库

4.1 数据库类型

  • 推荐MySQL 8.0+
  • 兼容PostgreSQL、Oracle、SQL Server

4.2 连接池

  • 框架HikariCPSpring Boot默认
  • 配置
    • 最大连接数10
    • 最小空闲连接5
    • 连接超时30000ms
    • 空闲超时600000ms

4.3 数据库特性

  • 事务支持ACID
  • 隔离级别READ_COMMITTED
  • 字符集UTF-8
  • 存储引擎InnoDB

5. Salesforce API集成

5.1 Salesforce Partner API

  • 版本v56.0+
  • 依赖
    • salesforce-partner本地jar包
    • 路径src/main/resources/lib/partner.jar

特性

  • SOAP协议
  • 对象元数据查询
  • 数据查询SOQL
  • 数据操作DML

5.2 Salesforce REST API

  • 版本v56.0+
  • 特性
  • RESTful接口
  • JSON格式
  • OAuth 2.0认证
  • 限流控制

5.3 Salesforce Bulk API

  • 版本
    • Bulk API V1基于SOAP
    • Bulk API V2基于REST

特性

  • 批量数据操作
  • 异步处理
  • 大数据量支持

6. 核心依赖库

6.1 日志框架

  • 框架SLF4J + Logback
  • 依赖
    • spring-boot-starter-logging
    • lombok日志注解

特性

  • 日志级别控制
  • 日志输出格式
  • 日志文件滚动
  • 异步日志

6.2 JSON处理

  • 框架Jackson
  • 依赖
    • spring-boot-starter-web包含Jackson

特性

  • JSON序列化/反序列化
  • 日期时间处理
  • 自定义序列化器

6.3 工具类库

  • Apache Commons Lang3

    • 字符串处理
    • 对象处理
    • 类型转换
  • Apache Commons Collections

    • 集合工具
    • 集合操作
  • Hutool(可选):

    • 丰富的工具类
    • 简化开发

6.4 参数校验

  • 框架Jakarta Validation
  • 依赖
    • spring-boot-starter-validation

特性

  • 参数校验注解
  • 自定义校验器
  • 校验分组

6.5 API文档

  • 框架Swagger/OpenAPI 3
  • 依赖
    • springdoc-openapi-starter-webmvc-ui

特性

  • 接口文档生成
  • 在线测试
  • 接口版本管理

6.6 HTTP客户端

  • 框架OkHttp / Apache HttpClient
  • 用途
    • REST API调用
    • 文件上传下载

7. 中间件

7.1 缓存中间件

  • 本地缓存CaffeineSpring Boot默认
  • 分布式缓存Redis可选

Caffeine配置

  • 最大容量10000
  • 过期时间30分钟
  • 基于大小的淘汰策略

Redis配置(可选):

  • 连接池Lettuce
  • 序列化Jackson
  • 过期策略TTL

7.2 消息队列(可选)

  • 框架RabbitMQ / Kafka
  • 用途
    • 异步任务处理
    • 事件驱动
    • 解耦系统

7.3 任务调度

  • 框架Spring @Scheduled
  • 特性
    • Cron表达式
    • 固定延迟
    • 固定频率

定时任务

  • 元数据变更拉取任务
  • 限流重置任务
  • 数据同步任务

7.4 监控中间件

  • 框架Spring Boot Actuator
  • 特性
    • 健康检查
    • 指标收集
    • 端点管理

端点

  • /actuator/health健康检查
  • /actuator/metrics指标信息
  • /actuator/info应用信息

8. 开发工具

8.1 代码生成

  • 工具MyBatis-Plus Generator
  • 功能
    • Entity生成
    • Mapper生成
    • Service生成
    • Controller生成

8.2 版本控制

  • 工具Git
  • 平台GitLab / GitHub

8.3 CI/CD

  • 工具Jenkins / GitLab CI
  • 流程
    • 代码构建
    • 单元测试
    • 代码扫描
    • 部署

9. 测试框架

9.1 单元测试

  • 框架JUnit 5
  • 依赖
    • spring-boot-starter-test
    • mockito-core

特性

  • 测试注解
  • Mock支持
  • 断言库

9.2 集成测试

  • 框架Spring Boot Test
  • 特性
  • 嵌入式数据库
  • 测试配置
  • 测试生命周期

9.3 性能测试

  • 工具JMeter / Gatling
  • 用途
    • 压力测试
    • 性能基准测试

10. 部署环境

10.1 应用服务器

  • 容器TomcatSpring Boot内置
  • 版本9.0+
  • 配置
    • 最大线程数200
    • 连接超时20000ms
    • 接收缓冲区8192

10.2 容器化

  • 工具Docker
  • 镜像OpenJDK 22
  • 编排Docker Compose / Kubernetes

10.3 操作系统

  • 推荐LinuxCentOS 7+ / Ubuntu 18.04+
  • 兼容Windows Server、macOS

11. 配置管理

11.1 配置文件

  • 格式YAML / Properties
  • 位置
    • application.yml主配置
    • application-dev.yml开发环境
    • application-test.yml测试环境
    • application-prod.yml生产环境

11.2 配置中心(可选)

  • 工具Spring Cloud Config / Nacos
  • 特性
    • 配置集中管理
    • 配置动态刷新
    • 配置版本管理

12. 日志管理

12.1 日志级别

  • TRACE:最详细的日志信息
  • DEBUG:调试信息
  • INFO:一般信息
  • WARN:警告信息
  • ERROR:错误信息

12.2 日志输出

  • 控制台输出:开发环境
  • 文件输出:生产环境
  • 日志文件
    • application.log应用日志
    • error.log错误日志
    • access.log访问日志

12.3 日志格式

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

13. 监控与告警

13.1 应用监控

  • 工具Spring Boot Actuator + Prometheus
  • 指标
    • JVM指标
    • HTTP指标
    • 数据库指标
    • 自定义指标

13.2 日志监控

  • 工具ELK StackElasticsearch + Logstash + Kibana
  • 特性
    • 日志收集
    • 日志存储
    • 日志分析
    • 日志可视化

13.3 告警通知

  • 工具AlertManager / 钉钉 / 邮件
  • 告警规则
    • 应用异常
    • 性能下降
    • 资源不足

14. 性能优化

14.1 JVM优化

  • 堆内存-Xms2g -Xmx2g
  • 新生代-Xmn512m
  • 垃圾回收器G1GC
  • GC日志-Xlog:gc*

14.2 数据库优化

  • 索引优化:合理创建索引
  • SQL优化:避免慢查询
  • 连接池优化:调整连接池大小
  • 分库分表:大数据量场景

14.3 缓存优化

  • 多级缓存:本地缓存 + 分布式缓存
  • 缓存预热:启动时加载热点数据
  • 缓存更新:定时刷新或事件驱动

15. 安全措施

15.1 认证安全

  • 方式JWT / OAuth 2.0
  • 加密AES-256
  • 过期时间2小时

15.2 通信安全

  • 协议HTTPS
  • 证书TLS 1.2+
  • 加密算法AES-256

15.3 数据安全

  • 加密存储:敏感数据加密
  • 脱敏展示:日志和接口脱敏
  • 备份策略:定期备份

16. 依赖管理

16.1 Maven依赖

核心依赖

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    
    <!-- MyBatis -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>
    
    <!-- Salesforce Partner API -->
    <dependency>
        <groupId>salesforce</groupId>
        <artifactId>salesforce-partner</artifactId>
        <version>0.0.1</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/lib/partner.jar</systemPath>
    </dependency>
    
    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    
    <!-- Swagger -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    </dependency>
    
    <!-- Validation -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    
    <!-- Commons -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    
    <!-- Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

16.2 版本管理

  • 父模块datai-scene-salesforce
  • 版本号1.0.0
  • 版本策略:统一版本管理

17. 开发规范

17.1 代码规范

  • 命名规范:驼峰命名法
  • 注释规范JavaDoc
  • 格式规范Google Java Style Guide
  • 检查工具Checkstyle / SpotBugs

17.2 Git规范

  • 分支策略Git Flow
  • 提交规范Conventional Commits
  • 代码审查Pull Request

17.3 文档规范

  • API文档Swagger/OpenAPI
  • 技术文档Markdown
  • 架构文档C4 Model

18. 技术债务

18.1 已知问题

  • partner.jar使用system scope不利于依赖管理
  • 缺少单元测试覆盖
  • 缺少性能基准测试

18.2 改进计划

  • 将partner.jar发布到私有Maven仓库
  • 增加单元测试覆盖率到80%+
  • 建立性能基准测试
  • 引入代码质量扫描工具

19. 技术选型理由

19.1 为什么选择Spring Boot

  • 成熟稳定,社区活跃
  • 开箱即用,配置简单
  • 生态完善,集成方便
  • 微服务友好

19.2 为什么选择MyBatis

  • SQL控制灵活
  • 性能优秀
  • 学习成本低
  • 适合复杂查询

19.3 为什么选择Salesforce Partner API

  • 功能全面
  • 稳定可靠
  • 文档完善
  • 社区支持好

19.4 为什么选择JDK 22

  • 最新特性
  • 性能优化
  • 长期支持
  • 向前兼容

20. 未来技术演进

20.1 短期计划3-6个月

  • 引入Redis缓存
  • 增加单元测试
  • 优化性能
  • 完善监控

20.2 中期计划6-12个月

  • 引入消息队列
  • 支持分布式部署
  • 引入配置中心
  • 优化架构

20.3 长期计划12+个月)

  • 支持云原生
  • 引入Service Mesh
  • 支持多云部署
  • 构建数据集成平台

21. 技术支持

21.1 官方文档

21.2 社区资源

  • Stack Overflow
  • GitHub Issues
  • 技术博客
  • 技术论坛

21.3 内部资源

  • 技术文档
  • 代码仓库
  • 知识库
  • 培训材料