前述
本篇先讲解RPC的基本概念和简单原理,然后对比常见的RPC框架。本篇知识点都是简单罗列,有些直接摘抄至官网,后期会针对比如HTTP2,gRPC等知识点深入写相应的章节。
什么是RPC
RPC,即远程过程调用。它的目的是让调用远程服务向调用本地服务一样,屏蔽传输方式,序列化方式和通信细节。
一个典型的RPC框架,需要解决如下通电。
1)call id映射。调用方如何把需要调用的方法名告诉远程服务。
2)序列号和反序列化。调用的方法参数,如何传输到远程服务。
3)如何传输。如何将call id和序列化的参数传送到远程服务。
不同的RPC框架对上面三点的解决方法不同,不过对于第一点,无外乎都是维护一个方法名的映射,因此区别主要第二点和第三点。下面讲常用RPC框架会具体谈到。
常见RPC框架
常见的RPC框架包括bRPC,Dubbo,Thrift,gRPC,JSON-RPC,下面主要介绍Thrift、gRPC、Dubbo。
Thirft
Thirft传输层支持多种协议,支持文本和二进制传输。服务端支持多种模型(单线程,多线程,阻塞和非阻塞)。
gRPC
对于gRPC,它使用的传输协议是HTTP2,序列化和反序列化协议是protobuf。gRPC有一下特点。
-
支持流式链接(不是TCP流,指数据流,比如一次请求发送多个包)。服务端端和客户端都支持面向流的数据。这是HTTP2特性决定的。
-
支持同步和异步。
-
支持截止时间超时机制。
-
支持流控。
-
支持AUTH2和SSL等多种安全认证机制。
这里简单列举gRPC知识,后期单独写相应的章节。
参考深入了解gRPC
Dubbo
Dubbo是阿里开源的RPC框架。
HTTP2
HTTP2是二进制协议,支持流控,支持数据流等特性。
gRPC VS Thirft
后述
本篇简单罗列了RPC概念和常见的RPC框架,后期会针对某些知识点深入写相应文章。