You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加密货币机器人平台大量后台任务WebSocket连接的可扩展方案咨询

核心疑问解答

  1. 你观测到同类平台仅暴露一个*wss://*地址,不代表它们在单台机器运行。这是统一接入网关的标准做法:用支持WebSocket代理的负载均衡组件(如Nginx、APISIX)对外暴露统一域名,请求会按规则转发到后端几十上百台业务节点,前端完全感知不到后端集群的存在。
  2. 单台服务器的实际稳定长连接承载量远低于理论值,除了文件描述符占用,还要算内核缓冲区、连接状态维护、业务逻辑处理的CPU和内存开销,普通8核16G服务器稳定跑10~15万条私有WebSocket连接已经是比较合理的阈值,建议预留足够冗余不要卡理论上限部署。

大型平台的通用可扩展架构方案

1. 公共数据流独立复用

所有不需要listen key的公共数据(订单簿、交易历史、K线等),完全不需要每个机器人单独对接交易所:

  • 部署独立的交易所公共数据接入集群,按币种维度仅维护一份到交易所的WebSocket连接
  • 接入层拿到数据后直接推送到消息队列(如Redis Pub/Sub、Kafka),按交易对、数据类型做topic划分
  • 所有机器人节点需要对应数据时直接订阅消息队列的对应topic即可,这一步可以砍掉90%以上的交易所WebSocket连接请求,也避免了重复数据处理的资源浪费。

2. 私有流与机器人任务分片调度

针对带独立listen key的账户私有连接,用分片逻辑拆分到多节点运行:

  • 采用一致性哈希规则,按用户ID/机器人ID做哈希分片,每个机器人工作节点仅负责自己分片内的私有连接维护、策略执行
  • 扩容时新增的节点只会接管少量原有分片的任务,不会触发全量任务重启,完全不影响在线用户使用
  • 任务容灾可以通过健康检查实现:调度中心定期探测工作节点状态,节点失联后自动将对应分片的任务迁移到其他健康节点。

3. 前端推送层集群化

你用到的SignalR可以直接做集群部署:

  • 配置Redis作为SignalR的背板,实现跨节点的消息同步
  • 所有SignalR节点接入前面提到的统一WebSocket网关,对外同样只暴露一个wss地址,用户无论连接到哪个节点,都能收到自己对应机器人的推送消息。

Hangfire适用性说明

Hangfire完全可以用于你的场景,但适配场景有所区分:

  • 如果是定时触发类的策略任务(比如定时重新平衡仓位、定时同步资产),用Hangfire做分布式调度非常合适,不需要自己处理任务去重、失败重试逻辑
  • 如果是长驻的WebSocket连接维护、实时策略执行类任务,建议搭配进程守护工具(如Supervisor)使用,或者直接切换到K8s做容器编排,后者会自动处理任务调度、故障漂移、负载均衡,在机器人量级超过10万后管理成本会低很多。

内容的提问来源于stack exchange,提问作者nop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:54:04