Grpc常见面试题

2023-05-16

1、grpc四种通信模式?

       答:1)一元 RPC:客户端发起一个请求,服务端给出一个响应,然后请求结束;2)服务端流 RPC:客户端发起一个请求,服务端给一个响应序列,这个响应序列组成一个流; 3)客户端流RPC:客户端流则是客户端发起多个请求,服务端只给出一个响应;  4)双向流RPC:客户端多次发送数据,服务端也多次响应数据;

2、KeepAlived发送的是什么HTTP2帧?

3、KeepAlived是针对Connection还是Stream?

4、HTTP2有那些类型帧,各有什么作用?

       答:主要是分为数据帧和控制帧两种,1)数据帧 DATA:传输HTTP包体;2)数据帧 HEADERS:传输HTTP头部;3)数据帧 PRIORITY:指定Stream流的优先级;4)控制帧 RST_STREAM:终止Stream流;5)控制帧 SETTINGS:修改连接或者Stream流的配置;6)控制帧 PUSH_PROMISE:服务器推送资源时描述请求的帧;7)控制帧 PING:心跳检测,可以用于计算RTT;8)控制帧 GOAWAY:优雅的终止连接或者通知错误;9)控制帧 WINDOW_UPDATE:实现流量控制;10)控制帧 CONTINUATION:传递较大HTTP头部时持续的帧;

5、什么是拦截器,作用是什么?

       答:1)ClientInterceptor(客户端拦截器):a)请求日志记录及监控;b)添加请求头数据、以便代理转发使用;c)请求或者结果重写;2)ServerInterceptor(服务端拦截器):a)访问认证;b)请求日志记录及监控;c)代理转发;

6、什么是Resolver(解析器),常见有那些?

      答:Resolver是用来做地址解析的,内置的 resolver.Resolver 有:a)dns.dnsResolver:通过域名解析服务地址;b)manual.Resolver:手动设置服务地址;c)passthrough.passthroughResolver:将 grpc.Dial 参数中的地址作为服务地址,这也是默认的;

7、什么是Balance(均衡器),常见有那些?

       答:Balancer是从解析好的地址里面选择一个,进行底层的连接,内置的 balancer.Balancer 有:a)grpc.pickfirstBalancer:只使用一个服务地址;b)roundrobin:在多个服务地址中轮转;c)grpclb:使用一个单独的服务提供负载均衡信息(可用的服务地址列表);

9、健康检查状态有那些?

      答:

10、健康检查失败是阻塞还是返回失败?

        

11、什么是链接的fast fail?

         答:

12、失败重试的策略有那些?

        答:1)retry(重试)策略:发送rpc,服务端应用层返回指定的异常码后,客户端的LIB层继续重试,直到到达次数,返回给客户端应用层;2)hedging(对冲)策略:该策略不需要等待前一个请求返回,并发访问服务端,这需要服务端Application保证幂等性,否则多个请求到达服务端执行,将会影响业务逻辑;

13、什么是Pushback?

         答:

14、为什么GRPC支持多路复用?

        答:HTTP/2 将每一个请求变成流,每一个流都有自己的 ID,有自己的优先级,这些流可以由客户端发送到服务端,也可以由服务端发送到客户端,将数据划分为帧,头部信息为 head 帧,实体信息为 data 帧,消息又由一个或多个帧组成,多个帧之间可以乱序发送,根据帧首部的流标识可以将多个帧重新组装成一个流;

15、grpc、http2、Stream之间的关系是什么?

         答:

16、grpc流量控制策略有那些?

         答:BDP(带宽延迟)采样流量控制:针对全局端到端的流量控制;connect level 流量控制:针对的是HTTP/2协议下的TCP连接做流量控制,在服务端限制额度,然后通过客户端限制与交互调整;steam level流量控制:管理的是 connection 中诸多 stream 中的一个;

17、grpc高性能的原因是什么?

         答:gRPC利用了HTTP/2协议中的多路复用、流控、头部压缩等特性,将多个RPC请求打包成一个HTTP/2连接中的多个流,从而减少了网络连接和数据传输的开销。另外,gRPC使用Protocol Buffers协议进行数据序列化和反序列化,可以将数据大小缩小到JSON或XML的数倍,减少了网络带宽和存储空间的使用;

18、grpc监控、调试的方法有那些?

        答:grpcurl 和 grpcui 都是调试grpc的利器,前者用于命令行,类似curl工具;后者是以web的形式进行调试的,类似postman工具;

19、什么是matedata,客户端、服务端能够携带matadata的帧有那些?

        答:服务的端实现要在发送数据前,发送设置携带metadata的HEADERS(调用stream.SendHeader);服务端在远程方法退出前,设置携带metadata的HEADERS TRAILER(调用stream.SetTrailer);客户端在创建stream完成后,调用stream.Header()获取服务端HEADERS的metadata;客户端在接收io.EOF后调用stream.Trailer()获取服务端HEADERS TRAILER的metadata;

