IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 了解rpc与protobuf -> 正文阅读

[网络协议]了解rpc与protobuf

前言

(remote Procedure call)远程程序调用。rpc能让你像调用本地方法一样去调用远程的方法,通过网络从远程计算机程序上请求服务。

rpc可以是跨语言的,rpc服务端一门语言,rpc客户端可以是另外一门语言。比如服务端用golang,客户端用php。

grpc(google remote produre calls)是谷歌的rpc服务项目。protole buffer(简称protobuf)是一种结构化数据,同时也有对应的语法,protoc是对protobuf文件的编译器,protobuf文件编写完成后通过protoc生成一些给各语言使用rpc服务的文件。

kafuka与rpc的区别

共同点:服务的两端可以是不同的编程语言

不同点:kafuka是异步的,rpc是同步的

kafuka的生产者消费者模型:在队列满之前,消费者可以随时投递任务,投递之后即可去执行其他任务了。消费者会将队列列中任务逐个处理。kafuka适合处理耗时长但是不紧急的任务,比如注册成功的短信通知或者发送邮件。

rpc的调用:客户端发送rpc请求后需要等待rpc返回的处理结果。适合传输数据量大,网络环境不稳定的数据存储、RPC数据交换场景

grpc

grpc(google remote produre calls)是谷歌的rpc服务项目。grpc的特点在于:基于http2协议和protobuf。

http2与http1协议。

http1:文本。

http2:二进制流。

数据传输上不同在于protobuf传输过程中对数据的压缩,http1以文本的形式,而http2是使用了二进制流的形式。例如传输128和“128”

协议数据大小
http1127(传输过程以文本类型,utf-8)3字节
http2127(二进制)1字节

长连接的不同,http1.1开始支持长连接,通过三次握手之后打开一个长连接,然后发送多个http请求,请求之间是同步阻塞的。第一个请求返回后才能处理第二个请求,http2则可以同时接受多个请求,任意顺序处理请求返回,也可以多个请求一个返回。

http2的 protobuff

客户端与服务端同时协议一组参数和接受顺序。客户端指定方法后,通过参数顺序对参数进行赋值,这样的话再传输过程中就只需要传送字段值而不需要传字段名。同样的的数据在传输过程中需要携带数据量更少了。

请添加图片描述

grpc的四种模式

unary api 一元模式

客户端发送一个请求,服务端一个响应

client stream api 客户端流模式

客户端发送多个请求,服务端一个响应

servier stream api 服务端流模式

客户端发送一个请求,服务端多个响应

bidirectional stream api 双端流模式

客户端发送多个请求,服务端响应多个请求

请添加图片描述

protoc

protoc是编译protobuf文件的编码器,可以生成多种编程语言的客户端或服务端代码。

总结

rpc是一种远程程序调用,可以像在本地一样去调用远程的方法。

grpc是谷歌的一套rpc框架。grpc的rpc服务是基于http2协议的。

protobuf 以一种结构化数据,编写protobuf文件,然后通过protoc编译器编译成多种语言的rpc服务文件。

grpc有四种传输模式
注:如果想知道如何通过protoc生成文件或者是protobuf的语法,应该搜索protobuf而不是rpc\grpc

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:47:24  更:2022-04-04 12:47:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:35:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码