要約: RESTful API の構築: Golang プロジェクトを作成し、http パッケージを使用し、ルート処理関数を定義します。負荷分散の実装: fasthttp パッケージを使用して、リクエストを複数のバックエンド サーバーに転送するプロキシ ミドルウェアを構築します。実際の戦闘: バックエンド サーバーを起動し、fasthttp プロキシ リクエストを使用し、負荷分散の結果を観察します。
Golangを使用してRESTful APIを構築し、負荷分散を実装する
新しい Golang プロジェクトを作成するを作成し、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)) }
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") }))) }
バックエンド サーバー 2
go run main.go
curl http://localhost:8080
以上がRESTful API を構築し、Golang を使用して負荷分散を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。