博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go grpc安装
阅读量:5794 次
发布时间:2019-06-18

本文共 4794 字,大约阅读时间需要 15 分钟。

hot3.png

Prerequisites

Go version

gRPC works with Go 1.5 or higher.

$ go version

For installation instructions, follow this guide: 

Install gRPC

Use the following command to install gRPC.

$ go get google.golang.org/grpc

Install Protocol Buffers v3

Install the protoc compiler that is used to generate gRPC service code. The simplest way to do this is to download pre-compiled binaries for your platform(protoc-<version>-<platform>.zip) from here: 

  • Unzip this file.
  • Update the environment variable PATH to include the path to the protoc binary file.

Next, install the protoc plugin for Go

$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

The compiler plugin, protoc-gen-go, will be installed in $GOBIN, defaulting to $GOPATH/bin. It must be in your $PATH for the protocol compiler, protoc, to find it.

$ export PATH=$PATH:$GOPATH/bin

Download the example

The grpc code that was fetched with go get google.golang.org/grpc also contains the examples. They can be found under the examples dir: $GOPATH/src/google.golang.org/grpc/examples.

Build the example

Change to the example directory

$ cd $GOPATH/src/google.golang.org/grpc/examples/helloworld

gRPC services are defined in a proto file, which is used to generate a corresponding .pb.go. This file is already generated for the helloworld example code and can be found under this directory: $GOPATH/src/google.golang.org/grpc/examples/helloworld/helloworld

This helloworld.pb.go file contains:

  • Generated client and server code.
  • Code for populating, serializing, and retrieving our HelloRequest and HelloReply message types.

Try it!

To compile and run the server and client code, the go run command can be used. In the examples directory:

$ go run greeter_server/main.go

From a different terminal:

$ go run greeter_client/main.go

If things go smoothly, you will see the Greeting: Hello world in the client side output.

Congratulations! You’ve just run a client-server application with gRPC.

Update a gRPC service

Now let’s look at how to update the application with an extra method on the server for the client to call. Our gRPC service is defined using protocol buffers; you can find out lots more about how to define a service in a .proto file in  and . For now all you need to know is that both the server and the client “stub” have a SayHello RPC method that takes a HelloRequest parameter from the client and returns a HelloReply from the server, and that this method is defined like this:

// The greeting service definition.service Greeter {  // Sends a greeting  rpc SayHello (HelloRequest) returns (HelloReply) {}}// The request message containing the user's name.message HelloRequest {  string name = 1;}// The response message containing the greetingsmessage HelloReply {  string message = 1;}

Let’s update this so that the Greeter service has two methods. Make sure you are in the same examples dir as above ($GOPATH/src/google.golang.org/grpc/examples/helloworld)

Edit helloworld/helloworld.proto and update it with a new SayHelloAgainmethod, with the same request and response types:

// The greeting service definition.service Greeter {  // Sends a greeting  rpc SayHello (HelloRequest) returns (HelloReply) {}  // Sends another greeting  rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}}// The request message containing the user's name.message HelloRequest {  string name = 1;}// The response message containing the greetingsmessage HelloReply {  string message = 1;}

Generate gRPC code

Next we need to update the gRPC code used by our application to use the new service definition. From the same examples dir as above ($GOPATH/src/google.golang.org/grpc/examples/helloworld)

$ protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld

This regenerates the helloworld.pb.go with our new changes.

Update and run the application

We now have new generated server and client code, but we still need to implement and call the new method in the human-written parts of our example application.

Update the server

Edit greeter_server/main.go and add the following function to it:

func (s *server) SayHelloAgain(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {        return &pb.HelloReply{Message: "Hello again " + in.Name}, nil}

Update the client

Edit greeter_client/main.go to add the following code to the main function.

r, err = c.SayHelloAgain(context.Background(), &pb.HelloRequest{Name: name})if err != nil {        log.Fatalf("could not greet: %v", err)}log.Printf("Greeting: %s", r.Message)

Run!

Run the server

$ go run greeter_server/main.go

On a different terminal, run the client

$ go run greeter_client/main.go

You should see the updated output:

$ go run greeter_client/main.goGreeting: Hello worldGreeting: Hello again world

转载于:https://my.oschina.net/ifraincoat/blog/840386

你可能感兴趣的文章
iOS开发之缓存(二):设计一个移动应用的本地缓存机制
查看>>
动态调整UITableViewCell高度的实现方法
查看>>
Titanium和PhoneGap两大iOS移动开发框架比拼
查看>>
UITables with Downloaded Images – Easy Asynchronous Code
查看>>
选择语句
查看>>
黄聪:怎么清理win7、win8更新垃圾(winsxs目录清理)
查看>>
读《余额宝技术架构及演进》有感
查看>>
Vue2.x 兄弟组件之间的数据传递
查看>>
java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用
查看>>
[转载]android坐标
查看>>
速读《现代软件工程----构建之法》有感
查看>>
可以左右移动横向无缝滚动的JS图片展示代码
查看>>
Collection集合的功能及总结
查看>>
Web轻量级扫描工具Skipfish
查看>>
Linux学习之文件属性chattr权限与sudo权限(十二)
查看>>
错误处理
查看>>
ThinkPHP--模版基础
查看>>
安装php出错configure: error: mcrypt.h not found. Please reinstall libmcrypt
查看>>
poj 1308 Is It A Tree? (并查集)
查看>>
软件工程第0次作业
查看>>