gRPC

gRPC简介 gRPC 是由google开源的一个高性能的RPC框架。Stubby Google内部的RPC,演化而来的,2015正式开源。云原生时代是一个RPC标准。 gRPC 核心的设计思路 网络通信 —> gRPC自己封装网络通信的部分 提供多种语言的 网络通信的封装 (C Java[Netty] GO) 协议 —> HTTP2 传输数据的时候 二进制数据内容。 支持双向流(双工)连接的多路复用。 序列化 —> 基本文本 JSON 基于二进制 Java原生序列化方式 Thrift二进制的序列化 压缩二级制序列化。 protobuf (Protocol Buffers) google开源一种序列化方式 时间效率和空间效率是JSON的3—5倍。 IDL语言 代理的创建 —>让调用者像调用本地方法那样 去调用远端的服务方法。 stub gRPC的好处 高效的进行进程间通信。 支持多种语言 原生支持 C Go Java实现。C语言版本上扩展 C++ C# NodeJS Python Ruby PHP.. 支持多平台运行 Linux Android IOS MacOS Windows。 gPRC序列化方式采用protobuf,效率高。 使用Http2协议 大厂的背书 Http2.0协议 回顾 Http1.x协议 Http1.0协议 请求响应的模式 短连接协议(无状态协议) 传输数据文本结构 单工 无法实现服务端推送 变相实现推动(客户端轮训的方式) Http1.1协议 请求响应的模式 有限的长连接 升级的方式WebSocket 双工 实现服务器向客户端推送。 总结Http1.x协议 共性 传输数据文本格式 可读性好的但是效率差。 本质上Http1.x协议无法实现双工通信。 资源的请求。需要发送多次请求,建立多个连接才可以完成。 HTTP2.0协议 Http2.0协议是一个二进制协议,效率高于Http1.x协议,可读性差。 可以实现双工通信。 一个请求 一个连接 可以请求多个数据。【多路复用】 Http2.0协议的三个概念 数据流 stream 消息 message 帧 frame 其他的相关概念 数据流的优先级,可以通过为不同的stream设置权重,来限制不同流的传输顺序。 流控 client发送的数据太快了,server处理不过来,通知client暂停数据的发送。 Protocol Buffers protobuf 是一种与编程语言无关【IDL】,与具体的平台无关【OS】。他定义的中间语言,可以方便的在client 于 server中进行RPC的数据传输。 protobuf 两种版本 proto2 proto3,但是目前主流应用的都是proto3。 protobuf主要安装protobuf的编译器,编译器目的,可以把protobuf的IDL语言,转换成具体某一种开发语言。 protobuf编译器的安装 https://github.com/protocolbuffers/protobuf/releases ...

2024-08-09 · 9 分钟 · Nebula