在Golang中,可以使用net/http/httputil包实现负载均衡。代码示例:
go
// 定义后端服务器
servers := []*url.URL{
url.Parse("http://server1.com"),
url.Parse("http://server2.com"),
url.Parse("http://server3.com"),
}
// 创建负载均衡代理
proxy := httputil.NewMultiHostReverseProxy(servers)
// 定义director,用于选择后端服务器
director := func(req *http.Request) {
// 简单的轮询算法选择服务器
req.URL.Scheme = servers[reqCount%len(servers)].Scheme
req.URL.Host = servers[reqCount%len(servers)].Host
reqCount++
}
proxy.Director = director
func main() {
// 使用标准HTTP处理器启动HTTP服务器
http.ListenAndServe(":8080", proxy)
}
该示例定义了3个后端服务器,并创建httputil.NewMultiHostReverseProxy进行负载均衡代理。director函数实现简单的轮询算法选择后端服务器。客户端发送到代理服务器的请求会被director选择一个后端服务器进行转发。
这样实现了简单的负载均衡功能,可以平衡到不同后端服务器的请求负载。