![3b69dff7b925ca1a0dff12f618e96c89.png](https://i-blog.csdnimg.cn/blog_migrate/f26fa245e5a6dcdecd0d9b61aeb5bec6.jpeg)
我们一直被问到这个问题。 通常,gRPC和RSocket尝试解决不同的问题。 gRPC是使用HTTP / 2的RPC框架。 RSocket是较低级别的消息传递网络层。 因此,开发人员将直接使用RSocket进行低级交互,并可以选择使用RSocket-RPC作为位于RSocket之上的易于使用的RPC层。
现在,让我们更具体地看一下gRPC和RSocket之间的区别。
OSI层
gRPC和RSocket位于堆栈的不同层。 gRPC位于OSI层7上-在HTTP / 2之上构建的RPC层。 RSocket是OSI 5/6层,可通过网络对响应流语义进行建模。 反应性流提供了一种使用反压对异步流进行建模的方法。 在10,000英尺的视野中,您将使用RSocket来构建gRPC之类的东西(例如RSocket-RPC),该东西将位于OSI(应用程序)层7。
协议
gRPC不是传统意义上的协议。 它由HTTP / 2标头,生成的代码和protobuf中的约定组成。 跨网络传输的内容中没有足够的信息来确定正在发生的事情。 例如,如果protobuf中存在不匹配项,则gRPC可以通过一元调用来调用流。 gRPC设计类似于Web服务。
RSocket是具有正式定义的5/6层二进制协议。 您无需生成代码来确定RSocket发生了什么—您只需了解协议即可。