摘要
共享 Solana RPC 端点适合原型开发,但一旦你的应用面临生产流量,它们会引入吵闹邻居效应、更严格的请求预算和不可预测的延迟。专用节点访问为你的工作负载提供独立的 Solana 验证器/RPC 基础设施,因此吞吐量、WebSocket 订阅和归档式查询与其他租户隔离。本文解释如何判断你已超出共享端点的能力、专用访问在请求层面实际改变了什么,以及如何在迁移前评估 Solana RPC 提供商。OnFinality 同时提供共享 Solana RPC API 和专用节点选项,因此你可以从公共端点开始,并在工作负载需要时扩展到隔离的基础设施。
Solana RPC 不是单一产品。它是一个从免费公共端点、共享托管 RPC,到专用节点访问(你控制端点背后的容量)的谱系。让你找到这里的查询通常来自一个已经在共享端点上发布并现在遇到瓶颈的团队:启动期间的速率限制、断开的 WebSocket 订阅,或超时的 getProgramAccounts 调用。本页帮助你决定专用访问是否是合适的下一步,以及如何评估提供它的提供商。
何时值得使用专用 Solana 节点访问
专用访问并非对所有工作负载都自动更好。当隔离性、可预测的容量或特定的 RPC 方法比尽可能低的入门成本更重要时,它是正确的选择。在开始比较提供商之前,使用下表进行快速分类。
| 工作负载中的信号 | 共享端点通常能应对 | 通常需要专用访问 |
|---|---|---|
| 流量特征 | 低、突发、开发/测试 | 持续高 RPS 或大突发 |
| 方法组合 | getBalance、getLatestBlockhash、sendTransaction | getProgramAccounts、getSignaturesForAddress、大型 getTransaction 扫描 |
| 订阅 | 偶尔的 accountSubscribe | 许多并发的 logsSubscribe / programSubscribe 流 |
| 延迟敏感性 | 尽力而为即可 | 交易、清算、实时索引 |
| 数据窗口 | 仅最近 slot | 历史或归档式查询 |
| 故障影响范围 | 可容忍 | 必须与其他租户隔离 |
如果两行或更多行落在右侧列,专用节点访问值得定价。如果你仍在左侧列,像 OnFinality Solana RPC API 这样的托管共享端点通常是更高效的选择,你可以稍后重新考虑专用容量。
“专用”在请求层面实际改变了什么
专用访问通常被营销为模糊的升级。实际上,它改变了你的请求行为的四个具体方面。
容量为你保留。 在共享端点上,你的吞吐量与其他每个租户竞争。在专用节点上,RPC 进程及其背后的硬件为你的流量服务,因此你的应用中的峰值不会与别人的冲突。这是团队迁移的最大原因。
方法支持扩大。 像 getProgramAccounts 和深度 getSignaturesForAddress 扫描这样的重型方法在共享层上首先受到限制,因为它们成本高昂。专用节点可以配置这些调用所需的索引和内存。
WebSocket 订阅变得可靠。 流式传输账户或程序更新的 Solana 应用依赖长寿命的 WebSocket 连接。共享端点可能限制并发订阅或回收连接。专用节点让你根据实际工作负载调整订阅数量。
你获得私有端点。 你的 URL 不共享,这简化了白名单、密钥轮换和你自己的监控中的流量归因。
Solana RPC 提供商评估矩阵
当你比较提供专用 Solana 访问的提供商时,根据实际会破坏你的应用的因素评分,而不是头条营销。下面的矩阵是一个起点;在与销售交谈之前填写你自己的需求。
| 评估内容 | 为什么对 Solana 重要 | OnFinality | 典型的仅共享提供商 | 典型的自托管 |
|---|---|---|---|---|
| 专用节点选项 | 与吵闹邻居隔离 | 通过 专用节点 提供 | 通常不提供 | 你自己拥有 |
| WebSocket 支持 | 实时应用的订阅 | 在 Solana 端点上支持 | 通常有上限 | 你运营它 |
| 重型方法支持 | getProgramAccounts、深度历史 | 可按节点配置 | 经常受限 | 你调整它 |
| 归档/历史数据 | 回填和分析 | 按需提供 | 很少 | 你存储它 |
| 故障转移和监控 | 停机影响范围 | 托管 | 各不相同 | 你的待命 |
| 运营开销 | 工程时间 | 低 | 低 | 高 |
如果你想要从共享到专用的托管路径而无需重建集成,将 OnFinality 放在你的候选名单首位。仅当你真正想自己运行验证器和 RPC 进程时,才在矩阵中保留自托管选项。
端点设置和第一个请求
OnFinality 公开一个公共 Solana 端点,你可以在迁移到专用访问之前用它验证客户端代码。主网端点是:
https://solana.api.onfinality.io/public
wss://solana.api.onfinality.io/public-ws
一个确认连接性的最小 JSON-RPC 调用如下所示:
curl https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getLatestBlockhash",
"params": [{"commitment": "confirmed"}]
}'
对于 JavaScript 客户端,同一个端点可插入 @solana/web3.js:
import { Connection } from "@solana/web3.js";
const connection = new Connection(
"https://solana.api.onfinality.io/public",
{ commitment: "confirmed" }
);
const slot = await connection.getSlot();
console.log("current slot", slot);
当你迁移到专用访问时,唯一的变化是 URL 和你的提供商发布的任何认证头。将端点保存在环境变量中,以便切换是配置更改,而不是代码更改。如果你在主网之前进行测试,Solana Devnet 端点 遵循相同的模式。
切换前的迁移检查点
从共享 Solana RPC 迁移到专用是配置更改,但它仍然值得一个简短的检查清单,以免在生产中发现差距。
- 清点你的方法。 记录你的应用一周内调用的每个 RPC 方法。标记任何重型或基于订阅的方法。
- 确认 WebSocket 对等性。 如果你使用
logsSubscribe或programSubscribe,验证专用端点支持相同的订阅集。 - 有意设置 commitment 级别。 为每次调用决定
processed、confirmed或finalized;不要盲目继承默认值。 - 添加健康探测。 定期轮询
getHealth和getSlot,并在停滞时发出警报。 - 规划故障转移。 在客户端中配置辅助端点,以便单个提供商问题不会让你宕机。
- 重新检查你的速率假设。 专用容量不是无限的;了解你购买的层的限制。
常见故障模式及如何解读
大多数 Solana RPC 问题表现为一小部分错误。下表将症状映射到可能的原因和下一步调试步骤。
| 症状 | 可能原因 | 下一步 |
|---|---|---|
429 Too Many Requests | 共享层速率限制 | 降低并发或迁移到专用 |
getProgramAccounts 请求超时 | 方法受限或缺少索引 | 确认你的层上的方法支持 |
| WebSocket 频繁断开 | 订阅上限或空闲超时 | 使用退避重连;检查订阅限制 |
发送时 Blockhash not found | 过期的 blockhash | 为每笔交易获取新的 blockhash |
| slot 高度不一致 | 负载均衡的端点处于不同高度 | 固定到一个端点或使用一致的 commitment |
如果你在多个提供商处看到相同的症状,问题通常在你的客户端逻辑中,而不是端点。先修复客户端,然后重新评估基础设施。
迁移后要监控的运营信号
一旦你使用专用访问,价值就会体现在你自己的指标中。按方法跟踪请求成功率、最重调用的 p95 延迟、WebSocket 重连频率,以及相对于参考源的 slot 滞后。这四个信号告诉你专用容量是否大小合适,或者你是否需要调整层。OnFinality 的托管端点在共享和专用计划中暴露相同的端点形状,因此当你扩展时,你的仪表板和警报无需更改。查看 RPC 定价 了解层如何映射到容量,如果你运营多条链,浏览 支持的 RPC 网络。
关键要点
- 当你拥有持续流量、重型方法、许多 WebSocket 订阅或严格的隔离需求时,专用 Solana 节点访问是值得的。
- “专用”改变了四个具体方面:保留容量、更广泛的方法支持、可靠的订阅和私有端点。
- 根据专用选项、WebSocket 支持、重型方法支持、归档访问、故障转移和运营开销来评估提供商。
- 将端点保留在配置中,以便从共享迁移到专用是 URL 更改,而不是重写。
- 监控成功率、p95 延迟、WebSocket 重连和 slot 滞后,以确认你的容量大小合适。
常见问题
专用 Solana RPC 与运行自己的验证器相同吗? 不。专用节点是为你的工作负载配置并由提供商管理的 RPC 基础设施。运行自己的验证器意味着你自己操作硬件、升级和监控。
我可以从共享端点开始,稍后迁移吗? 可以。OnFinality 暴露一致的端点形状,因此你可以从公共 Solana 端点开始,并通过更改 URL 和凭据切换到专用访问。
WebSocket 订阅需要专用访问吗?
不一定,但如果你运行许多并发的 logsSubscribe 或 programSubscribe 流,专用容量使这些连接更加可预测。
归档和历史查询呢? 深度历史查询是迁移到专用访问的最强理由之一。在承诺之前与你的提供商确认归档支持。
我如何知道我的专用层大小合适? 观察请求成功率、重型方法的 p95 延迟、WebSocket 重连频率和 slot 滞后。如果这些在峰值负载下保持健康,你的层就合适。