Table des matières
Environnement d'installation" >Environnement d'installation
docker
docker pull micro/micro
Copier après la connexion
" >docker
docker pull micro/micro
Copier après la connexion
Testez-le " >Testez-le
Install protoc" >Install protoc
exemple" >exemple
Compile greeter.proto
protoc --micro_out=. --go_out=. greeter.proto
Copier après la connexion
" >Compile greeter.proto
protoc --micro_out=. --go_out=. greeter.proto
Copier après la connexion
Exécuter" >Exécuter
Test" >Test
Maison développement back-end Golang Comment configurer l'environnement de développement go-micro

Comment configurer l'environnement de développement go-micro

Aug 12, 2020 pm 01:58 PM
go golang

Vous trouverez ci-dessous

Tutoriel Golang colonne pour présenter la méthode de création d'un environnement de développement Go-Micro, j'espère que cela sera utile aux amis dans le besoin !

Comment configurer l'environnement de développement go-micro

Récemment, parce que je dois utiliser go-micro, j'apprends les microservices. Cet article enregistre le processus de construction de micro.

Environnement d'installation

micro fournit un runtime qui doit être installé avant d'utiliser go-micro. Il existe plusieurs façons d'installer le

code source
go get github.com/micro/micro/v2
Copier après la connexion

Je ne peux pas l'installer de cette façon. Ce n'est pas à cause du réseau. savoir où est le conflit. . .

Binaire
# MacOS
curl -fsSL https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh | /bin/bash

# Linux
wget -q  https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh -O - | /bin/bash

# Windows
powershell -Command "iwr -useb https://raw.githubusercontent.com/micro/micro/master/scripts/install.ps1 | iex"
Copier après la connexion

Il est recommandé d'utiliser cette méthode pour télécharger et installer, compiler Un bon package binaire peut être utilisé directement en l'ajoutant à la variable d'environnement. Si vous ne souhaitez pas utiliser de script pour l'installer, vous pouvez le télécharger depuis la page de publication de github

https://github.com/micro/micro/releases
Copier après la connexion
Maintenant que le micro est installé, testons-le.

micro web
Copier après la connexion
Copier après la connexion

Sortie

$ micro web2020-07-05 04:24:16  file=http/http.go:90 level=info service=web HTTP API Listening on [::]:80822020-07-05 04:24:16  file=v2@v2.9.1/service.go:200 level=info service=web Starting [service] go.micro.web2020-07-05 04:24:16  file=grpc/grpc.go:864 level=info service=web Server [grpc] Listening on [::]:264492020-07-05 04:24:16  file=grpc/grpc.go:697 level=info service=web Registry [mdns] Registering node: go.micro.web-b76a12a1-5226-429f-9633-ce304f179657
Copier après la connexion

Visitez maintenant

pour voir la page Web du micro. localhost:8082

Install protoc

protoc est le compilateur de protobuf, et protobuf est un format utilisé pour transmettre des données, telles que json et xml.

Adresse de téléchargement du protocole

https://github.com/protocolbuffers/protobuf/releases
Copier après la connexion

Après le téléchargement, il y a un fichier exécutable du protocole dans le dossier bin. Ajoutez-le à la variable d'environnement. (Vous pouvez simplement le placer directement dans un dossier contenant des variables d'environnement ajoutées. Cela peut éviter que l'ordinateur ne soit rempli de diverses variables d'environnement, et placer les outils couramment utilisés dans un dossier est également pratique pour la gestion)

Recommandé : "

go Language"

Il y a aussi protoc-gen-go qui doit être installé. Vous pouvez le télécharger de la manière suivante.

go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
Copier après la connexion

Écrivons maintenant une démo pour nous entraîner.

Il y a trois fichiers au total,

, server.go, client.gogreeter.proto

greeter.proto
syntax = "proto3";package protos;service Greeter {
    rpc Hello (Request) returns (Response){};}message Request {
    string name = 1;}message Response {
    string greeting = 2;}
Copier après la connexion

server.go
package mainimport (
    "context"
    "fmt"
    "github.com/micro/go-micro/v2")type Greeter struct {}func (g *Greeter) Hello(context context.Context, req *Request, rsp *Response) error {
    rsp.Greeting = "Hello " + req.Name    return nil}func main() {
    service := micro.NewService(
        micro.Name("greeter"),
    )
    service.Init()

    err := RegisterGreeterHandler(service.Server(), new(Greeter))
    if err != nil {
        fmt.Println(err)
    }

    if err := service.Run(); err != nil {
        fmt.Println(err)
    }}
Copier après la connexion

