路由与可靠性
Gateway 先查询 Accelerator,再通过 Route 把一个公开入口连接到一个或多个 Endpoint。Endpoint 选择、故障切换和回源重试只有在 Route 中配置了有效目标后才会生效。
两种路由策略
Priority failover
按配置顺序优先使用 Endpoint。当前 Endpoint 被过滤、Circuit 暂停或发生可重试失败时,才尝试下一个。
适合有明确主节点、备用节点顺序的场景。健康状态本身不会无条件改变优先级。
Load balance
按权重抽样候选,并结合已观测的健康状态和延迟选择。权重代表相对流量,不是固定百分比。
适合多个同等上游分担请求。只有一个候选时仍会使用该 Endpoint,不能把负载均衡当作可用性保证。
候选过滤
Route 可以按以下条件过滤 Endpoint:
- Endpoint 是否启用;
- 最低信任等级;
- 已观测延迟是否超过 Route 上限;
- Circuit 是否暂时阻止新的尝试;
- Endpoint 是否与 Gateway 的链、网络和协议一致。
没有延迟观测的 Endpoint 不会仅因为“未知”而被排除。
重试策略
safe_only 和 idempotent 描述的是允许重试的失败类型,Gateway 不会根据方法名自动判断请求是否幂等。
| 策略 | 行为 |
|---|---|
safe_only | 只切换尚未明确产生业务结果的连接、配置和特定上游拒绝 |
idempotent | 额外允许对超时、响应中断和部分 4xx/5xx 进行有限重试 |
写入类调用默认应使用 safe_only。只有业务确认重复发送安全时,才使用 idempotent。有效的上游 JSON-RPC application error 是最终响应,不会触发故障切换。
总尝试次数同时受 Route 和部署级上限约束,因此配置多个 Endpoint 不表示每次都会遍历全部目标。
限流
JSON-RPC 和 TRON HTTP API 使用相互独立的额度,并可能按全局、IP、Account 和 App 限制。生产额度由平台策略决定,文档不承诺固定 RPS。
- JSON-RPC 限流:HTTP
200,error code-32029,data.retry_after_ms给出等待时间,并返回Retry-AfterHeader。 - TRON HTTP API 限流:HTTP
429,并返回Retry-AfterHeader。
客户端应使用指数退避和随机抖动,并限制最大重试次数。
Accelerator 与回源
Accelerator 只覆盖明确的方法和参数。命中时不会选择 Endpoint;未命中时才进入 Route。没有 Endpoint 的请求会在未命中后返回 -32004,不会向未知公共节点回源。
缓存结果可能短暂滞后,且不保证每个历史高度、Slot 或 Hash 都存在。客户端应按链上 RPC 语义验证时间敏感结果,不要依赖 Gateway 必然命中、写入或刷新缓存。TRON HTTP API 不使用 Accelerator。