datai/datai-scenes/datai-scene-salesforce/docs/decisions/2026-02-02-003-01-ADR-连接管理技术选型.md

2.6 KiB
Raw Permalink Blame History

ADR-003-01: Metadata 连接管理技术选型

状态

已接受

日期

2026-02-02

背景

Metadata 连接管理是 Salesforce Metadata API 集成的基础能力,需要支持 source org 的连接创建、会话头管理和调用选项配置,并提供稳定的连接缓存与会话有效性检查能力。该能力还需要与现有的认证与会话管理架构一致,便于维护与复用。

决策

选择方案 1使用 AbstractConnectionFactory + SessionManager理由如下

  1. 复用现有基础设施AbstractConnectionFactory 已提供连接缓存与 Session 有效性检查能力
  2. 与 SessionManager 深度集成:直接获取 Session ID 与 Server URL避免重复实现会话管理逻辑
  3. 架构一致与认证和会话管理、Apex 连接管理保持一致
  4. 性能与稳定性:连接缓存减少重复创建连接的成本
  5. 线程安全AbstractConnectionFactory 使用锁机制保证并发安全
  6. 维护成本低:已有实现经过验证,风险可控

后果

正面影响

  • 复用成熟能力,缩短实现周期
  • 连接缓存提升性能,减少重复连接创建
  • 统一的会话管理与异常处理方式,降低维护成本
  • 与现有模块保持一致,团队学习成本低

负面影响

  • 依赖 datai-salesforce-auth 模块,模块耦合增加
  • 连接管理策略受 AbstractConnectionFactory 约束,灵活性下降
  • 固定 source org 类型的限制需要在后续需求中单独处理

替代方案

方案 2自定义工厂模式

  • 技术选型:自定义 MetadataConnectionFactory不继承 AbstractConnectionFactory
  • 优点:可完全按需定制连接管理逻辑,灵活性高
  • 缺点:需要自行实现连接缓存、会话检查与线程安全,开发与维护成本高
  • 适用场景:现有基础设施无法满足特殊连接策略的场景

方案 3每次调用创建新连接

  • 技术选型:不使用连接缓存,每次操作创建新 MetadataConnection
  • 优点:实现简单,避免缓存一致性问题
  • 缺点性能差无法复用连接Session 失效处理复杂
  • 适用场景:调用频率极低、性能要求不高的场景

方案 4引入连接池管理

  • 技术选型:构建独立的 MetadataConnection 连接池
  • 优点:连接复用更充分,可集中管理连接生命周期
  • 缺点:实现复杂,且与现有 AbstractConnectionFactory 重复
  • 适用场景:高并发、超高调用频率的场景

相关文档