对gRPC实践后,可以跟着调用链路分析下gRPC的调用流程。
这里抛几个问题:
- gRPC调用经历了哪些过程?
- gRPC内部调用的实现是什么样?
- gRPC底层传输依赖什么协议?
- client端如何发起的请求?
- server如何接收的请求?
4.1、探索客户端
4.1.1、client的生成
以下是demo里面的client实现,生成一个client,然后发起SayHello请求。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
func main() { client := api.NewGreeterClient() req := &helloworld.HelloRequest{ Name: "ldaysjun", } ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() rsp, err := client.SayHello(ctx, req) if err != nil { log.Fatalf("failed to serve: %v", err) } fmt.Println("rsp.message = ", rsp.Message) } |
client的构建依赖以下func。
1 2 3 4 5 6 7 8</ |