03俯瞰全局:gRPC是如何进行通信的

article/2023/6/3 15:43:09

gRPC作为Web网站和APP后端的最常用服务提供方式之一和分布式微服务架构不同节点间的最常见通信方式之一,它自身是如何进行通信的呢,这个问题就是我们本篇文章将要研究的重点,先从全局的角度分析gRPC服务端和客户端进行通信的主要流程,再从细节剖析gRPC是如何进行高效的远程过程调用的,在RPC的思想上又做了哪些优化。

gRPC服务端与客户端通信模式

在上一篇文章中我们可以大概的知道RPC的主要概念和一个RPC系统中的不同角色和各自的职责,gRPC作为RPC概念的框架实现,当然也会严格的按照论文中所讲述的模式进行不同角色和概念的组合,但与之不同的时,RPC框架可以相对灵活的定义服务端与客户端的存根和服务间调用的通信方式,比如我们当前正在学习的gRPC框架,服务端和客户端由用户进行实现,服务端和客户端存根则由另一种插件Protobuf进行定义与编码实现,传输方式则使用的是HTTP/2协议进行通信,下面是它的概念图:
在这里插入图片描述
我们开始逐个分析下:

  • gRPC Server:gRPC服务的提供方。
  • gRPC Client:gRPC服务的消费方。
  • gRPC Server Stub、gRPC Client Stub:Protobuf编译后生成的存根(Stub),相同语言间可共用,不同语言间需要多次生成。
  • 数据传输方式:gRPC采用HTTP/2协议作为数据传输方式。

gRPC服务总体使用流程

我们在具体的项目中使

http://www.ngui.cc/article/show-861321.html

相关文章

Kafka入门(一)

1、Kafka简介 Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域(hadoop集群)、物联网领域。其主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能…

【实际开发12】- 经验 experience

目录 1. 经验 experience 1. 无多大价值 , 停留数据展示层面 2. 保证数据一致性问题 3. 新增时 , 可先关注核心基础数据 ( 复杂数据以修改形式完善 ) 4. 新增 / 修改 ( 幂等性处理 ) 5. 增 / 删 / 改 添加日志 , 查询无需日志 6. 需要对接多模块的通用字段设计 : String…

值得拥有并收藏的 3个安卓/鸿蒙手机解锁软件

手机无论支持哪种操作系统,都占据了每个人口袋里的空间。随着大量移动设备的使用,搜索引擎上也出现了同样数量的查询,其中最常见的是提供安卓/鸿蒙屏幕锁定删除工具。由于安卓是当今最畅销的设备,我们的首要任务是为您提供最好的安…

并发编程学习案例-ReentrantReadWriteLock非公平的情况下读锁插队和写锁插队场景复现

文章目录一、前言二、源码三、 代码案例(一)复现写的时候插队场景参考执行结果(二)复现读的时候插队参考执行结果参考资料一、前言 Java ReentrantReadWriteLock 是 ReadWriteLock 的实现类,可以分出2把锁,…

2023年深圳CPDA数据分析师认证将于2/25正式开班,快来报名

CPDA数据分析师认证是中国大数据领域有一定权威度的中高端人才认证,它不仅是中国较早大数据专业技术人才认证、更是中国大数据时代先行者,具有广泛的社会认知度和权威性。 无论是地方政府引进人才、公务员报考、各大企业选聘人才,还是招投标加…

2023年关于redis,常常靠常常忘的知识点

一.使用过 Redis 分布式锁么,它是怎么实现的?先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了释放。如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了,那会怎么样&#x…

RDC 2022纪念版开发板-D1S在RT-Smart运行

开发环境 软件 ubuntu20.04VMware Workstation 硬件 RDC2022纪念版开发板全志D1s芯片 材料下载 首先打开虚拟机,创建一个目录存放本次测试的代码,然后克隆RT-Smart用户态代码。 git clone https://github.com/RT-Thread/userapps.git在userapps目…

Navicat Monitor 3.0 现已上市 | 欢迎下载试用

Navicat Monitor 3.0 现已上市Navicat Montior 3.0 现已发布!一经发布,受到广大专业运维人员的关注与选择! 五大新亮点带给运维团队最为实用且有效地提升监控能力。其具备 PostgreSQL 服务器监控能力、支持优化慢查询、构建自定义指标、性能分析工具优化…

计算机视觉和图像处理简介:PIL (Python Image Library) 的基本使用

文章大纲 Image Files and PathsLoad Images in PythonPlotting an ImageGrayscale Images, Quantization and Color ChannelsGrayscale ImagesQuantizationColor ChannelsPIL Images into NumPy ArraysIndexingQuestion 1:ReferencesPillow Library (PIL) Estimated time need…

第5章 Linux平台安装MongoDB教程

Linux平台install MongoDB MongoDB 提供了 linux 各个发行版本 64 位的install 包,帅哥可以在官网download install 包。 install 前咱们需要install 各个 Linux 平台依赖包。 Red Hat/CentOS: sudo yum install libcurl opensslUbuntu 18.04 LTS (“…