理解分布式区块链系统中的延迟
在使用区块链流服务时,延迟测量变得复杂,因为分布式系统没有统一的时钟。与传统系统中可以测量到单个服务器的往返时间不同,区块链网络涉及多个验证者,每个验证者在不同时间接收和处理相同的交易。 基本挑战: 像 Solana 这样的区块链没有绝对时间的概念。每个全球的验证节点将在不同时间接收相同的交易,确认取决于集群中达到共识的百分比。这使得传统意义上的确定性延迟测量变得不可能。承诺级别和延迟优先级
Solana 提供三个承诺级别,每个级别具有不同的延迟特性:- Processed: 最快,单个验证者确认(约400毫秒)
- Confirmed: 中等,超多数确认(约2-3秒)
- Finalized: 最慢,完整网络最终确认(约15-30秒)
测量延迟的三种方法
1. 比较并行 gRPC 流
最可靠的方法 - 比较两个独立流到同一数据源,测量哪个流首先接收到相同的事件。 优点:- 消除时钟同步问题
- 提供相对性能比较
- 对于比较服务最准确
2. 本地时间戳与 created_at 比较
中等可靠性 - 测量系统接收到消息的时间与 LaserStream 服务在消息中嵌入的时间戳之间的差异。 限制:- 仅代表 LaserStream 内部创建消息的时间
- 不会捕获到 LaserStream 的上游延迟
- 对于真正的端到端延迟,准确性不如方法 1
3. 区块时间戳分析(不推荐)
不推荐 - 将本地接收时间与 Solana 的区块时间戳进行比较。 显著限制:- 区块时间戳只有秒级粒度
- Solana 每 400ms 生成一个区块
- 提供的有用信息极少
设置要求
区域共址
为了获得有意义的延迟测量,将测试基础设施部署在与 LaserStream 端点相同的数据中心或区域。 可用的LaserStream区域:- ewr:纽约,美国(东海岸) -
https://laserstream-mainnet-ewr.helius-rpc.com - pitt:匹兹堡,美国(中部) -
https://laserstream-mainnet-pitt.helius-rpc.com - slc:盐湖城,美国(西海岸) -
https://laserstream-mainnet-slc.helius-rpc.com - ams:阿姆斯特丹,欧洲 -
https://laserstream-mainnet-ams.helius-rpc.com - fra:法兰克福,欧洲 -
https://laserstream-mainnet-fra.helius-rpc.com - tyo:东京,亚洲 -
https://laserstream-mainnet-tyo.helius-rpc.com - sgp:新加坡,亚洲 -
https://laserstream-mainnet-sgp.helius-rpc.com
https://laserstream-devnet-ewr.helius-rpc.com
请参阅 LaserStream gRPC 文档 以获取完整的设置说明和端点选择指南。
Rust 环境设置
所有测量脚本都使用 Rust 和 Cargo。基本设置:.env文件:
方法 1:并行流比较
此脚本建立与不同gRPC端点的两个独立连接,并测量哪个首先收到相同的BlockMeta消息。这种方法通过使用相对时间来消除时钟同步问题。
- 正增量:第一个服务 (YS) 比第二个服务 (LS) 慢 - LaserStream 更快
- 负增量:第一个服务 (YS) 比第二个服务 (LS) 快 - LaserStream 更慢
- 平均/中位数:平均性能差异
- P95:95% 百分位延迟差异
方法 2:创建时间戳分析
此方法将嵌入消息的created_at时间戳与接收时的本地系统时间进行比较。
延迟测试的最佳实践
关键原则
- 同地部署:在与您的LaserStream端点相同的区域部署测试以最小化网络延迟
- 多种方法:使用并行流比较(方法1)作为主要指标,并辅以时间戳分析
- 长期监控:长时间运行测试以捕获不同的网络条件和区块链拥堵
- 统计分析:关注百分位数(P95, P99)而不仅仅是平均值,以了解尾部延迟
结果解读
- 建立基线:至少运行1小时的测试以在正常条件下建立基线性能
- 识别模式:寻找延迟峰值的模式——它们是否与高区块链活动或网络拥堵相关?
- 比较百分位数:P95延迟通常比平均延迟对用户体验更重要
- 监控一致性:一致的性能通常比绝对最小延迟更有价值