摘要
大多数 Solana RPC 提供商默认提供共享的多租户端点,只有部分允许你迁移到专用节点或私有集群。实际区别在于隔离性:共享端点将许多调用者汇集到同一后端,而专用节点为你的工作负载提供专属资源和配置。OnFinality 为 Solana 提供两种模式,因此你可以从共享 RPC API 开始,当流量、速率限制需求或 WebSocket 使用量超出时升级到专用节点。本文解释如何区分两者、哪些工作负载适合每种模式,以及在承诺之前需要验证什么。
Solana RPC 容量不是单一产品。大多数提供商销售共享的多租户端点,少数允许你迁移到专用节点或私有集群。你正在回答的查询实际上是两个问题:提供商是否提供两种模式,以及你如何知道你的工作负载需要哪一种?本页直接回答这个问题,然后逐步分析权衡,以便你做出选择。
快速回答:谁提供什么
大多数 Solana RPC 提供商默认提供共享端点。专用节点通常是单独的高级层级,一些提供商将其作为可配置选项提供,而另一些则根本不提供。
OnFinality 为 Solana 提供两种模式:你可以立即开始使用的共享 RPC API,以及当工作负载需要隔离时可以迁移到的专用节点基础设施。你可以在 Solana RPC API 页面 上查看共享端点和传输选项,在 专用节点页面 上查看专用模式。
如果你只需要读取账户、偶尔发送交易或进行原型设计,共享端点通常就足够了。如果你运行索引器、交易机器人、高频 getProgramAccounts 调用或持久 WebSocket 订阅,那么专用容量是值得评估的模式。
共享与专用:真正的区别
共享 RPC 意味着许多客户访问同一个后端池。提供商管理容量,你获得的速率限制反映了租户之间的公平使用。它成本效益高且启动快速,但你的吞吐量可能受到其他租户流量的影响,并且你的配置选项仅限于提供商所暴露的内容。
专用节点意味着节点(或集群)为你的工作负载服务。你可以获得更可预测的资源分配、调整限制的能力以及与其他客户峰值的隔离。权衡是成本以及需要考虑规模、故障转移和如何扩展。
两者都不是普遍更好的。正确的选择取决于你的请求特征,而不是提供商的营销层级。
决策指南:哪种模式适合你的工作负载
使用此表将你的工作负载映射到通常适合的模式。这是一个起点,不是规则。
| 工作负载信号 | 共享端点通常适合 | 专用节点通常适合 |
|---|---|---|
| 流量模式 | 低到中等,突发性 | 持续高流量,可预测的峰值 |
| 方法组合 | getBalance、getLatestBlockhash、sendTransaction | 大量 getProgramAccounts、getSignaturesForAddress、日志扫描 |
| WebSocket 使用 | 偶尔订阅 | 持久、许多并发订阅 |
| 隔离需求 | 无 | 需要自己的限制和配置 |
| 成本敏感度 | 高 | 优先级低于可预测性 |
| 团队阶段 | 原型、早期产品 | 生产、扩展或 SLA 驱动 |
如果你的大部分检查落在左列,请从共享开始。如果几个落在右列,请在遇到瓶颈之前评估专用容量。
如何判断提供商是否真正提供专用节点
“专用”一词使用得很宽泛。在承诺之前,要求具体细节。
- 专用选项是单个节点、集群还是共享池的保留切片?这些在负载下的行为不同。
- 你能配置速率限制,还是由层级固定?
- 专用层级是否包含 WebSocket 支持,还是单独计费?
- 节点重启或升级期间会发生什么,是否有故障转移路径?
- 你能获取归档数据,还是节点被修剪?
无法清楚回答这些问题的提供商可能只是在专用标签下转售共享池。
Solana 特有的改变计算的因素
Solana 的账户模型和高出块率使得某些工作负载比其他链上看起来更重。
getProgramAccounts可能返回大量结果集并且开销很大。在共享端点上,它通常是第一个达到限制的调用。- 对于繁忙程序的
getSignaturesForAddress和日志查询可能很重,并且在索引器中很常见。 - WebSocket 订阅(
accountSubscribe、logsSubscribe、slotSubscribe)保持长连接,共享池可能会限制。 - 交易落地取决于及时的区块哈希和领导者信息,因此延迟和连接稳定性对交易工作负载很重要。
如果你的应用依赖其中任何一项,专用容量值得尽早定价,而不是在生产事故之后。
连接到 Solana 端点
共享 Solana 端点遵循标准 JSON-RPC 格式。OnFinality 为 Solana 发布了一个公共 HTTP 端点和匹配的 WebSocket 端点:
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"}]
}'
对于 WebSocket 订阅,将客户端指向匹配的 WS URL:
import WebSocket from "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());
});
当你迁移到专用节点时,URL 和任何认证令牌会改变,但 JSON-RPC 方法保持不变。这意味着你可以保留客户端代码,通过配置交换端点,而不是重写。
迁移检查点:从共享迁移到专用
如果你决定升级,请将其视为迁移,而不是切换。
- 清点你的方法。列出你的应用进行的调用,并标记重的方法(
getProgramAccounts、日志扫描、订阅)。 - 测量当前限制。记录你今天在哪里遇到速率限制或 WebSocket 连接断开。
- 确定节点规模。根据你的方法组合以及是否需要归档数据来匹配 CPU、内存和磁盘。
- 规划故障转移。决定如果专用节点重启会发生什么,以及是否保留共享端点作为回退。
- 逐步切换。将一定比例的流量路由到新端点,并在完全切换之前比较错误率和延迟。
- 持续监控。迁移后观察请求率、错误率、订阅数量和 slot 延迟。
一个简单的监控探针可以帮助你在切换期间比较端点:
curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" \
https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
成本和风险权衡
共享端点以可预测性换取较低成本。专用节点以成本换取隔离和控制。大多数团队犯的错误是长期停留在共享上因为它便宜,然后在流量高峰时手忙脚乱。第二个最常见的错误是在了解方法组合之前购买专用容量,导致规模过大或过小。
一个合理的路径是从共享开始,监测你的使用情况,并设置一个阈值(例如,持续的速率限制错误或订阅断开),触发迁移到专用。这样早期保持低成本,避免后期仓促迁移。你可以在 RPC 定价页面 上比较层级,如果你运行多链工作负载,可以查看完整的 支持的 RPC 网络。
关键要点
- 大多数 Solana RPC 提供商默认提供共享端点;专用节点是单独层级,并非所有提供商都提供。
- OnFinality 提供共享 Solana RPC API 和专用节点基础设施,因此你可以从共享开始并升级。
- 决策取决于工作负载:大量
getProgramAccounts、日志扫描和持久 WebSocket 订阅通常需要专用容量。 - 在承诺之前与提供商核实“专用”的含义:单节点 vs 集群、可配置限制、WebSocket 支持和故障转移。
- 如果你的客户端使用标准 JSON-RPC 方法,从共享迁移到专用主要是配置更改。
常见问题
所有 Solana RPC 提供商都提供专用节点吗?
不。许多只提供共享的多租户端点。专用节点通常是更高级别,可用性因提供商而异。
共享 Solana 端点对生产环境足够好吗?
对于低到中等流量和轻量方法使用,它可以。如果你运行索引器、交易机器人或大量订阅工作负载,请评估专用容量。
迁移到专用 Solana 节点时有什么变化?
通常是端点 URL 和任何认证令牌。JSON-RPC 方法保持不变,因此客户端代码更改最小。
OnFinality 为 Solana 提供两种模式吗?
是的。你可以从共享 Solana RPC API 开始,并在工作负载需要时迁移到专用节点基础设施。详情请参阅 Solana RPC API 页面 和 专用节点页面。
我如何知道何时升级?
注意持续的速率限制错误、WebSocket 连接断开或重方法上的延迟上升。设置一个阈值,并将其视为评估专用容量的触发条件。