client.go
package mainimport (
    "context"
    "fmt"
    "github.com/micro/go-micro/v2")func main() {
    service := micro.NewService(micro.Name("greeter.client"))
    service.Init()

    greeter := NewGreeterService("greeter", service.Client())
    rsp, err := greeter.Hello(context.TODO(), &Request{Name: "Zaun pianist"})
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(rsp.Greeting)}
Copier après la connexion

Il est fortement recommandé d'utiliser go mod pour gérer les dépendances. La vitesse de mise à jour du projet est très rapide. . Il existe de nombreux tutoriels sur Baidu. Cela ne fonctionne plus, diverses erreurs se sont produites lors du processus d'installation

Ceci est mon fichier mod

module hello

go 1.14require (
    github.com/golang/protobuf v1.4.0
    github.com/micro/go-micro/v2 v2.9.1
    google.golang.org/protobuf v1.22.0)
Copier après la connexion

Remarque, mon greeter. fichiers proto et server.go, client.go Il est placé dans le même dossier

Une fois la compilation terminée, deux Les fichiers de code source go seront générés :

  • greeter.pb.go
  • greeter.pb.micro.go
Vous pouvez maintenant exécuter le serveur, ici car le client et le serveur sont placés dans le même dossier, c'est-à-dire dans le même package. Les deux ont des fonctions principales, donc

ne peut pas être utilisé. Quant à savoir pourquoi les deux autres le sont. ajouté, il s'agit d'une exigence du compilateur du langage Go et doit être Spécifiez les fichiers requis pour la compilation. go run ./

go run server.go greeter.pb.go greeter.pb.micro.go
Copier après la connexion

Vous pouvez utiliser micro pour afficher les microservices en cours d'exécution

micro list services
Copier après la connexion

Vous pouvez également le visualiser côté Web

micro web
Copier après la connexion
Copier après la connexion

S'il n'y a pas d'erreur, vous pouvez le voir le service a été enregistré avec succès.

$ micro list services
go.micro.web
greeter
Copier après la connexion

Vous pouvez maintenant exécuter le client pour le tester

go run client.go greeter.pb.go greeter.pb.micro.go
Copier après la connexion

J'ai eu un problème lors du test, le service a été enregistré, mais lorsque le client l'appelle, il renvoie

{"id":"go.micro.client","code":408,"detail":"context deadline exceeded","status":"Request Timeout"}panic: runtime error: invalid memory address or nil pointer dereference[signal 0xc0000005 code=0x0 addr=0x28 pc=0xeef454]
Copier après la connexion

Vérifiez les informations du service

micro get service greeter
Copier après la connexion
$ micro get service greeter                                                                                    
service  greeter                                                                                               

version latest                                                                                                 

ID      Address Metadata                                                                                       
greeter-5d86321e-86f2-41a6-8230-f015466bf791    10.198.75.60:51395      broker=http,protocol=grpc,registry=mdns,server=grpc,transport=grpc                                                                                    

Endpoint: Greeter.Hello                                                                                        

Request: {                                                                                                     
        message_state MessageState {                                                                           
                no_unkeyed_literals NoUnkeyedLiterals                                                          
                do_not_compare DoNotCompare                                                                    
                do_not_copy DoNotCopy                                                                          
                message_info MessageInfo                                                                       
        }                                                                                                      
        int32 int32                                                                                            
        unknown_fields []uint8                                                                                 
        name string                                                                                            
}                                                                                                              Response: {                                                                                                    
        message_state MessageState {                                                                           
                no_unkeyed_literals NoUnkeyedLiterals                                                          
                do_not_compare DoNotCompare                                                                    
                do_not_copy DoNotCopy                                                                          
                message_info MessageInfo                                                                       
        }                                                                                                      
        int32 int32                                                                                            
        unknown_fields []uint8                                                                                 
        greeting string                                                                                        
}
Copier après la connexion

Faites attention à l'adresse IP à l'intérieur, elle est enregistrée sous

10.198.xx , est c'est pourquoi une erreur est signalée ? ? ? Ainsi lors de l'enregistrement du service, précisez l'adresse IP

go run server.go greeter.pb.go greeter.pb.micro.go --server_address=localhost:8888
Copier après la connexion

À ce moment, il n'y aura aucune erreur si vous l'appelez avec le client.

$ go run client.go greeter.pb.go greeter.pb.micro.go
Hello Zaun pianist
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment lire et écrire des fichiers en toute sécurité avec Golang ? Comment lire et écrire des fichiers en toute sécurité avec Golang ? Jun 06, 2024 pm 05:14 PM

Lire et écrire des fichiers en toute sécurité dans Go est crucial. Les directives incluent : Vérification des autorisations de fichiers Fermeture de fichiers à l'aide de reports Validation des chemins de fichiers Utilisation de délais d'attente contextuels Le respect de ces directives garantit la sécurité de vos données et la robustesse de vos applications.