20、简述从客户端创建Stream到调用远程服务结束、关闭Stream的流程?

        答:

21、grpc默认是否有压缩算法,系统默认支持那些压缩算法,压缩算法的配置受那些因素影响?

       答:NoCompression: 不进行压缩(默认); Deflate 算法; Gzip 算法;

22、connection有那些状态?

         答:

23、如何能够获取服务端的Servcei List、File Descriptor等?

         

24、健康检查与负载均衡策略的关系?默认的负载均衡策略可否应用健康检查?

25、健康检查服务端是否要重新定义proto文件、定义远程方法?

26、Stream的Send方法是否线程安全,Stream的Send方法和Recv方法是否协程安全?

27、简述Stream流量控制,客户端与服务端完整处理流程,包括配额管理?

28、当connection中断后,如何确定链接已经建立完成,在调用远程服务?

29、什么是HEADERS TRALER帧,什么时候回发送帧?

30、客户端与服务端如何同步压缩算法?

31、客户端与服务端发送http帧之前需要经过那些处理(controlbuf)?

32、如何配置grtpc TLS双向认证?

33、客户端TLS Config中Servcie Name有什么作用?

34、GOAWAY帧由谁发起,什么含义?

35、Backoff是什么,有哪些模块处理使用Backoff?

36、connection创建及失败重连流程?

37、rpc调用失败的三种情况?

38、BinaryLog日志作用?

            答:

39、客户端建立connection全流程?

40、gRPC是否实现连接池,为什么?

41、gRPC服务类型有哪些?

42、gRPC 通信报文格式?

        答:使用二进制传输报文的,

43、gRPC如何为每个Steam进行限流,什么是Flow Control?

44、什么是HPack?

          答:

45、如何实现gRPC全链路追踪?

         答:

46、传输报文中metadata通常存放哪些内容?

          答:metadata是一个字符串与字符串切片的映射结构,可以做一些认证等;

