Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Aufbaus der Windows10+golang+gRPC-Umgebung

Detaillierte Erläuterung des Aufbaus der Windows10+golang+gRPC-Umgebung

藏色散人
藏色散人nach vorne
2021-03-15 17:08:173876Durchsuche

Die folgende Tutorial-Kolumne von golang wird Ihnen den Aufbau der Windows10+golang+gRPC-Umgebung vorstellen. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

Detaillierte Erläuterung des Aufbaus der Windows10+golang+gRPC-Umgebung

1. Installationsprotokoll

Download-Adresse: https://github.com/protocolbuffers/protobuf/release
(Hinweis: https://github.com /protocolbuffers/protobuf ist die Quellcodebibliothek. Wenn die Quellcodebibliothek zum Herunterladen zu langsam ist, können Sie sie in Code Cloud durchsuchen. Die Downloadgeschwindigkeit ist relativ hoch Natürlich können Sie es auch selbst in der Code Cloud erstellen.)

Die neueste Version ist 3.12.2
Ich habe ein Windows 10 64-Bit-Betriebssystem, also wähle ich die Version: protoc-3.12.2-win64.zip
Sie können es direkt mit dem Browser herunterladen
Wenn die Netzwerkgeschwindigkeit nicht gut ist, können Sie es auch mit Thunder herunterladen: https://github.com/protocolbuffers/protobuf/releases/download/v3.12.2/protoc-3.12. 2-win64.zip
Nach der Dekomprimierung kopieren Sie protoc.exe in das Verzeichnis $GOPATH/bin. Weiter
Wenn mehrere GOPATHs vorhanden sind, platzieren Sie diese im GOPATH, wo sich die öffentliche Bibliothek eines Drittanbieters befindet, damit mehrere Projekte sie verwenden können

2. Installieren Sie gRPC

gRPC-Quellcode: https://github.com/grpc/grpc -go.git
Die auf der offiziellen Website angegebene Installationsmethode lautet: go get -u google.golang.org/grpc
In China tritt jedoch häufig der folgende Fehler auf:

$ go get -u google.golang.org/grpc
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

Da der Zugriff auf google.golang.org in China schwierig ist, schlägt der Download fehl.
Die offizielle Website bietet auch mehrere Lösungen:
https://github.com/grpc/grpc-go
Wir verwenden die zweite Methode, um den Quellcode direkt lokal zu klonen
Geben Sie das Verzeichnis $GOPATH/src ein und führen Sie den Befehl aus:

git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc

Die Download-Geschwindigkeit ist manchmal schnell und manchmal langsam. Sie können den Vorgang abbrechen und erneut starten, dann wird es gelegentlich schneller.
Nachdem der Download abgeschlossen ist, installieren Sie gRPC:

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src
$ go install google.golang.org/grpc/
google.golang.org\grpc\credentials\credentials.go:31:2: cannot find package "github.com/golang/protobuf/proto" in any of:
        D:\Go\src\github.com\golang\protobuf\proto (from $GOROOT)
        C:\Users\ASUS\go\src\github.com\golang\protobuf\proto (from $GOPATH)
google.golang.org\grpc\internal\binarylog\method_logger.go:28:2: cannot find package "github.com/golang/protobuf/ptypes" in any of:
        D:\Go\src\github.com\golang\protobuf\ptypes (from $GOROOT)
        C:\Users\ASUS\go\src\github.com\golang\protobuf\ptypes (from $GOPATH)
google.golang.org\grpc\binarylog\grpc_binarylog_v1\binarylog.pb.go:9:2: cannot find package "github.com/golang/protobuf/ptypes/duration" in any of:
        D:\Go\src\github.com\golang\protobuf\ptypes\duration (from $GOROOT)
        C:\Users\ASUS\go\src\github.com\golang\protobuf\ptypes\duration (from $GOPATH)
google.golang.org\grpc\binarylog\grpc_binarylog_v1\binarylog.pb.go:10:2: cannot find package "github.com/golang/protobuf/ptypes/timestamp" in any of:
        D:\Go\src\github.com\golang\protobuf\ptypes\timestamp (from $GOROOT)
        C:\Users\ASUS\go\src\github.com\golang\protobuf\ptypes\timestamp (from $GOPATH)
google.golang.org\grpc\internal\transport\controlbuf.go:28:2: cannot find package "golang.org/x/net/http2" in any of:
        D:\Go\src\golang.org\x\net\http2 (from $GOROOT)
        C:\Users\ASUS\go\src\golang.org\x\net\http2 (from $GOPATH)
google.golang.org\grpc\internal\transport\controlbuf.go:29:2: cannot find package "golang.org/x/net/http2/hpack" in any of:
        D:\Go\src\golang.org\x\net\http2\hpack (from $GOROOT)
        C:\Users\ASUS\go\src\golang.org\x\net\http2\hpack (from $GOPATH)
google.golang.org\grpc\server.go:36:2: cannot find package "golang.org/x/net/trace" in any of:
        D:\Go\src\golang.org\x\net\trace (from $GOROOT)
        C:\Users\ASUS\go\src\golang.org\x\net\trace (from $GOPATH)
google.golang.org\grpc\status\status.go:34:2: cannot find package "google.golang.org/genproto/googleapis/rpc/status" in any of:
        D:\Go\src\google.golang.org\genproto\googleapis\rpc\status (from $GOROOT)
        C:\Users\ASUS\go\src\google.golang.org\genproto\googleapis\rpc\status (from $GOPATH)

Sie können feststellen, dass es aufgrund der Eingabeaufforderungen zu vielen Fehlern kommt. Wir werden die Fehlermeldungen nicht nach und nach analysieren bit hier, aber geben Sie direkt die erforderlichen Abhängigkeitspakete und Download-Methoden an (Führen Sie den Befehl im Verzeichnis $GOPATH/src aus):
1) Textpaket

