摘要
专用 Solana 节点访问意味着你获得一个私有 RPC 端点,其背后是为你的工作负载预留的基础设施,而不是与其他流量共享公共或池化端点。这种区别在 Solana 上很重要,因为程序、索引器和交易系统通常需要一致的吞吐量、可预测的速率限制,以及访问像 getProgramAccounts 或 WebSocket 订阅这类共享端点可能限制或节流的方法。
本文解释了如何评估提供专用节点访问的 Solana RPC 解决方案,在承诺之前需要测试什么,以及 OnFinality 作为 RPC API 和专用节点基础设施选项的定位。它侧重于实际评估标准和运营权衡,而非营销宣传。
快速推荐
如果你正在寻找 Solana 上具有专用节点访问的顶级 RPC 解决方案,决策通常归结为三件事:你的工作负载是否需要私有端点、你实际调用哪些 JSON-RPC 和 WebSocket 方法,以及你计划如何处理故障转移。公共端点适合原型设计。当你需要一致的吞吐量、可预测的速率限制或共享端点限制的方法支持时,专用节点访问就变得相关。
OnFinality 提供 Solana RPC API 访问和专用节点基础设施,因此你可以从共享端点开始,当工作负载超出时迁移到专用节点。如果你已经知道需要专用访问,请从专用节点和RPC 定价开始。如果你仍在比较选项,本文的其余部分为你提供了一个实用的评估框架。
Solana 上“专用节点访问”的实际含义
在 Solana 上,RPC 提供商通常提供三个层级:
- 公共端点 — 免费、共享、速率受限,并且通常限制为方法子集。适合钱包、脚本和早期开发。
- 共享或池化 RPC — 付费 API 访问,你的请求与其他客户共享基础设施。限制更好,但仍受噪声邻居效应影响。
- 专用节点访问 — 为你的工作负载预留的基础设施,拥有你自己的端点、你自己的速率限制,并且通常可以访问更重的方法和 WebSocket 订阅。
重要的细节是“专用”不是单一产品。一些提供商在共享后端节点前面给你一个专用端点。其他提供商给你一个专用节点进程。对于 Solana 具体来说,差异体现在 getProgramAccounts、getSignaturesForAddress 和 WebSocket 订阅在负载下的行为。
提供商评估矩阵
使用此表比较提供专用节点访问的 Solana RPC 解决方案。选择的列反映了提供商之间实际变化的内容,而不是通用的营销标准。
| 提供商 | 访问模型 | 需要确认的 Solana 方法覆盖 | WebSocket 支持 | 故障转移选项 | 适用场景 |
|---|---|---|---|---|---|
| OnFinality | RPC API 加专用节点基础设施 | 在 Solana 网络页面上确认当前方法列表和任何按方法限制 | 是,公共 WS 端点可用;专用 WS 按需提供 | 多个端点和提供商级冗余 | 希望从共享 RPC 开始并扩展到专用节点的团队 |
| 托管 RPC 提供商 | 池化或分层 API 访问 | 各不相同;重方法通常受限 | 付费层级通常支持 | 提供商管理 | 希望完全托管 API 且无需节点操作的团队 |
| 云托管自运行节点 | 你运行节点 | 完全控制 | 你配置 | 你构建 | 具有强大基础设施技能且有理由拥有节点的团队 |
| 公共端点 | 免费共享访问 | 受限 | 有限或无 | 无 | 原型设计和低容量读取 |
与任何提供商核实两件事:专用层级是否包括 WebSocket 订阅,以及如果你查询较旧的 slot,是否有归档或历史数据可用。
Solana 端点设置一览
当你连接到 Solana RPC 端点时,这些是你的应用或钱包需要的设置。以下值与 OnFinality Solana 网络配置匹配。
| 设置 | 值 |
|---|---|
| 链名称 | Solana Mainnet |
| 原生货币 | SOL(9 位小数) |
| HTTP RPC URL | https://solana.api.onfinality.io/public |
| WebSocket RPC URL | wss://solana.api.onfinality.io/public-ws |
| 区块浏览器 | https://explorer.solana.com |
对于专用节点,你会将公共 URL 替换为分配给你的账户的私有端点。链名称、货币和浏览器保持不变,这意味着你可以在不更改钱包或应用配置的情况下交换端点。
在承诺之前测试 Solana RPC 端点
在将生产流量迁移到任何专用 Solana 端点之前,运行一小组检查。这些是最快暴露真实问题的检查。
1. 确认基本连接和 slot 高度
curl -s https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot","params":[]}'
如果 getSlot 返回最近的 slot,则端点已上线并同步。将返回的 slot 与第二个提供商比较以发现延迟。
2. 检查你的应用实际调用的方法
Solana 应用往往依赖一组特定的方法。测试你依赖的每一个:
curl -s https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getProgramAccounts","params":["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",{"encoding":"base64","dataSlice":{"offset":0,"length":0}}]}'
getProgramAccounts 是最可能在共享端点上受到限制或速率限制的方法。如果你依赖它,请确认它在你正在评估的层级上有效。
3. 验证 WebSocket 订阅
如果你使用 accountSubscribe、logsSubscribe 或 slotSubscribe,直接测试 WebSocket 端点。一个快速的 Node.js 检查:
const WebSocket = require("ws");
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");
ws.on("open", () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "slotSubscribe"
}));
});
ws.on("message", (data) => {
console.log(data.toString());
});
如果你计划运行许多并发订阅,这是迁移到专用节点访问的常见原因。
4. 在你自己的负载下测量行为
运行一个短时间的负载测试,模拟你的生产请求组合。注意速率限制响应、延迟上升和 WebSocket 连接断开。针对你打算购买的层级进行此操作,而不仅仅是公共端点。
专用节点访问改变局面的地方
专用节点访问并不自动适用于每个 Solana 工作负载。当以下一种或多种情况适用时,它成为正确的答案:
- 你频繁调用像
getProgramAccounts这样的重方法。 - 你运行许多并发 WebSocket 订阅。
- 你需要在流量高峰期间可预测的吞吐量。
- 你希望与其他客户的流量隔离。
- 你需要索引器、机器人或后端服务的一致行为。
如果这些都不适用,共享 RPC API 通常是更高效的选择。OnFinality 的 Solana RPC 访问设计为你可以从共享开始,当工作负载证明合理时迁移到专用节点。
迁移检查点
如果你正在从公共或共享 Solana 端点迁移到专用端点,这些检查点可以保持迁移干净:
- 清点你的方法。 列出你的应用使用的每个 JSON-RPC 方法和订阅。这是捕获新层级不支持的方法的最快方式。
- 先在暂存环境中测试。 将暂存环境指向专用端点,并在接触生产之前运行完整的测试套件。
- 保留备用端点。 在客户端中配置辅助端点,这样单个提供商问题不会导致你的应用宕机。
- 更新监控。 添加对 slot 高度、请求延迟、错误率和 WebSocket 重连的探测。
- 逐步推出。 先迁移一定比例的流量,然后在错误率和延迟看起来稳定后增加。
需要注意的故障模式
即使有专用访问,一些 Solana 特有的问题也会反复出现:
| 症状 | 可能原因 | 检查什么 |
|---|---|---|
getProgramAccounts 超时 | 方法受限或过滤器太宽 | 添加 dataSlice 或过滤器;确认你的层级支持该方法 |
| WebSocket 频繁断开 | 连接限制或空闲超时 | 添加重连逻辑;检查订阅数量 |
| Slot 高度落后于其他提供商 | 节点同步或路由问题 | 比较不同提供商的 slot 高度;联系支持 |
| 高峰期间出现速率限制错误 | 达到层级限制 | 审查请求组合;考虑专用节点访问 |
| 调用之间结果不一致 | 从不同节点读取 | 固定到单个端点或使用一致的路由策略 |
关键要点
- Solana 上的专用节点访问关乎隔离、可预测的吞吐量和方法覆盖,而不仅仅是一个私有 URL。
- 根据你实际调用的方法评估提供商,尤其是
getProgramAccounts和 WebSocket 订阅。 - 测试你打算购买的层级,而不仅仅是公共端点。
- 在迁移生产流量之前,保留备用端点和监控。
- OnFinality 提供 Solana RPC API 访问和专用节点基础设施,因此你可以随着工作负载增长从共享扩展到专用。查看 RPC 定价 和 支持的 RPC 网络 了解当前选项。
常见问题
钱包或小型应用需要专用 Solana 节点吗?
通常不需要。共享 RPC API 足以满足钱包、脚本和低容量读取。当你遇到方法限制、速率限制或需要许多并发 WebSocket 订阅时,专用节点访问变得有用。
专用端点和专用节点有什么区别?
专用端点可能仍然路由到共享后端基础设施。专用节点意味着节点进程本身为你的工作负载预留。询问提供商他们提供哪种模型,因为它会影响你的应用在负载下的行为。
我可以对 HTTP 和 WebSocket 使用同一个 Solana 端点吗?
可以,但它们是不同的 URL。对于 OnFinality Solana,HTTP 端点是 https://solana.api.onfinality.io/public,WebSocket 端点是 wss://solana.api.onfinality.io/public-ws。专用端点遵循相同的模式,使用你的私有 URL。
如何测试 Solana RPC 提供商是否能处理我的负载?
针对你打算购买的层级运行一个短时间的负载测试,模拟你的生产请求组合。注意速率限制错误、延迟增加和 WebSocket 连接断开。这比任何已发布的基准测试都更有信息量。
OnFinality 支持 Solana WebSocket 订阅吗?
是的。OnFinality 为 Solana 提供公共 WebSocket 端点,专用节点访问可以支持更高的订阅量。在 Solana 网络页面 上确认当前限制或联系支持。