Résumé : Construire une API RESTful : Créez un projet Golang, utilisez le package http et définissez les fonctions de traitement de route. Implémentez l'équilibrage de charge : utilisez le package fasthttp pour créer un middleware proxy afin de transférer les requêtes vers plusieurs serveurs backend. Combat pratique : démarrez le serveur backend, utilisez la requête proxy fasthttp et observez les résultats de l'équilibrage de charge.
Utilisez Golang pour créer une API RESTful et implémenter l'équilibrage de charge
Créer un nouveau projet Golang , et ajoutez le package HTTP :
package main import ( "fmt" "log" "net/http" ) func main() { // 创建 HTTP 路由器 mux := http.NewServeMux() // 定义路由处理函数 mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }) //启动 HTTP 服务器 log.Fatal(http.ListenAndServe(":8080", mux)) }
Utilisez http.NewServeMux()
pour créer le routeur HTTP et utilisez HandleFunc()
pour définir le fonction de traitement. Ces gestionnaires géreront des chemins et des méthodes HTTP spécifiques. http.NewServeMux()
创建 HTTP 路由器,并使用 HandleFunc()
定义处理函数。这些处理函数将处理特定的 HTTP 路径和方法。
为了实现负载均衡,我们需要使用中间件或反向代理服务器。下面使用 fasthttp
包作为中间件。
首先,安装 fasthttp
:
go get -u github.com/valyala/fasthttp
然后,导入 fasthttp
并使用 fasthttp.Director()
fasthttp
est utilisé ci-dessous comme middleware. Tout d'abord, installez fasthttp
: package main import ( "fmt" "log" "net/http" "github.com/valyala/fasthttp" ) func main() { // 创建 fasthttp 代理中间件 director := fasthttp.Director{ // 定义要代理到后端服务器的地址 Addrs: []string{"localhost:8081"}, } // 创建 HTTP 路由器 mux := http.NewServeMux() // 将代理中间件作为全局处理器添加到路由器 mux.Use(func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { director.ServeHTTP(w, r) return }) }) // 定义路由处理函数,处理 HTTP 请求后 mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }) // 启动 HTTP 服务器 log.Fatal(http.ListenAndServe(":8080", mux)) }
fasthttp
et utilisez fasthttp.Director()
pour définir la fonction proxy : package main import ( "fmt" "log" "net/http" ) func main() { // 在端口 8081 上启动一个 HTTP 服务器 log.Fatal(http.ListenAndServe(":8081", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Backend Server 1") }))) }
Pour démontrer, vous pouvez démarrer plusieurs serveurs backend (par exemple sur différents ports) et utiliser fasthttp pour envoyer des requêtes proxy à ces serveurs.
package main import ( "fmt" "log" "net/http" ) func main() { // 在端口 8082 上启动另一个 HTTP 服务器 log.Fatal(http.ListenAndServe(":8082", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Backend Server 2") }))) }
Backend Server 2
go run main.go
curl http://localhost:8080
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!