吃透GRPC协议

这篇具有很好参考价值的文章主要介绍了吃透GRPC协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是GRPC协议?

首先,GRPC协议是一种通信协议;其次,本质上gRPC是一个高性能的、开源的、普遍通用的RPC框架。业界有很多开源的优秀 RPC 框架,例如 Dubbo、Thrift、gRPC、Hprose 等。

RPC(Remote Procedure Call,远程程序调用)是指本地服务调用远程服务器上的程序或服务,是一种客户端服务器(C/S)通信模式。GRPC是由Google开发并且将其开源。 通过它,一个客户端消费者服务可以像调用本地方法一样,调用另一台主机上面的服务端方法。

GRPC相比于RPC协议,在实现上使用了HTTP2.0、协议缓冲区(protobuf)等更现代化的技术方案,从而最大程度上确保服务端和客户端的互操作性及性能上的提升。

2、为什么会出现GRPC协议

1)在微服务的设计中,我们通常采用HTTP REST传输数据,并在两个服务之间进行序列化和反序列化操作;另外传统的RESTful接口使用JSON、XML或者其他的一些格式作为数据载体,使得服务运行缓慢,内存占用较高、并且传输过程没有压缩;

2)由于HTTP在应用层中完成,整个通信的代价较高,远程过程调用中直接基于TCP进行远程调用,数据传输在传输层TCP层完成,更适合对效率要求比较高的场景,RPC主要依赖于客户端和服务端之间建立Socket链接进行,底层实现比REST更复杂;

3)相比常规的RPC,GRPC拥有更好性能;

3、GRPC实现原理

HTTP2.0的好处在于二进制分帧、多路复用、头部压缩、服务端push【HTTP2.0具体的原理我们后续通过其他博客再进行讲解】。同时GRPC序列化方式采用protobuf格式,protobuf比json和xml要好很多,缺点就是没有json便于阅读。 在相同的有效带宽中,同样的数据包,protobuf可以传输更多次。同时protobuf数据越小,序列化越快,以及protobuf是跨平台的,和语言无关。可以用proto工具生成各个语言的代码,非常方便。

  • json是文本文件,文本文件是基于字符的。
  • protobuf是二进制编码,基于值的。

4、GRPC协议应用场景

从开发的角度,在服务端和客户端使用GRPC最大的好处在于:你的服务端的代码和客户端的代码不需要担心它会影响你解析JSON或者其他类似的文本格式消息。GRPC虽然接收到的是二进制格式,但会并将其反序列化为对象。

一个标准的RPC过程图如下:

吃透GRPC协议

 主要有三块,客户端+服务端+注册中心。三者关系的标准时序图如下:

吃透GRPC协议文章来源地址https://www.toymoban.com/news/detail-425319.html

到了这里,关于吃透GRPC协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NestJS使用gRPC实现微服务通信

    代码仓库地址:https://github.com/zeng-jc/rpc-grpc-practice 1.1 基本概念 gRPC 基于 Protocol Buffers(protobuf)作为接口定义语言(IDL),意味着你可以使用 protobuf 来定义你的服务接口,gRPC生成的代码可以用于多种语言(C++, Java, Python, Go, C#, Ruby, Node.js),所以使用gRPC就能实现跨语言之间进

    2024年02月04日
    浏览(45)
  • gRpc的四种通信方式详细介绍

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月11日
    浏览(41)
  • SpringBoot + Kotlin 中使用 GRPC 进行服务通信

    示例项目见:kotlin-grpc 一、导入依赖: 二、设置Proto 将 proto 文件放在 src/mian/proto 目录下 执行 ./gradlew clean build build成功则会在 build/generated/source/proto/main 下生成对应的 grpc 、 grpckt 、 java 文件 在程序中可以直接导包引入 三、Server端 写一个 service 在 main 入口引入启动 四、Cl

    2024年02月16日
    浏览(47)
  • SpringBoot集成Dubbo启用gRPC协议

    本文记录下SpringBoot集成Dubbo启用gRPC协议,以及与原生 gRPC 在代码编写过程中的区别。 下面还有投票,帮忙投个票👍 2023.6.30 补充:Dubbo 官方文档开放,为开发者使用提供友好的支持。 Dubbo 在 2.7.5 版本开始支持原生 gRPC 协议,对于计划使用 HTTP/2 通信或者期望 gRPC 协议支持服

    2023年04月12日
    浏览(49)
  • 为什么说 QUIC 协议是现代化网络通信的未来之路及如何实现QUIC服务器

    😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想当开发的测试,不是一个好测试✌️。 如果感觉博主的文章还不错的话,还请点赞、收藏哦

    2024年04月23日
    浏览(49)
  • aspnetcore微服务之间grpc通信,无proto文件

    aspnetcore微服务之间通信grpc,一般服务对外接口用restful架构,HTTP请求,服务之间的通信grpc多走内网。 以前写过一篇grpc和web前端之间的通讯,代码如下: exercisebook/grpc/grpc-web at main · liuzhixin405/exercisebook (github.com)   本次是微服务之间的通信使用了开源软件MagicOnion, 该软件定义

    2024年02月08日
    浏览(47)
  • libtorch+GPU部署wenet语音识别(gRPC通信)

    业务App中部分功能需要通过ASR识别5-7秒的语音命令,App本身不支持流式协议,需录音完成后传输至服务端进行识别及后续的NLP。 根据实际情况仅对语音模型进行增强,使用libtorch+GPU方式部署,gRPC方式调用,由于并发不大,使用flask+gunicorn部署API。 拉取 nvidia官方的cuda11.3 run

    2024年02月10日
    浏览(35)
  • 一文吃透什么是低代码开发?

    低代码是一种 可视化软件开发方法,通过最少的编码更快地交付应用程序 。 图形用户界面和拖放功能 使开发过程的各个方面自动化,消除了对传统计算机编程方法的依赖。 低代码平台使应用程序开发 更加自主化 ,特别是对于 没有编码经验的业务用户 ,如业务分析师或项

    2023年04月08日
    浏览(53)
  • rpc、gRPC快速入门,python调用,protobuf协议

    远程过程调用协议RPC (Remote Procedure Call Protocol) RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 举例:在 a服务内

    2024年02月13日
    浏览(56)
  • .NetCore gRpc 客户端与服务端的单工通信Demo

    方式一 使用vs 2022(也可以是其他版本)创建一个grpc的服务,如下这样 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uipEG9Xu-1687172462785)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20230619183828284.png)] 简单方便,创建项目后的目录结构如下图

    2024年02月09日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包