Relay 区域放置¶
Orca 在 Electron 主进程中,在请求新分配之前选择一个 Relay 区域。director 发布一个允许列表区域目录,其中仅包含该 director 的 HTTPS cell 子域名。Orca 会丢弃每个探测源的一个预热 /health 请求——冷请求会支付 TCP 和 TLS 建立开销,这可能超过它所测量的往返时间——然后采集三个有界样本,并按最小值比较区域。较大的离散度仍会拒绝某个区域,但只会拒绝真正抖动的区域。稳定选择会缓存 24 小时,并且只有当替代区域明显更快时,缓存的区域才会改变。
一个区域只有相对于已测量的竞争者才能获胜。如果目录中任何区域被拒绝或无法测量,Orca 会不发送提示,而不是选择唯一幸存者。不发送提示并不是中立放置:director 会分配 preferredRegion ?? RELAY_DEFAULT_REGION,默认值是 us-central1。因此,如果 asia-east2 用户的 us-central1 探测失败或抖动一次,该次刷新会将其放置在 us-central1。接受这一权衡,因为 Relay 数据库仅位于 us-central1,并且它是有限的:被保留的提示会缓存一小时,而不是被选择区域获得的 24 小时,因此下一小时会重新测量。在采样轮次之前,预热探测失败的源会被丢弃,因此不可达区域只花费一次探测超时,而不是四次。
控制套接字注册后,Orca 会探测其实际落地的 cell,每个进程每个 cell URL 一次。只有当缓存指向的区域不是最佳测量区域,并且所分配的 cell 比该区域慢三倍以上时,缓存才会被删除——在仍指向最佳区域的缓存下,一个较远的 cell 意味着 director 拒绝了提示,重新测量会返回相同答案。自愈会跳过缺失、过期或无提示的缓存,并且绝不在 ORCA_RELAY_REGION_OVERRIDE 下运行。
分配请求只发送 preferredRegion。它不发送延迟、IP 地址、国家、配对数据或凭据。目录、探测和缓存失败会回退到没有区域偏好的分配。回滚的 director 如果拒绝新字段,会重试一次,仅不发送该字段,同时保留重连行为。
选择测量桌面网络路径。文件夹工作区和 SSH 工作区共享同一个本地 broker,并且不在远程主机上运行探测。手机继续连接到桌面配对负载中的确切 cell URL,因此其位置不会独立测量,也不需要移动协议更新。
为了确定性的本地诊断,在启动 Orca 之前将 ORCA_RELAY_REGION_OVERRIDE 设置为 us-central1 或 asia-east2。该覆盖不是最终用户设置,也不会写入偏好缓存。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 orca48/orca