Grpc常见面试题

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 既能够在客户端应用,也能够在服务器端应用,从而以透明的方式实现两端的通信和简化通信系统的构建;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Cloud Nacos 是一个开源的服务发现和配置管理平台,它提供了服务注册、配置管理、DNS 服务等功能,可以帮助开发者快速构建微服务应用。以下是一些 Spring Cloud Nacos 面试题: 1. 什么是 Spring Cloud Nacos? Spring Cloud Nacos 是一个基于 Nacos 的服务发现和配置管理平台,它提供了服务注册、配置管理、DNS 服务等功能,可以帮助开发者快速构建微服务应用。 2. Nacos 和 Eureka 有什么区别? Nacos 和 Eureka 都是服务发现和注册中心,但是 Nacos 提供了更多的功能,比如配置管理、DNS 服务等。此外,Nacos 还支持多种协议,比如 Dubbo、gRPC 等。 3. Nacos 的配置管理功能有哪些特点? Nacos 的配置管理功能具有以下特点: - 支持多种数据格式,比如 properties、yaml、json 等。 - 支持动态配置,可以实时更新配置。 - 支持配置版本管理,可以回滚到历史版本。 - 支持配置监听,可以实时感知配置变化。 4. Nacos 的服务注册和发现功能是如何实现的? Nacos 的服务注册和发现功能是通过客户端 SDK 实现的。当服务启动时,客户端会向 Nacos 注册中心注册自己的服务信息,包括服务名、IP 地址、端口号等。当其他服务需要调用该服务时,客户端会向 Nacos 注册中心查询该服务的信息,并通过负载均衡算法选择一个可用的服务实例进行调用。 5. Nacos 的 DNS 服务是如何实现的? Nacos 的 DNS 服务是通过将服务名解析为 IP 地址实现的。当服务启动时,客户端会向 Nacos 注册中心注册自己的服务信息,并将服务名和 IP 地址关联起来。当其他服务需要调用该服务时,客户端会将服务名解析为 IP 地址,并通过负载均衡算法选择一个可用的服务实例进行调用。 以上是一些 Spring Cloud Nacos 面试题,希望能对您有所帮助。 ### 回答2: SpringCloud是一个基于Spring Boot的微服务框架,它提供了一系列微服务开发的核心组件和工具,使得微服务的开发、部署和管理变得更加简单、高效和可靠。而Nacos则是一个基于云原生技术构建的动态服务发现、配置管理和服务管理平台,它提供了一整套分布式服务的核心功能,能够实现高效、弹性和可靠的服务治理。 在面试中,面试官可能会问到一些跟SpringCloud和Nacos相关的问题,下面我们就来看一些可能会被问到的问题和它们的答案: 1. 什么是服务注册与发现? 服务注册与发现是微服务架构中的一项核心功能。它可以让服务提供者将自己提供的服务注册到服务注册中心,并且在需要调用这些服务的时候,可以通过服务发现机制来找到并调用它们。服务注册与发现可以有效地降低服务之间的耦合度,提高服务的灵活性和可维护性。 2. 什么是Nacos? Nacos是一个开源的动态服务发现、配置管理和服务管理平台。它提供了一整套分布式服务的核心功能,包括服务注册与发现、分布式配置管理、服务路由和负载均衡、服务熔断和降级、限流和安全控制等功能,能够实现高效、弹性和可靠的微服务治理。 3. Nacos与Eureka有什么区别? Nacos和Eureka都是微服务架构中的服务注册中心。但是,相对于Eureka而言,Nacos在服务注册与发现、配置管理和服务管理方面具有更多的优势和特点,具体包括: - 更加强大的服务注册与发现能力:Nacos支持多种服务注册和发现方式,包括基于DNS的服务发现、基于RPC的服务注册和发现等,而Eureka则只支持基于HTTP的服务注册和发现。 - 更加丰富的配置管理能力:Nacos支持动态配置、分布式配置和灰度配置等多种配置模式,而Eureka则只能支持静态配置。 - 更加高效和可靠的服务治理能力:Nacos具有更高效和可靠的服务治理能力,能够支持分布式事务管理、服务降级和熔断、限流和安全控制等多种功能。 4. SpringCloud中使用Nacos的好处是什么? 在SpringCloud中使用Nacos作为服务注册中心和配置中心有以下几个好处: - 更加简单和易于集成:Nacos提供了与SpringCloud集成的完整解决方案,能够快速地实现服务注册和发现、配置管理和服务治理等功能。 - 更加强大和灵活的功能:Nacos相比于Eureka和Config,具有更丰富的功能和更灵活的配置方式,能够满足各种不同场景下的需求。 - 更加高效和可靠的性能:Nacos的性能和可靠性远远优于Eureka和Config,能够保证服务的高效性、可靠性和可扩展性。 总之,SpringCloud中使用Nacos作为服务注册中心和配置中心是一种值得推荐的方案,能够为微服务架构带来更多的优势和特点。 ### 回答3: SpringCloud Nacos是一个服务发现和配置管理的开源项目,其提供了注册中心、配置中心和动态服务发现功能,可以帮助开发人员构建具有高可用性、弹性、可扩展性的微服务架构。 在进行SpringCloud Nacos面试时,面试官通常会针对以下几个方面进行提问: 1. Nacos的作用是什么? Nacos作为一个服务发现和配置管理的平台,其主要作用就是为微服务提供注册中心、配置中心和动态服务发现的支持。通过Nacos可以实现微服务之间的调用和管理,大大提高了微服务架构的可用性和可维护性。 2. Nacos的架构和原理是什么? Nacos的架构基于Raft分布式一致性协议,并采用了Leader选举、算法优化等技术,确保了整个系统的高可用性和数据一致性。其原理是通过定时心跳保持节点间的状态同步,定期检测节点的健康状态,同时采用了故障转移机制,保证了系统的稳定性和可靠性。 3. Nacos的配置管理和服务注册实现方式是怎样的? Nacos的配置管理实现方式是以KV(Key-Value)的方式进行,它支持多种数据格式和动态更新,同时还支持分组、命名空间等管理模式。Nacos的服务注册实现方式是通过注册中心来完成的,它支持RPC协议和HTTP协议,同时支持多种负载均衡策略和自动扩容功能。 4. Nacos如何实现服务发现和治理? Nacos通过注册中心来实现服务发现和治理,其机制是客户端通过向注册中心进行注册和查询,实现对服务实例的发现和管理。同时,Nacos还支持多种负载均衡策略和自动扩容功能,实现对服务的高可用、动态负载均衡和高效利用的管理。 5. Nacos和其他服务发现和配置管理工具(如Zookeeper、Consul等)的比较和优劣势是什么? 与Zookeeper相比,Nacos具有更强的数据一致性和一致性协议,同时支持更多的配置管理和服务治理功能;与Consul相比,Nacos则有更高的可用性和更灵活的扩展性。总体来说,Nacos可以更好地满足微服务的高可用性、动态负载均衡和服务治理方面的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值