1.Google RPC-一个RPC库和框架

来源:互联网 发布:java数组 编辑:程序博客网 时间:2024/06/16 09:53

1.概览

Remote Procedure Calls(RPCs)为构造分布式应用程序和服务提供了一个有用的抽象。Google RPC是对gRPC协议的一个具体的实现库,基于http/2。

2.接口

开发人员在使用grpc的时候,都需要定义基于rpc的方法描述,然后调用google rpc的代码生成库自动生成客户端和服务端程序,开发者将在服务端实现这套方法,以供在客户端使用。

Google RPC默认的是使用protocol buffer来描述服务端的方法和有效的传输信息。当然也可以选择其他的方法来定义。

3.外部api

开始于一个在.proto文件中的接口定义。gRPC提供了协议编译器插件来生成客户端和服务端API。grpc 用户在客户端调用这些api并且在服务端实现相关的api方法。

4.同步与异步

同步rpc调用将阻塞直到服务器作出响应,同时同步调用也是rpc最渴望实现的方法。然而另一方面,网络内在的事异步的在许多场景下,它也可以有能力开启rpc在没有阻塞当前线程。grpc提供多种语言的同步和异步方法。

5. 流

grpc提供流场景,客户端和服务端都可以发送一个基于流的信息在一个rpc调用中。通用的案例是在客户端和服务端建立一个流,然后彼此发送流信息。流信息按序发送 。

6.协议

grpc协议制定了抽象的需求为客户端和服务端之间的通讯。一个具体的嵌入在http/2来完成每一个需要的操作。

7. 抽象grpc协议

Google RPC是一个基于google protocol buffer的remote process control的框架库,通过google rpc,我们可以根据我们在proto中定义的接口方法,自动生成对应rpc抽象方法。Google RPC为我们提供了客户端和服务端的生成。我们可以直接使用google rpc构造我们的分布式程序和服务。同时,我们必须知道google rpc实现了通过http2上传输的grpc方法。同时google rpc提供同步和异步调用方法调用。同时google rpc还提供了流传输。

8.实现在http/2

以上定义的抽象协议都是基于http/2实现的。grpc双向流被映射到http/2的流中。调用头的内容和初始的元数据被作为一个http/2头发送 并且使用hpack压缩。有效信息被序列化为一个字节流,然后被http/2帧被分块发送,然后服务端重新组合。状态和追踪的元数据被作为http/2追踪的头发送。

9 流控制

grpc继承了http/2的流控制机制,并且使用他们允许对在内部的流内存进行控制。


0 0
原创粉丝点击