추상: RESTful API 구축: Golang 프로젝트를 생성하고 http 패키지를 사용하고 경로 처리 기능을 정의합니다. 로드 밸런싱 구현: fasthttp 패키지를 사용하여 요청을 여러 백엔드 서버로 전달하는 프록시 미들웨어를 구축합니다. 실제 전투: 백엔드 서버를 시작하고 fasthttp 프록시 요청을 사용하고 로드 밸런싱 결과를 관찰합니다.
Golang을 사용하여 RESTful API 구축 및 로드 밸런싱 구현
만들기 새로운 Golang 프로젝트
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)) }
http.NewServeMux()
를 사용하여 HTTP 라우터를 생성하고 HandleFunc()
를 사용하여 처리 기능. 이러한 핸들러는 특정 HTTP 경로 및 메소드를 처리합니다. http.NewServeMux()
创建 HTTP 路由器,并使用 HandleFunc()
定义处理函数。这些处理函数将处理特定的 HTTP 路径和方法。
为了实现负载均衡,我们需要使用中间件或反向代理服务器。下面使用 fasthttp
包作为中间件。
首先,安装 fasthttp
:
go get -u github.com/valyala/fasthttp
然后,导入 fasthttp
并使用 fasthttp.Director()
fasthttp
패키지가 미들웨어로 사용됩니다. 먼저 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
를 가져오고 fasthttp.Director()
를 사용하여 프록시 기능을 정의하세요. 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") }))) }연습 사례
시연하기 위해 여러 백엔드 서버(예: 다른 포트)를 시작하고 fasthttp를 사용하여 이러한 서버에 대한 요청을 프록시할 수 있습니다.
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.goTest Load Balancing🎜🎜그런 다음 다음 명령을 사용하여 API 서버를 시작합니다. 🎜
curl http://localhost:8080🎜마지막으로 API 서버에 HTTP 요청을 보내면 API 서버가 실행됩니다. 로드 밸런싱 백엔드 서버에: 🎜rrreee🎜 출력에 "백엔드 서버 1"과 "백엔드 서버 2"가 교대로 표시되어 로드 밸런싱이 작동 중임을 나타냅니다. 🎜
위 내용은 RESTful API를 구축하고 Golang을 사용하여 로드 밸런싱을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!