ERPC 大规模升级 Solana RPC、WebSocket 与 Geyser gRPC 基础设施 — Frankfurt 实测对比中 transactionSubscribe 首次通知约 2.3
本文从技术层面分析 ERPC 近期对 Solana RPC、WebSocket 与 Geyser gRPC 基础设施进行的一次大规模升级并基于 Frankfurt 同一客户端实测比较其与某主流外部 RPC 服务在多个关键指标上的表现差异。升级范围一体化优化 HTTP、WebSocket 与 Geyser gRPC本次升级并非单纯增加节点而是把以下子系统作为一条连续路径协同优化Solana RPC 的 HTTP 路径Solana RPC 兼容的 WebSocket 路径Geyser 事件到 WebSocket 兼容层的实时转换适配器内部 gateway 与分发流程网络软件与服务器拓扑升级同时加入了一台最高性能等级的大型节点并在负载分布、订阅模式与方法级使用统计的基础上调整了内部队列、fanout 与超时阈值使整条数据通路更接近真实生产工作负载下的表现。Frankfurt 同一客户端环境的实测对比测试在 Frankfurt 部署的同一客户端节点上进行对 ERPC 与某主流外部 RPC 服务在相同条件下连续采样关注以下指标HTTP getSlot 的中位延迟WebSocket 连接建立时间WebSocket transactionSubscribe 兼容功能的首次通知到达时间getSlot freshnessprocessed / confirmed错误次数代表性结果如下指标ERPC外部 RPC 服务比值HTTP getSlot 中位23.4 ms39.9 ms约 1.7 倍WebSocket 连接87 ms157 ms约 1.8 倍transactionSubscribe 首次通知240 ms556 ms约 2.3 倍processed/confirmed slot freshness同一 slot同一 slot持平Errors00持平在 slot freshness 持平的前提下ERPC 在连接建立与首次通知到达上取得了明显领先。为什么首次通知差距明显大于纯网络距离WebSocket transactionSubscribe 兼容功能的首次通知到达时间是大量 Solana 链上应用事件检测、交易类应用、监控、bot、后端 API真正关心的指标。240 ms vs 556 ms 的差异不能仅用网络距离解释背后涉及节点处理性能单节点处理订阅请求、构造事件载荷的吞吐Geyser gRPC 取数路径以 gRPC 事件流为基础向 WebSocket 兼容层投递gateway 内部转换与路由queue 与 fanout 结构对热门订阅条件的扩展能力网络软件层连接复用、心跳、压缩等的优化ERPC 在这次升级中把这些环节同时迭代因此首次通知的到达时间显著缩短同时长期投递性能保持同等或更高水平。不牺牲 slot freshness 的提速性能提升的同时需要确认服务并未返回过期数据。本次对比中processed 与 confirmed 两档 getSlot freshness 在 ERPC 与外部服务中观察到的均为同一 slotWebSocket slotSubscribe 同样观察到同时刻同一 slot。这意味着在常用于实时应用的 processed / confirmed 粒度上新鲜度并未被牺牲速度优势是在 connection 建立与首次通知阶段获得的。扩展的兼容方法范围除性能改进外本次升级在 Burst 等 Geyser gRPC 周边的 WebSocket / RPC 兼容层中扩充了方法支持新增对以下方法的覆盖getVersiongetSlotgetBlockHeightgetLatestBlockhashisBlockhashValid这些是大量 Solana 客户端用于状态确认、连接保活与辅助查询的标准方法。它们的覆盖使得实时订阅场景下也可在同一通路上完成附带状态检查减少额外往返次数。持续工程化的特征值得强调的是ERPC 这次升级是基于持续运行中的负载特征、方法级用量与延迟构成进行的工程优化而不是单次的功能上线。性能指标按 median、p95、max、首次通知、throughput、slot freshness、error rate 多维度跟踪逐项推进改进。对希望深入了解 Solana RPC、WebSocket、Geyser gRPC、SWQoS、Shredstream 等组件协作方式的开发者而言这是一份较完整的实测样本可用于评估自身工作负载在不同区域、不同订阅条件下的最佳配置。