47、 HTTP 2.0 标准设计?

        答:如多路复用、二进制帧、头部压缩、推送机制;这些功能给设备带来重大益处,如节省带宽、降低 TCP 连接次数、节省 CPU 使用等,gRPC 既能够在客户端应用,也能够在服务器端应用,从而以透明的方式实现两端的通信和简化通信系统的构建;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grpc常见面试题 的相关文章

  • 8、解决Linux无法上网的各种问题

    最近发现Linux重新开机后无法上网 xff0c 不仅不能ping通windows主机也不能上外网 ifconfig后eth0也没有分配IP地址 xff0c 总之各种问题都被我碰到了 现在来一一解决 xff01 1 没有分配到IP地址 开机
  • 解决开发板ping不通主机和虚拟机的问题

    使用TFTP和NFS从虚拟机下载文件或者制作根文件系统的前提是开发板能够ping同虚拟机 xff01 相信很多人都像我一样有过ping不通的经历 xff0c 经过2 3天的研究和实验后终于把问题解决了 xff0c 而且屡试不爽 最后得出结论
  • USB摄像头驱动配置及V4L2编程

    1 摄像头驱动开发 1 1 摄像头软件系统架构 摄像头系统架构分为四层 xff1a 摄像头 支持V4L2的摄像头驱动 V4L2核心 应用程序 V4L2核心是Linux系统自带的组件 xff0c 它可以屏蔽摄像头驱动层的差异 xff0c 不管
  • 机器学习中的五种回归模型及其优缺点

    转自https blog csdn net Katherine hsr article details 79942260 好像有部分公式不能显示 xff0c 请查看原博客 本文将会介绍五种常见的回归模型的概念及其优缺点 xff0c 包括线性
  • VGGNet介绍

    VGGNet介绍 1 简要概括 VGGNet由牛津大学计算机视觉组合和Google DeepMind公司研究员一起研发的深度卷积神经网络 它探索了卷积神经网络的深度和其性能之间的关系 xff0c 通过反复的堆叠3 3的小型卷积核和2 2的最
  • PX4编译问题总结

    PX4在变编译的时候总会碰到很多问题 有些问题根据提示就可以解决 xff0c 有些问题却有点麻烦 1 找不到python jinja2模块 CMake Error at usr share cmake 3 2 Modules FindPac
  • 面试专题(十三):Service 与 IntentService

    1 Service 与 IntentService区别 Service不是运行在独立的线程 xff0c 所以不建议在Service中编写耗时的逻辑和操作 xff0c 否则会引起ANR IntentService 1 可用于执行后台耗时的任务
  • ResNet介绍

    ResNet介绍 1 简要概括 ResNet xff08 Residual Neural Network xff09 由微软研究院的Kaiming He等四名华人提出 xff0c 通过使用ResNet Unit成功训练出了152层的神经网络
  • PX4日志生成及查看

    Pixhawk的飞行日志由固件中的sd2log模块记录在SD卡的log文件中 xff0c 目前版本的格式为 px4log xff08 曾经是 bin xff09 xff0c 根据sd2log的设置不同 xff0c 包含飞行日志的文件夹的名字
  • PX4中混控器Mixer的分析

    PX4架构保证了核心控制器中不需要针对机身布局做特别处理 混控指的是把输入指令 xff08 例如 xff1a 遥控器打右转 xff09 分配到电机以及舵机的执行器 xff08 如电调或舵机PWM xff09 指令 对于固定翼的副翼控制而言
  • PX4-固定翼的姿态控制

    下面分析代码的版本是v1 8 2 1 参数介绍 固定翼中有很多参数 xff0c 理解这些参数的含义非常重要 FW AIRSPD TRIM 巡航状态下的空速 15m s FW AIRSPD MIN 最小空速 10m s FW AIRSPD M
  • PX4子模块不一致的问题

    PX4新代码改变了很多东西 xff0c 同时子模块改变也挺大的 将主代码切换到较老版本时会发生子模块版本不符合的情况 xff0c 这时候需要注意 xff0c 切换后需要同步下子模块 make clean git checkout lt wh
  • 【乌拉喵.教程】串口服务器的配置与连接调试

    串口服务器型号 xff1a NSC6008 8 1 使用网线将PC与串口服务器进行连接 2 将PC的IP设为如下 3 使用光盘所带软件update exe找到与PC相连的串口服务器IP 点击图标修改串口服务器IP地址为10 116 2 20
  • 解决Linux-Ubuntu下网速慢的解决方法

    官网上下了一个新版的Ubuntu18 04 xff0c 发现这个版本的网络速度像乌龟一样 xff0c 查阅了很多人的博客都没有用 xff0c 很多都是解决关于浏览器慢的方法 但是 xff0c 这个系统慢的不是浏览器 xff0c 是接上WIF
  • FPGA---7系列之IBERT_GTX内外环测试

    一 概述 IBERT xff08 集成误码率测试仪 xff09 是xilinx为7系列FPGA GTX收发器设计的 xff0c 用于评估和监控GTX收发器 IBERT包括在FPGA逻辑中实现的模式生成器和检查器 xff0c 以及对端口的访问
  • FPGA之JESD204B接口——总体概要 尾片

    在上一篇博客中 JESD204B 1 总体概要 xff0c 我们框架性的介绍了JESD204B xff0c 这篇博客介绍协议所需要关注的一些参数 xff0c 这些参数基本就是决定了连接特性 理解这些参数 xff0c 有助于理解连接中的转换特
  • FPGA之JESD204B接口——总体概要 实例上

    JESD204B IP CORE结构 JESD204B支持速率高达12 5Gbps xff0c IPcore可以配置为发送端 xff08 如用于DAC xff09 或接收端 xff08 如用于ADC xff09 xff0c 每个core支持
  • Android-使用RecyclerView的ItemDecoration 实现炫酷的 吸顶效果

    转载请注明出处 xff1a 李诗雨 http blog csdn net cjm2484836553 article details 53453982 开始逐渐领略到 ItemDecoration的美 源码已上传至github xff0c
  • FPGA之JESD204B接口——总体概要 实例 中

    1 AD9174配置 本设计采用AD9174 xff0c 其是一款高性能 双通道 16位数模转换器 DAC xff0c 支持高达12 6 GSPS的DAC采样速率 该器件具有8通道 15 4 Gbps JESD204B数据输入端口 高性能片
  • FPGA之JESD204B接口——总体概要 实例 下

    1 概述 DAC正常工作的前提是电源以及时钟稳定工作 xff0c 因此需要首先配置锁相环 xff0c 根据ADI评估板EVAL AD9174开发记录 上的时钟需求配置出需要的时钟频率 xff0c 待时钟锁定后配置dac内部锁相环 xff0c

