Grpc简介

news2024/11/24 7:59:07

博主在5月份已经从上一家公司辞职了,七月份已经到现在的公司了,能在整个互联网大环境都不好的前提下,还能找到工作,待遇还不错,已经很知足了。grpc是进到公司的第一个项目用到的技术,已经用了很久也总结了,只是一直没有时间放到这边来。(ps:如果有空的话,会写一下找工作期间的一些建议和准备)

Grpc概述

在 gRPC 中,客户端应用程序可以直接调用不同机器上的服务器应用程序上的方法,就像它是本地对象一样,使我们更容易创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以远程调用的方法及其参数和返回类型。在服务端,服务端实现这个接口并运行一个 gRPC 服务器来处理客户端调用。在客户端,客户端有一个存根(在某些语言中仅称为客户端),它提供与服务器gRPC 客户端和服务器可以在各种环境中运行和相互通信——从 Google 内部的服务器到您自己的桌面——并且可以用任何 gRPC 支持的语言编写相同的方法。

Grpc特性

  • grpc可以跨语言使用。支持多种语言 支持C++、Java、Go、Python、Ruby、C#、Node.js、Android Java、Objective-C、PHP等编程语言。
  • 基于 IDL ( 接口定义语言)文件定义服务,通过 proto3 工具生成指定语言的数据结构、服务端接口以及客户端 Stub。
  • 通信协议基于标准的 HTTP/2 设计,支持双向流、消息头压缩、单 TCP 的多路复用、服务端推送等特性,这些特性使得 gRPC 在移动端设备上更加省电和节省网络流量。
  • 序列化支持 PB(Protocol Buffer)和 JSON,PB 是一种语言无关的高性能序列化框架,基于 HTTP/2 + PB, 保障了 RPC 调用的高性能。
  • 安装简单,扩展方便(用该框架每秒可达到百万个RPC)。

Grpc的使用场景

  • 微服务gRPC设计为低延迟和高吞吐量通信,gRPC非常适用于效率至关重要的轻型微服务。
  • 网络受限环境使用Protobuf(一种轻量级消息格式)序列化gRPC消息,使得gRPC消息始终小于等效的JSON消息。
  • 点对点实时通信gRPC对双向流媒体提供出色的支持,gRPC服务可以实时推送消息而无需轮询。
  • 多语言混合开发环境 gRPC工具支持所有流行的开发语言,使gRPC成为多语言开发环境的理想选择。

Grpc大致请求流程


grpc请求流程图

 1、客户端(gRPC Stub)调用 A 方法,发起RPC 调用。
 2、对请求信息使用 Protobuf 进行对象序列化压缩。 
 3、服务端(gRPC Server)接收到请求后,解码请求体,进行业务逻辑处理并返回。
 4、对响应结果使用 Protobuf 进行对象序列化压缩。
 5、客户端接受到服务端响应,解码请求体。回调被调用的 A 方法,唤醒正在等待响应(阻塞 )的客户端调用并返回响应结果。 

Grpc的使用流程

grpc的使用/生成流程

1、定义标准的proto文件
2、生成标准代码
3、服务端使用生成的代码提供服务
     (参考各个 语言的使用)
4、客户端使用生成的代码调用服务
     (参考各个语言的使用) 

Grpc四种服务方法

  • 一元RPC
    在这里插入图片描述

  • 客户端流式RPC
    在这里插入图片描述

  • 服务端流式RPC
    在这里插入图片描述

  • 双向流式RPC
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三菱FX5U系列PLC内置高速计数器的使用方法示例

三菱FX5U系列PLC内置高速计数器的使用方法示例 三菱FX5U系列PLC内置高速计数器如何使用? 具体的使用方法可参考如下: 如下图所示,打开GX-WORKS3编程软件,在左侧的项目树中找到参数—FX5U—模块参数—高速I/O, 如下图所示,在弹出的右侧窗口中双击高速计数器—详细设置,…

没有十几年的积累,你还真写不出什么好的代码

如标题所说,我不知道大家怎么看待这句话? 拿一个正常的程序员举个例子,18开始上大学学习写代码,22岁大学毕业,一直干到30岁就需要考虑程序员的中年危机。 小编身边很多程序员都不喜欢写代码,感觉写代码没有…

C · 进阶 | 指针的进阶

啊我摔倒了..有没有人扶我起来学习.... 👱个人主页:《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ 💒个人社区:《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

数电学习(六、时序逻辑电路)(一)