git clone https://github.com/golang/text.git ./golang.org/x/text

2) Netzpaket

git clone https://github.com/golang/net.git ./golang.org/x/net

3) Genproto-Paket

git clone https://github.com/google/go-genproto.git ./google.golang.org/genproto

4 ) Protobuf-Paket
Beide:

git clone https://github.com/protocolbuffers/protobuf-go.git ./google.golang.org/protobuf
git clone https://github.com/golang/protobuf.git ./github.com/golang/protobuf

Beide herunterladen, github Ein Teil des Codes von .com/golang/protobuf hängt von google.golang.org/protobuf ab

Nachdem Sie alle oben genannten abhängigen Bibliotheken heruntergeladen haben, installieren Sie gRPC neu:

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src
$ go install google.golang.org/grpc/

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src
$

It Es ist ersichtlich, dass es keine Fehler und keine Ausgabe gibt. . .

Überprüfen Sie, ob gRPC in Ordnung ist. Öffnen Sie zwei Bash-Fenster und führen Sie jeweils die folgenden Befehle aus:

go run google.golang.org/grpc/examples/helloworld/greeter_server/main.go
go run google.golang.org/grpc/examples/helloworld/greeter_client/main.go
. Wie im Bild gezeigt, können Sie sehen, dass der Server die vom Client gesendete Nachricht empfangen hat.

3 rpcDetaillierte Erläuterung des Aufbaus der Windows10+golang+gRPC-Umgebung

Dafür muss die geschriebene Protodatei kompiliert werden, um eine .go-Datei zu werden, zum Beispiel:

$GOPATHgoogle.golang.orggrpcexampleshelloworldhelloworld Es gibt die folgenden Dateien im Verzeichnis:

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ ll
total 16
-rw-r--r-- 1 ASUS 197121 4938 6月   1 21:46 helloworld.pb.go
-rw-r--r-- 1 ASUS 197121 1208 6月   1 21:46 helloworld.proto
-rw-r--r-- 1 ASUS 197121 2823 6月   1 21:46 helloworld_grpc.pb.go
Lassen Sie uns zuerst die .go-Datei sichern
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ mv helloworld.pb.go helloworld.pb.go.bak

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ mv helloworld_grpc.pb.go helloworld_grpc.pb.go.bak

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ ll
total 16
-rw-r--r-- 1 ASUS 197121 4938 6月   1 21:46 helloworld.pb.go.bak
-rw-r--r-- 1 ASUS 197121 1208 6月   1 21:46 helloworld.proto
-rw-r--r-- 1 ASUS 197121 2823 6月   1 21:46 helloworld_grpc.pb.go.bak

und dann ausführen:

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ protoc --go_out=plugins=grpc:. helloworld.proto
'protoc-gen-go' ????????????????????????е????
?????????????
--go_out: protoc-gen-go: Plugin failed with status code 1.
Es ​​wurde ein Fehler festgestellt, Sie müssen protoc-gen-go installieren.

Führen Sie den folgenden Befehl zur Installation aus:

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src
$ go install github.com/golang/protobuf/protoc-gen-go/

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src
$ cd ../bin

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/bin
$ ll
total 11852
-rwxr-xr-x 1 ASUS 197121 3702272 5月  27 07:06 protoc.exe*
-rwxr-xr-x 1 ASUS 197121 8431104 6月   1 23:13 protoc-gen-go.exe*

Nach Abschluss der Installation wird die Datei protoc-gen-go.exe angezeigt wird im Verzeichnis $GOPATH/bin generiert

Dann führen Sie die Kompilierungsprotodatei aus:

Es wird eine helloworld.pb.go-Datei generiert

Zusammenfassung


Es gibt mehrere Bibliotheken, über die Sie Bescheid wissen müssen:

1. https://github.com/protocolbuffers/protobuf
Dies ist die Open-Source-Protobuf-Quellcodebibliothek. Enthält den Quellcode für die Implementierung von Protobuf in verschiedenen häufig verwendeten Sprachen

2 /golang/protobuf

Diese Bibliothek ist die Protobuf-Open-Source-Bibliothek von Golang. Überprüfen Sie die README.md dieser Bibliothek und Sie können feststellen, dass diese Bibliothek

Klicken Sie stattdessen auf diesen Link und Sie werden das entsprechende Quellcode-Git-Repository finden Die Bibliothek lautet: https://github.com/protocolbuffers/protobuf-go muss immer noch Githubs protoc-gen-go verwenden,
Wenn Sie google.golang.org/protobuf/cmd/protoc-gen-go verwenden (d. h. installieren Sie google.golang. org/protobuf/cmd/protoc-gen-go, Dadurch wird auch protoc-gen-go.exe im Verzeichnis $GOPATH/bin generiert, was den folgenden Fehler verursacht

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ protoc --go_out=plugins=grpc:. helloworld.proto
--go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC

ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master)
$ protoc --go-grpc_out=. helloworld.proto
'protoc-gen-go-grpc' ????????????????????????е????
?????????????
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.

Es wird ein separates protoc-gen-go-grpc zum Generieren der grpc-Schnittstelle geben, aber das ist so befindet sich noch in der Code-Review-Phase und soll veröffentlicht werden. . .
google.golang.org/protobuf

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Aufbaus der Windows10+golang+gRPC-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen