创建日期:2025-09-28 状态:完成 目标:为HTTP客户端库的技术实现提供决策依据
调研问题:当前src/utils/httpClient.ts的架构是否适合扩展为库优先的多平台客户端?
发现:
exchange?: 'aster' | 'pacifica' | 'binance'
)决策:保留现有架构优势,重构为独立库。现有实现作为参考架构基础,新库将增强多平台支持和认证集成。
理由:现有代码已证明架构可行性,重构比重写更安全,可保持API兼容性。
调研问题:如何最优地集成现有credential-manager库进行平台认证?
发现:
决策:HTTP客户端库将依赖credential-manager作为认证层,通过工厂模式获取签名实例。
理由:避免重复实现,保持关注点分离,credential-manager已通过测试验证。
调研问题:如何设计统一接口同时支持平台特定的HTTP特性?
备选方案:
决策:选择方案A - 平台适配器模式
理由:
调研问题:如何确保架构具有良好的通用性,方便未来增加更多交易平台?
设计原则:
技术实现:
// 统一的平台接口
interface PlatformAdapter {
platform: string
authenticate(request: Request): Promise<Request>
transform(response: Response): Promise<StandardResponse>
validateConfig(): boolean
}
// 动态平台注册
class HttpClientFactory {
static registerPlatform(name: string, adapter: PlatformAdapter): void
static createClient(platform: string): HttpClient
}
扩展机制:
未来平台扩展示例:
// 添加新平台只需三步:
// 1. 实现平台适配器
class OKXAdapter implements PlatformAdapter {
platform = 'okx'
authenticate(request) { /* OKX认证逻辑 */ }
transform(response) { /* OKX响应转换 */ }
}
// 2. 注册平台
HttpClientFactory.registerPlatform('okx', new OKXAdapter())
// 3. 配置使用
const client = HttpClientFactory.createClient('okx')
决策:采用插件化架构 + 配置驱动的混合模式
理由:
调研问题:如何在保证<100ms响应时间的同时支持1000+并发请求?
技术选择:
决策:实现连接池和智能超时,暂不实施管道化(复杂度高)
理由:连接池提供最大性能提升,智能超时确保资源不被阻塞,管道化收益不明确。
调研问题:如何在满足完整日志要求的同时不影响性能?
发现:
决策:使用异步日志写入,支持敏感数据记录,实现30天自动清理
理由:异步写入确保不影响HTTP性能,完整日志满足合规要求。
决策点 | 选择方案 | 备选方案 | 决策理由 |
---|---|---|---|
库架构 | 独立npm包 (libs/http-client) | 扩展现有utils | 符合库优先原则,可复用 |
认证集成 | 依赖credential-manager | 内置认证逻辑 | 避免重复,关注点分离 |
平台支持 | 插件化适配器模式 | 配置驱动 | 灵活性高,易扩展新平台 |
扩展机制 | 动态注册+配置模板 | 硬编码平台列表 | 支持运行时扩展,第三方贡献 |
性能优化 | 连接池+智能超时 | 请求管道化 | 收益明确,复杂度适中 |
日志策略 | 异步完整日志 | 同步精简日志 | 满足合规,不影响性能 |
作为交易系统基础设施,HTTP客户端必须确保:
调研结论:技术方案可行,主要风险已识别并有缓解措施。建议按优先级分阶段实施,重点关注认证集成和性能优化。