随机推荐

  • STM32与DS1302设计时钟芯片,超详细

    DS1302 是DALLAS 公司推出的涓流充电时钟芯片 xff0c 内含有一个实时时钟 日历和31 字节静态RAM xff0c 通过简单的串行接口与单片机进行通信 实时时钟 日历电路提供秒 分 时 日 周 月 年的信息 xff0c 每月的
  • SX1278与STM8L的精美结合。

    转发请注重原创出处 xff0c 谢谢 一 引言 能耗对于电池供电的产品来说是一个重大的问题 xff0c 一旦电能耗尽设备将 罢工 xff0c 在某些场合电能意味着电子产品的生命 物联网时代将会有越来越多电池供电的设备通过无线通信连接 xff
  • 手把手教你查找stm32 HardFault_Handler调试及问题方法

    版权声明 xff1a 本文为博主原创文章 xff0c 未经博主允许不得转载 https blog csdn net u013184273 article details 84440177 在编写STM32程序代码时由于自己的粗心会发现有时候
  • STM32进阶之串口环形缓冲区实现 FIFO

    队列的概念 在此之前 xff0c 我们来回顾一下队列的基本概念 xff1a 队列 Queue xff1a 是一种先进先出 First In First Out 简称 FIFO 的线性表 xff0c 只允许在一端插入 xff08 入队 xff
  • DLT645-2007电能表通讯协议

    DLT645 2007通讯协议 xff1a 1 发送的帧格式 xff1a 1 1 帧起始符 0x68H 这个不多说 xff0c 记住就好 xff1b 1 2 地址域A0 A5 地址域由 6 个字节构成 xff0c 每字节 2 位 BCD 码
  • nvcc 编译 spdlog出现的问题

    1 链接 libspdlog a 时提示需要加 fpic选项 在编译spdlog库时加上cmake选项 xff1a DCMAKE CXX FLAGS 61 34 fpic 34 参考 2 core h出现error 将core h中的如下代
  • protobuf安装

    clone 代码 git clone https github com protocolbuffers protobuf git安装依赖项 sudo apt get install autoconf sudo apt get install
  • git lfs 的使用

    安装 curl s https packagecloud io install repositories github git lfs script deb sh sudo bashsudo apt get install git lfsg
  • 李诗雨的2016

    不诗意的女程序猿不是好厨师 xff0c 大家好 xff0c 我是李诗雨 xff5e 首先 xff0c 要先向各位道个歉 xff0c 其实我也是在csdn上刚拿到 暂住证 的新人 所以有好多功能还不知道 xff0c 今天在手机app上才看到有
  • 使用barrier共享键鼠

    1 安装flatpak 1 1 ubuntu 18及以后 sudo apt install flatpak 1 2 ubuntu18 以前 sudo add apt repository ppa flatpak stablesudo apt
  • OpenCV中访问图像中像素的三种方法

    1 用指针访问像素元 用指针访问像素的这种方法利用的是C语言中的操作符 xff0c 这种方法最快 如 xff1a cv Mat image span class hljs number 100 span span class hljs nu
  • 目标跟踪方法总结

    1 数据集 1 1 OTB 最经典的benchmark xff0c 有2013的OTB50和2015的OTB100OTB包括25 的灰度序列 xff0c 分辨率相对较低http cvlab hanyang ac kr tracker ben
  • SiamFC:基于全卷积孪生网络的目标跟踪算法

    Abstract 本论文提出一种新的全卷积孪生网络作为基本的跟踪算法 xff0c 这个网络在ILSVRC15的目标跟踪视频数据集上进行端到端的训练 我们的跟踪器在帧率上超过了实时性要求 xff0c 尽管它非常简单 xff0c 但在多个ben
  • fusion的理解

    fusion 有很多种模式 xff0c 开始没明白 现在知道fusion 后然后采样 取平均 xff0c 然后恍然大悟
  • rk3288 buildroot 系统编译移植libcurl

    支持https configure prefix 61 pwd buildout host 61 arm buildroot linux CC 61 home gttest work RKLINUX rk3288 v linux build
  • ROS2中IMU话题的发布及可视化

    环境 xff1a Ubuntu 20 04 xff0c ROS2 Foxy 传感器 xff1a 维特智能BWT901CL 代码是从维特智能的示例代码修改的 xff0c 实现基本的加速度 角速度和角度读取 xff0c 发布IMU消息 这个传感
  • vue-admin/vue-element-admin 自动生成表单,数据提交,组件传值

    父组件 xff08 基于element UI xff09 xff1a 弹出层 lt dialogBar dialogData 61 34 dialogData 34 v if 61 34 showUpdateDiaLog 34 64 han
  • 美团2018春招笔试题

    任意一个正整数可以用字符 0 9 表示出来 但是当这些字符每种字符数量有限时 xff0c 可能有些正整数表示不出来 比如有两个 1 xff0c 一个 2 xff0c 能表示出11 12 112等等 xff0c 但是无法表示出10 122 2
  • 如何使用火狐浏览器的Poster插件进行post请求

    不诗意的女程序猿不是好厨师 转载请注明出处 xff1a From 李诗雨 http blog csdn net cjm2484836553 article details 72453907 善假于物者 xff0c 正途也 学会利用身边的工具
  • Grpc常见面试题

    1 grpc四种通信模式 xff1f 答 xff1a 1 xff09 一元 RPC xff1a 客户端发起一个请求 xff0c 服务端给出一个响应 xff0c 然后请求结束 xff1b 2 xff09 服务端流 RPC xff1a 客户端发