gRPC阅读日记(五)
学下如何创建一个rpc server
当我们实现了所有的方法之后,我们需要去创建一个gRPC服务,这样客户端才能真正的请求我们的服务,让我们gRPC是如何创建服务的。
flag.Parse() lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", *port)) if err != nil { log.Fatalf("failed to listen: %v", err) } var opts []grpc.ServerOption ... grpcServer := grpc.NewServer(opts...) pb.RegisterRouteGuideServer(grpcServer, newServer()) grpcServer.Serve(lis)
在创建时我们做了:
- 指定监听接口:
lis, err := net.Listen() - 创建gRPC实例,grpc.NewServer()
- 将我们的服务注册到gRPC服务器上
- 调用 Serve() 做一个阻塞,直到进程被kill调或者 stop() 被调用的时候。
创建客户端和服务存根
为了去调用服务方法,首先需要创建gRPC channel去跟服务器建立联系,通过传入服务器地址和端口给grpc.Dial()
var opts []grpc.DialOption ... conn, err := grpc.Dial(*serverAddr, opts...) if err != nil { ... } defer conn.Close()
可以使用DialOptinos去设置认证凭据(例如TLS),将它传给grpc.Dial()。
当gRPC channel设置成功,我们需要一个客户端存根来执行RPC,可以从之前写好了.proto文件生成的pb包提供的NewRouteGuideClient方法来获取它。
也就是实例化客户端了
client := pb.NewRouteGuideClient(conn)
Reference
https://grpc.io/docs/languages/go/basics/