美文网首页
gRPC四种service method介绍

gRPC四种service method介绍

作者: 糖醋沼跃鱼 | 来源:发表于2022-03-02 10:32 被阅读0次

    gRPC四种service method介绍

    首先gRPC是基于HTTP2.0的

    • 最简单的RPC,客户端使用存根向服务器发送请求,然后等待响应,就像正常的函数调用。
    // Obtains the feature at a given position.
    rpc GetFeature(Point) returns (Feature) {}
    
    • 服务器端的流式RPC(server-side streaming RPC),客户端向服务端发送请求后,获得流式响应,从中读取连续的消息。客户端会一直从返回的流中获取消息,直到没有新消息。在响应类型前加上stream关键字,即可得到服务端的流式RPC。
    // Obtains the Features available within the given Rectangle.  Results are
    // streamed rather than returned at once (e.g. in a response message with a
    // repeated field), as the rectangle may cover a large area and contain a
    // huge number of features.
    rpc ListFeatures(Rectangle) returns (stream Feature) {}
    
    • 有服务端就有客户端流式RPC(client-side streaming RPC),客户端发送连续消息给服务器,当客户端停止发送消息后,等待服务端读取所有信息后返回响应,通过在请求类型前加上stream关键字来定义一个客户端流式RPC。
    // Accepts a stream of Points on a route being traversed, returning a
    // RouteSummary when traversal is completed.
    rpc RecordRoute(stream Point) returns (RouteSummary) {}
    
    • 双向流式RPC(bidirectional streaming RPC)两边同时发送(服务端返回响应也算是发送)连续消息通过读写流(read-write stream),两个流相互独立,所以客户端和服务端可以根据他们想要的顺序去读写。举个例子,服务器端可以等待所有的客户端消息都收到后,才给予响应,或者服务端可以读取一条或几条消息,开始返回响应,亦或是其他的独写组合。消息的顺序在流中是固定的。通过在请求类型和响应类型前同事加上stream关键字定义双向流式RPC.
    // Accepts a stream of RouteNotes sent while a route is being traversed,
    // while receiving other RouteNotes (e.g. from other users).
    rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}
    

    Reference

    https://grpc.io/docs/languages/go/basics/

    相关文章

      网友评论

          本文标题:gRPC四种service method介绍

          本文链接:https://www.haomeiwen.com/subject/xbvyrrtx.html