Dans les applications modernes, il est rare qu'un seul serveur puisse gérer toutes les requêtes. Souvent, plusieurs serveurs sont utilisés pour travailler ensemble. Cela peut être dû au fait que le trafic est trop important et qu'un trop grand nombre de requêtes ne peuvent pas être traitées, ou cela peut être dû à la séparation de la logique métier. Cela signifie qu'un mécanisme est nécessaire pour coordonner la communication entre les serveurs.
Le transfert HTTP est une solution. Il permet de transmettre les demandes d'un serveur à un autre. Cela permet un équilibrage de charge et une efficacité améliorée sans nécessiter de modifications du code d’application existant.
Dans cet article, nous présenterons comment écrire un programme de transfert HTTP en utilisant le langage Go. Nous apprendrons comment utiliser la bibliothèque standard de Go pour écouter les requêtes HTTP et les transmettre à un serveur en amont.
Preparation
Afin d'implémenter un simple programme de transfert HTTP, nous devons installer Golang. Golang est un langage compilé, sa vitesse de compilation est très rapide et il fournit également une riche bibliothèque standard. Vous pouvez télécharger et installer Golang en visitant le site officiel de Golang.
Étape 1 : Installer les dépendances
Lors du développement à l'aide du langage Go, de nombreuses bibliothèques tierces sont à notre disposition. Nous pouvons utiliser les instructions de ligne de commande pour télécharger les dépendances requises à partir de sites miroirs nationaux. Cela accélérera notre processus de développement. Voici la commande pour télécharger les dépendances :
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
Après avoir exécuté la commande ci-dessus, nous pouvons volontiers développer.
Étape 2 : Créer un programme de transfert
Nous pouvons créer un programme de transfert HTTP de base en utilisant le code suivant :
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "Hello world") }) http.ListenAndServe(":8080", nil) }
Cette application écoute sur le port 8080 toutes les requêtes HTTP activées. Il utilise la méthode http.HandleFunc
pour gérer les requêtes HTTP. Pour toute demande, il écrit « Bonjour tout le monde » dans la réponse. Il s'agit d'un exemple extrêmement simple, mais il peut nous aider à comprendre comment créer un serveur HTTP en utilisant le langage Go. http.HandleFunc
方法来处理HTTP请求。对于任何请求,它都会在响应中写入"Hello world"。这是一个极其简单的示例,但它可以帮助我们了解如何使用Go语言构建HTTP服务器。
步骤3:转发HTTP请求
我们需要对上一步的代码进行修改,才能实现转发HTTP请求的功能。我们需要将接收到的请求转发到upstream服务器。通过修改我们处理请求的方法,实现将请求转发到upstream服务器的功能。下面是修改后的代码:
package main import ( "fmt" "net/http" "net/http/httputil" "net/url" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { proxy := httputil.NewSingleHostReverseProxy(&url.URL{ Scheme: "http", Host: "127.0.0.1:8081", }) proxy.ServeHTTP(w, req) }) http.ListenAndServe(":8080", nil) }
在这个示例中,我们使用httputil.NewSingleHostReverseProxy
方法创建了一个代理对象。这个对象可以将HTTP请求转发到upstream服务器。我们还需要指定upstream服务器的地址和端口(127.0.0.1:8081
)。最后,我们使用proxy.ServeHTTP
方法来转发HTTP请求。
上述示例中的代码非常简单易懂。通过这个示例,你可以学习到如何使用Go语言标准库中的httputil
rrreee
Dans cet exemple, nous créons un objet proxy en utilisant la méthodehttputil.NewSingleHostReverseProxy
. Cet objet peut transmettre les requêtes HTTP au serveur en amont. Nous devons également spécifier l'adresse et le port du serveur en amont (127.0.0.1:8081
). Enfin, nous utilisons la méthode proxy.ServeHTTP
pour transférer la requête HTTP. #🎜🎜##🎜🎜#Le code dans l'exemple ci-dessus est très simple et facile à comprendre. Grâce à cet exemple, vous pouvez apprendre à utiliser le package httputil
dans la bibliothèque standard du langage Go pour implémenter le transfert HTTP. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Dans cet article, nous avons présenté comment utiliser la bibliothèque standard du langage Go pour implémenter le transfert HTTP. Nous avons fourni un exemple simple pour illustrer comment procéder. Le code peut être modifié pour s'adapter à des scénarios commerciaux plus complexes. En tant que langage de programmation très flexible et puissant, Go peut être largement utilisé dans le développement Web, le cloud computing, la programmation réseau et d'autres domaines. J'espère que cet article vous sera utile. #🎜🎜#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!