Comment configurer le pool de connexions pour la connexion à la base de données Golang ? Comment configurer le pool de connexions pour la connexion à la base de données Golang ? Jun 06, 2024 am 11:21 AM

Comment configurer le pool de connexions pour les connexions à la base de données Go ? Utilisez le type DB dans le package base de données/sql pour créer une connexion à la base de données ; définissez MaxOpenConns pour contrôler le nombre maximum de connexions simultanées ; définissez MaxIdleConns pour définir le nombre maximum de connexions inactives ; définissez ConnMaxLifetime pour contrôler le cycle de vie maximum de la connexion ;

Comment utiliser gomega pour les assertions dans les tests unitaires Golang ? Comment utiliser gomega pour les assertions dans les tests unitaires Golang ? Jun 05, 2024 pm 10:48 PM

Comment utiliser Gomega pour les assertions dans les tests unitaires Golang Dans les tests unitaires Golang, Gomega est une bibliothèque d'assertions populaire et puissante qui fournit des méthodes d'assertion riches afin que les développeurs puissent facilement vérifier les résultats des tests. Installez Gomegagoget-ugithub.com/onsi/gomega Utilisation de Gomega pour les assertions Voici quelques exemples courants d'utilisation de Gomega pour les assertions : 1. Importation d'assertion d'égalité "github.com/onsi/gomega" funcTest_MyFunction(t*testing.T){

Golang Framework vs Go Framework : comparaison de l'architecture interne et des fonctionnalités externes Golang Framework vs Go Framework : comparaison de l'architecture interne et des fonctionnalités externes Jun 06, 2024 pm 12:37 PM

La différence entre le framework GoLang et le framework Go se reflète dans l'architecture interne et les fonctionnalités externes. Le framework GoLang est basé sur la bibliothèque standard Go et étend ses fonctionnalités, tandis que le framework Go se compose de bibliothèques indépendantes pour atteindre des objectifs spécifiques. Le framework GoLang est plus flexible et le framework Go est plus facile à utiliser. Le framework GoLang présente un léger avantage en termes de performances et le framework Go est plus évolutif. Cas : gin-gonic (framework Go) est utilisé pour créer l'API REST, tandis qu'Echo (framework GoLang) est utilisé pour créer des applications Web.

Comment enregistrer les données JSON dans la base de données dans Golang ? Comment enregistrer les données JSON dans la base de données dans Golang ? Jun 06, 2024 am 11:24 AM

Les données JSON peuvent être enregistrées dans une base de données MySQL à l'aide de la bibliothèque gjson ou de la fonction json.Unmarshal. La bibliothèque gjson fournit des méthodes pratiques pour analyser les champs JSON, et la fonction json.Unmarshal nécessite un pointeur de type cible pour désorganiser les données JSON. Les deux méthodes nécessitent la préparation d'instructions SQL et l'exécution d'opérations d'insertion pour conserver les données dans la base de données.

Comment trouver la première sous-chaîne correspondant à une expression régulière Golang ? Comment trouver la première sous-chaîne correspondant à une expression régulière Golang ? Jun 06, 2024 am 10:51 AM

La fonction FindStringSubmatch recherche la première sous-chaîne correspondant à une expression régulière : la fonction renvoie une tranche contenant la sous-chaîne correspondante, le premier élément étant la chaîne entière correspondante et les éléments suivants étant des sous-chaînes individuelles. Exemple de code : regexp.FindStringSubmatch(text,pattern) renvoie une tranche de sous-chaînes correspondantes. Cas pratique : Il peut être utilisé pour faire correspondre le nom de domaine dans l'adresse email, par exemple : email:="user@example.com", pattern:=@([^\s]+)$ pour obtenir la correspondance du nom de domaine [1].

Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Apr 02, 2025 am 09:12 AM

Chemin d'apprentissage du backend: le parcours d'exploration du front-end à l'arrière-end en tant que débutant back-end qui se transforme du développement frontal, vous avez déjà la base de Nodejs, ...

Comment utiliser un fuseau horaire prédéfini avec Golang ? Comment utiliser un fuseau horaire prédéfini avec Golang ? Jun 06, 2024 pm 01:02 PM

L'utilisation de fuseaux horaires prédéfinis dans Go comprend les étapes suivantes : Importez le package « time ». Chargez un fuseau horaire spécifique via la fonction LoadLocation. Utilisez le fuseau horaire chargé dans des opérations telles que la création d'objets Time, l'analyse de chaînes horaires et l'exécution de conversions de date et d'heure. Comparez les dates en utilisant différents fuseaux horaires pour illustrer l'application de la fonctionnalité de fuseau horaire prédéfini.

See all articles