gateway worker 分离部署,一共3台服务器,一台gateway服务【register和gateway在一台服务器】,2台BusinessWorker,但是连接的时候 请求都往一台服务器的BusinessWorker 发送了,gateway服务如何分配连接到不同的BusinessWorker服务
用了自定义路由负载分布就还行,用gateway 默认负载机制 连接就只往最先启动的那台服务器的BusinessWorker 发送,2台服务器BusinessWorker启动时间间隔 1s
// 使用轮询负载均衡确保连接均匀分布
$gateway->router = function($worker_connections, $client_connection, $cmd, $buffer) {
if (empty($worker_connections)) {
return 0;
}
static $counter = 0;
$worker_ids = array_keys($worker_connections);
$index = $counter % count($worker_ids);
$counter++;
return $worker_connections[$worker_ids[$index]];
};
https://www.workerman.net/doc/gateway-worker/gateway-worker-separation.html 多看看官方的手册。我也刚接触不久。
这个我看了,我又试了一下 自定义路由 ,负载就是均匀分布,用默认gateway 负载,分布就不均匀
https://www.workerman.net/q/179
理论上应该会是争抢资源的,可以试试这个
gateway和BusinessWorker都连接同一个register(开放外部连接),
这样不同服务器的gateway和BusinessWorker,统一由register调度了