文章目录引言概述特点时序电路的一般结构形式与功能描述方法时序电路分类时序电路的分析方法同步时序电路的分析方法状态转换表状态转换图(回顾)在现在的场景下看触发器的动态特性(四个时间)(举例)分析下面…

计算机毕设(附源码)JAVA-SSM佳音大学志愿填报系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

python有哪些编译器

python有哪些编译器 1、Brython把Python转换成Javascript代码。 是一个流行的Python编译器,它可以把Python转换成Javascript代码。该软件支持所有网络浏览器(包括手机网络浏览器)。 它还支持最新的Html5/CSS3标准,可以使用流行的CSS框架,如…

200、无线网桥与无线AP的带机量是多少?一篇文章搞明白

正文: 一个无线ap的带机量是多少?也有朋友提到无线网桥的带机量?这个我们之前有提到过,在了解他们的带机量的话,我们就不得不了解ap的性能指标了,那么本期我们来总结下带机量的问题。 一、选择AP前需要考虑…

用通俗易懂的大白话彻底搞明白mysql的数据类型以及mysql中的int(11),这个11到底是啥?

今天抽时间来讲一下mysql里的知识点,之前有不少人问过我,mysql中的int(11),这个11到底是啥意思?是11位的意思吗?你是否也想过这个问题,是否也有这个疑问? ok,今天就展开来讲一下&am…

深度分析React源码中的合成事件

热身准备 明确几个概念 在React17.0.3版本中: 所有事件都是委托在id root的DOM元素中(网上很多说是在document中,17版本不是了);在应用中所有节点的事件监听其实都是在id root的DOM元素中触发;React自…

【MySQL 第十一天 创建和存储|复合结构的存储|存储过程和函数的区别】

【MySQL 第十一天 创建和存储|复合结构的存储|存储过程和函数的区别】【1】mysql储存过程及语法结构【1.1】mysql过程体【2】mysql创建和使用存储过程【2.1】mysql创建无参的存储过程【2.2】mysql创建有参的输入输出存储过程【3】mysql删除存储过程【4】mysql创建复合结构的存储…

专精特新小巨人的认定条件

奖励:对新认定的专精特新“小巨人”企业,聊城市财政最高一次性奖励50万元。其他地区各有不同。 认定条件 专精特新“小巨人”企业认定需同时满足专、精、特、新、链、品六个方面指标。 (一)专业化指标:坚持专业化发展道路,长期…

大学生体育运动网页设计模板代码 DIV布局校园运动网页作业成品 HTML学校网页制作模板 学生简单体育运动网站设计成品

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

C++知识精讲14 | 算法篇之二分查找算法

博主主页:Cool Kid~Yu仙笙_C领域博主🦄 目录 二分查找定义 二分查找效率 二分查找与遍历的对比 二分查找的限制性 二分查找的限制性(总结) 二分查找搭建 循环实现二分查找 循环二分查找基本框架: 循环二分查找源码&am…

【苹果家庭iMessage推送】Aupperpushslcertificate或ProductPushsCertificate证书不可以过期

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

前端实现给文字添加动态背景

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

【JAVA开发】提高开发效率的工具分享

代码管理工具 仓库: GitHub or GitLab or 本地仓库 版本控制: git or svn 推荐gitLabgit 多分支敏捷开发 开发工具 IDEA 最方便开发工具了 当然如何你是全栈也可以考虑使用VS(visual studio)、HBuider、AS(android studio) 文本工具 Sublime text …

Redis数据结构之整数集合

目录 基本数据结构 例子 升级 升级之后新元素的摆放位置 好处 降级 整数集合可以理解为一个有序(升序)的不允许元素重复的数组。 基本数据结构 intset会根据 编码格式分配空间。 例子 升级 当新添加的元素超过了当前编码格式所能 表示的范围&…

Linux常用命令工具

1、查找特定文本中的特定字符 cat filename | grep myStr eg: cat .config | grep KCOV 2、查找特定文本中的特定字符并打印具体行数 cat filename | grep -n myStr eg:: cat .config | grep -n KCOV 3、查找一个文件夹中的特定字符 grep -r myStr filedir eg: grep -r __NR_…

Mysql注入

💪💪mysql注入前言1.mysql之union注入1.1.判断是否有注入:1.2.信息收集1.3.进行注入1.4.完整注入实列2. mysql 跨库注入:2.1第一步就是找到数据库2.2第二步就是注入3.自己写union注入4.其他注入操作前言 💎&#x1f48…

JVM笔记:垃圾回收及垃圾回收算法

垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢…