我正在尝试为负载均衡器实现最少连接算法。我正在使用优先级队列来按排序顺序保留每个服务器的连接数。这是代码:
server = spq[0]
serverNumber = server.value
updatedPriority = server.priority + 1 // Increment connection count for server
spq.update(server, serverNumber, updatedPriority)
targetUrl, err := url.Parse(configuration.Servers[serverNumber])
if err != nil {
log.Fatal(err)
}
// Send the request to the selected server
httputil.NewSingleHostReverseProxy(targetUrl).ServeHTTP(w, r)
updatedPriority = server.priority - 1 // Decrement connection count for server
spq.update(server, serverNumber, updatedPriority)
spq我的优先队列在哪里。
此代码将针对平衡器收到的每个请求运行。但在记录每个请求的队列状态后,我没有得到正确的结果。例如,在一种情况下,我看到队列包含两次具有不同优先级的同一服务器。
我确信这与跨请求同步和锁定队列有关。但我不确定在这种特殊情况下正确的方法是什么。
慕的地10843
相关分类