了解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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jayLog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值