From d7f9feccc014fa33852d2aa9747c505f379a0895 Mon Sep 17 00:00:00 2001 From: Meo597 <197331664+Meo597@users.noreply.github.com> Date: Mon, 7 Jul 2025 06:05:58 +0800 Subject: [PATCH] CN Observatory: More detailed explanation --- docs/config/README.md | 4 ++-- docs/config/observatory.md | 10 ++++++++-- docs/config/routing.md | 6 +++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/config/README.md b/docs/config/README.md index 03ea595..ab8a5e3 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -7,7 +7,7 @@ lang: zh-CN ## 概述 -Xray 的配置文件为 json 格式, 客户端和服务端的配置格式没有区别, 只是实际的配置内容不一样。 +Xray 的配置文件为 json 格式, 客户端和服务端的配置格式没有区别, 只是实际的配置内容不一样。 形式如下: ```json @@ -89,4 +89,4 @@ metrics 配置。更直接(希望更好)的统计导出方式。 > burstObservatory: [BurstObservatoryObject](./observatory.md#burstobservatoryobject) -并发连接观测。探测出站代理的连接状态。 +突发连接观测。探测出站代理的连接状态。 diff --git a/docs/config/observatory.md b/docs/config/observatory.md index 1f5f113..da0ddc4 100644 --- a/docs/config/observatory.md +++ b/docs/config/observatory.md @@ -1,6 +1,6 @@ # 连接观测 -连接观测组件使用 HTTPing 的方式探测出站代理的连接状态。观测结果可以被其他组件使用,如负载均衡器。目前有 [observatory](#observatoryobject) (后台连接观测)和 [burstObservatory](#burstobservatoryobject) (并发连接观测)两种。按需选择其中之一就行。 +连接观测组件使用 HTTPing 的方式探测出站代理的连接状态。观测结果可以被其他组件使用,如负载均衡器。目前有 [observatory](#observatoryobject) (后台连接观测)和 [burstObservatory](#burstobservatoryobject) (突发连接观测)两种。按需选择其中之一就行,理论上 `burstobservatoryobject` 特征更不明显。 ## ObservatoryObject @@ -63,12 +63,18 @@ > `connectivity`: string -用于检测本地网络连通性的网址。空字符串表示不检测本地网络连通性。 +用于检测本地网络连通性的网址。这个网址应该返回 HTTP 204 成功状态码。空字符串表示不检测本地网络连通性。 + +仅当 `destination` 探测失败时会执行此探测。这样在日志中能更清晰的体现出网络不通的原因。 + +注意:在透明代理模式下,此请求会重入 xray 进行路由,因此必须精挑细选网址,确保它匹配直连规则。 > `interval`: string 在指定时间内探测全部匹配的出站代理,每个出站代理探测 sampling + 1 次。时间格式为数字 + 单位,比如 `"10s"`, `"2h45m"`,支持的时间单位有 `ns`, `us`, `ms`, `s`, `m`, `h`, 分别对应纳秒、微秒、毫秒、秒、分、时。 +注意:具体的探测时间是随机的!原理是每间隔 interval,立即并发调度所有出站的探测任务,但是在每个任务生命周期内随机时间执行探测,这意味着相较于 `observatory`(后台连接观测),本探测器的特征更不明显。但是如果 interval 设置的过小,或者 sampling 过大导致频繁探测,那么特征仍然会很明显。 + > `sampling`: number 保留最近探测结果的数量。 diff --git a/docs/config/routing.md b/docs/config/routing.md index 88b8784..7ff4db8 100644 --- a/docs/config/routing.md +++ b/docs/config/routing.md @@ -250,10 +250,14 @@ Xray-core v1.8.7 或更高版本可省略该行。 > `type` : "random" | "roundRobin" | "leastPing" | "leastLoad" - `random` 默认值。随机选择匹配到的出站代理。 -- `roundRobin` 按顺序选择匹配到的出站代理。如果同时设置了fallbackTag和observatory,则可以过滤出健康节点进行轮询。 +- `roundRobin` 按顺序选择匹配到的出站代理。 - `leastPing` 根据连接观测结果选择延迟最小的匹配到的出站代理。需要添加 [observatory](./observatory.md#observatoryobject) 或者 [burstObservatory](./observatory.md#burstobservatoryobject) 配置项。 - `leastLoad` 根据连接观测结果选择最稳定的出站代理。需要添加 [observatory](./observatory.md#observatoryobject) 或者 [burstObservatory](./observatory.md#burstobservatoryobject) 配置项。 +::: tip +无论哪一种模式,一旦其所有的 `selector` 对应节点同时配置了 `observatory` 或 `burstObservatory`,则可以过滤出健康节点。若没有任何健康节点可用,会尝试 `fallbackTag` +::: + > `settings`: [StrategySettingsObject](#strategysettingsobject) ##### StrategySettingsObject