https://github.com/eycorsican/v2ray-core/releases/tag/v4.13.0-latency-load-balancer-v3
首先 checkout 这两个分支
然后根据 这个页面 给出的步骤来编译,主要是下面这条命令:
bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH //release:v2ray_linux_amd64_package
"routing": {
"balancers": [
{
"tag": "proxy",
"selector": [
"primary_proxy",
"backup_proxy"
],
"strategy": "latency"
}
],
"rules": [
{
"network": "tcp,udp",
"type": "field",
"balancerTag": "proxy"
}
]
}
启用 latency balancer 后,会每隔 30 秒对所有选中的 outbound 做速度测试,对每个 outbound 做 5 次测速,每次测速间隔 1 秒,最后记录下平均时间。每当需要代理请求时,就选择最后一次测速结果中延迟最低的 outbound 来用。
测速方式是使用对应 outbound 实际发出一个 HTTP 请求,目标地址是 www.google.com:80 ,请求内容如下:
HEAD / HTTP/1.1\r\n\r\n
服务器返回任何非空数据则视作连接没问题,并记录时间作为延迟时间。
典型的使用场景是当你有一个速度很快的 VPS,但这个 VPS 偶尔会抽风一会,抽风期间你要切换使用另一个 VPS(可能是比较慢的 VPS),这时你就用得上这个功能了。
测实际连接上的时延会不会更好,比如用cdn的情况,TCP只是跟cdn连接,可能速度很快,但是cdn到服务器还要一些时间。