一、简介
我们在前面学习了thrift rpc的知识,我们从其中接触到了IDL,编解码协议,服务的远程调用(调用远程服务就像在在本地调用一样)等各种概念。
其实我个人对thrift的使用并不多,我更多的是使用今天我们要提到的一个RPC框架称之为gRPC,其实作为一个rpc框架,grpc和之前提到的thrift是有很多相似之处的,包括他也有IDL这个概念。只是语法不一样而已。
但是作为一个非常流行的rpc框架,grpc是有自己的独到设计的,下面我们来看看他的一些特点和概念。
1. gRPC 是由google开源的一个高性能的RPC框架。是由Google内部的Stubby RPC,演化而来的,2015正式开源。在如今大行其道的云原生时代,实际上它已经是一个事实上的RPC标准。
2. gRPC 核心的设计思路
1. 网络通信: gRPC自己封装网络通信的部分 提供多种语言的 网络通信的封装 (C Java[Netty] GO),所以他也是有多语言异构的能力的。他也是通过IDL来实现语言无关的翻译能力。
2. 协议:使用HTTP2作为网络传输协议,传输数据的时候数据体使用二进制数据内容。 支持双向流(双工)连接的多路复用。
3. 序列化:较之于传统的http1的基本文本JSON格式,http2是基于二进制内容序列化的。具体的话,他是使用了一种叫做protobuf (Protocol Buffers) 的序列化方式,这是google开源一种序列化方式,时间效率和空间效率是JSON的3---5倍。IDL语言
4. 代理的创建 :让调用者像调用本地方法那样 去调用远端的服务方法。
我们可以看到,上面四点,其实只需要我们处理3,使用protobuf来定义IDL,实现序列化,数据消息翻译成目标语言。其余的grpc都封装好了给我们。
3. gRPC 与 ThriftRPC 区别
共性:支持异构语言的RPC。
区别:
1. 网络通信 Thrift 的第五层是自己定义的专属协议,而GRPC则是选择了HTTP2
2. 性能角度 ThriftRPC 性能 高于 gRPC,毕竟他是自己实现的协议,更加精准。
3. gRPC 大厂背书(Google),云原生时代 与其他组件合作的顺利。所以gRPC应用更广泛,nacos中就有使用。
4. gRPC的好处
1. 高效的进行进程间通信。
2. 支持多种语言 原生支持 C Go Java实现。C语言版本上扩展 C++ C# NodeJS Python Ruby PHP..
3. 支持多平台运行 Linux Android IOS MacOS Windows。
4. gPRC序列化方式采用protobuf,效率高。
5. 使用Http2协议
6. 大厂的背书(谷歌)
二、关于http2
实际上网上关于http2的内容已经很多了。我这里就不做太多的赘述了,我来简单描述一下,如果有什么不足之处,大家多多指教。

最低0.47元/天 解锁文章
857

被折叠的 条评论
为什么被折叠?



