概述
用golang,结合gRPC,实现远程调用,输出 hello world
关于gRPC的安装看《centos7安gRPC》
流程如下:
1. 编写 .proto文件
2. 用 protoc 工具生成go代码
3. 编写 gRPC 服务端
4. 编写 gRPC 客户端
5. 运行测试
目录结构如下图示例:
1. 编写proto文件
syntax = "proto3";
// 指定proto版本,有多个版本,3是最新版本,更轻量化,支持更多语言
// 定义包名
package hello;
// 定义请求信息结构
message HelloRequest{
string name = 1;
}
// 定义响应信息结构
message HelloResponse{
string message = 1;
}
// 定义Hello服务
service Hello{
// 定义服务中的方法
rpc SayHello(HelloRequest)returns(HelloResponse){}
}
2. 生成go文件
protoc -I . --go_out=plugins=grpc:. ./hello.proto
3. 编写rpcServer文件
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
hello "imooc.com/tttt/t-grpc/hello/proto"
"net"
)
type rpcServer struct{}
// 定义rpc服务的方法
func (s *rpcServer) SayHello(ctx context.Context,
in *hello.HelloRequest) (*hello.HelloResponse, error) {
return &hello.HelloResponse{
Message: "hello " + in.Name,
}, nil
}
func main() {
// 新建tcp监听通道
listener, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
// 实例化gRPC server
server := grpc.NewServer()
// 注册 server
hello.RegisterHelloServer(server, &rpcServer{})
fmt.Println("Listen on localhost:8080")
// 启动监听
server.Serve(listener)
}
4. 编写rpcClient文件
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"google.golang.org/grpc/grpclog"
hello "imooc.com/tttt/t-grpc/hello/proto"
)
func main() {
// 连接rpc通道
conn, err := grpc.Dial("localhost:8080", grpc.WithInsecure())
if err != nil {
grpclog.Fatalln(err)
}
defer conn.Close()
// 初始化客户端
cli := hello.NewHelloClient(conn)
// 调用方法
reqBody := &hello.HelloRequest{Name: "world"}
res, err := cli.SayHello(context.Background(), reqBody)
if err != nil {
grpclog.Fatalln(err)
}
fmt.Println(res.Message)
}
运行服务端程序,输出如下图
运行客户端程序,输出如下图
最后
以上就是义气母鸡为你收集整理的gRPC实现简单helloworld的全部内容,希望文章能够帮你解决gRPC实现简单helloworld所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复