![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
grpc
遥不可及梦
这个作者很懒,什么都没留下…
展开
-
grpc Q&A问答
gRPC Metadata 是通过什么传输?调用 grpc.Dial 会真正的去连接服务端吗?会,但是是异步连接的,连接状态为正在连接。但如果你设置了 grpc.WithBlock 选项,就会阻塞等待(等待握手成功)。另外你需要注意,当未设置 grpc.WithBlock 时,ctx 超时控制对其无任何效果。调用 ClientConn 不 Close 会导致泄露吗?会,除非你的客户端不是常驻进程,那么在应用结束时会被动地回收资源。但如果是常驻进程,你又真的忘记执行 Close语句,会造成的泄露。如原创 2020-09-22 15:52:47 · 782 阅读 · 0 评论 -
grpc 客户端连接请求源码
func main() { conn, err := grpc.Dial(":"+PORT, grpc.WithInsecure()) ... defer conn.Close() client := pb.NewSearchServiceClient(conn) resp, err := client.Search(context.Background(), &pb.SearchRequest{ Request: "gRPC", }) ...}创建拨号连接func D原创 2020-09-22 10:57:43 · 1357 阅读 · 0 评论 -
grpc Server初始化注册监听源码
func main() { server := grpc.NewServer() pb.RegisterSearchServiceServer(server, &SearchService{}) lis, err := net.Listen("tcp", ":"+PORT) server.Serve(lis)}为什么四行代码,就能够起一个 gRPC Server初始化// grpc.NewServer()func NewServer(opt ...ServerOption)原创 2020-09-21 18:36:24 · 1305 阅读 · 0 评论 -
grpc client与servre如何交互
对 Client 端调用 Server 端进行抓包去剖析。如图所示MagicSettingsHeadersDataSettingsWindow_updatePingHeadersDataHeadersWindow_UpdatepingMagicMagic 帧的主要作用是建立 HTTP/2 请求的前言。在 HTTP/2 中,要求两端都要发送一个连接前言,作为对所使用协议的最终确认,并确定 HTTP/2 连接的初始设置,客户端和服务端各自发送不同的连接前言。而上图中的 Ma原创 2020-09-21 15:53:36 · 431 阅读 · 0 评论 -
grpc-go 调用模式
一元调用(同步请求)servertype SearchService struct{}func (s *SearchService) Search(ctx context.Context, r *pb.SearchRequest) (*pb.SearchResponse, error) { return &pb.SearchResponse{Response: r.GetRequest() + " Server"}, nil}const PORT = "9001"func原创 2020-09-21 15:29:09 · 394 阅读 · 0 评论