分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理

      最后更新:2022-06-21 20:42:57 手机定位技术交流文章

      别担心,我们马上开始了!

      引言

      过去,当一个系统很小时,它只使用一个架构,一个服务器部署了一个应用程序和数据库是足够的。

      但现代互联网公司的业务逐渐扩大,服务逐渐细分,许多服务需要通过远程分布式接口调用通讯,也就是说,不同的服务不是在同一服务器上部署的,例如,在服务A上订购服务,其他服务的付款服务,有同步调用和非同步调用,现在我们需要远程调用不同的服务,在使用时调用远程服务就像调用本地服务。介绍瓶装包装,就能通过 this.xxx ()同时调用远程服务,这背后的机制是通过RPC技术。

      关键点: RPC技术必须是未来工作的基础,掌握其中之一,了解原则,阅读源代码,甚至手写。

      记者:公司使用什么RPC框架?你能告诉我们RPC的工作原理吗?

      面试官想知道基础设施是否像我们的项目一样有效,是否像它应该这样好,是否像它应该这样好,是否像它应该这样好,是否像它应该这样好,是否像它应该这样好,是否像它应该这样好。

      RPC是一个分布式计算CS模型,它总是发送一个客户端到服务器执行若干进程请求,服务器接受请求,用户客户端提供的参数,并在计算完成后返回结果给客户端。

      使用最广泛的Spring Cloud,Spring Boot功能集成了开放源代码行业最好的组件,为微服务架构服务管理提供了一个全面的解决方案。

      国内开源的框架中,更广泛地使用阿利的杜布,后来它被捐赠给阿帕奇。还有Tencent的Tars框架,以及储蓄的框架,还有基于Thrift二级发展的RPC框架,例如,Mtthrift。

      这些PPC的一般原则基本上是一样的(在此点,请面试官提供纸张和铅笔,并绘制一个说明PPC原则的图表)

      图片描述

      这个图看起来并不太复杂,以至于自己挖出一个洞,也并不看起来简单。

      1-5 逐行解释:

      1. 服务整合后,服务(这里的服务是图片中的提供者,在服务提供商启动后,它将通过登记模块,提供服务唯一的ID和IP地址,港口信息等被注册到RPC框架注册中心(图表中的注册部分)。
      2. 当呼叫者(消费者)希望调用服务时,提供者注册的服务的唯一服务ID将到注册中心查找可用的在线呼叫服务,并返回IP列表(3"通知部分)。
      3. 步骤3 消费者根据某些策略实际调用服务,例如从注册处返回的可用IP列表的随机或轮换(“调用”)。
      4. 最后,统计功能,RPC框架提供监测功能,监测服务健康状况,控制服务线的延长和上下。

      有一个清晰的流程图,说明每个步骤,面试官说他满意并继续提出问题。

      访谈者:服务开始时,服务的基本资料向登记中心登记。如果服务提供者登记,登记中心如何知道服务不会使用?

      A:服务降级线分为主动降级线和心脏跳动测试

      例如,当一个服务发布时,注册表在重新启动之前被通知:如果有流量进来,我想重新启动,不要给我,让另一个机器服务,等我成功重新启动,让流量进来,或者手动从后端管理中删除机器,这是关键。

      心跳检测是处理下游服务异常(如停电网络)的处理,现时,如登记中心不知道该服务已停办,一旦它被召唤了,就出现了问题。为了 避免 这种 情况,登记中心增加了心脏跳动检测功能,它对提供者进行心脏跳动测试,例如,每30秒发一个心跳,如果三个心跳的结果没有返回一个值,鉴于该服务已终止,快速更新消费者服务列表,告诉消费者打电话给另一台机器.

      **问题分析:**解释服务端如何感知注册中心的问题,你已经解决了这个问题了吗?还没有,你自己挖了一个洞。面试官可能继续深入挖掘,服务提供者已登记中心可以解决,登记中心是不是挂起来了?三连问继续。

      记者: 如登记中心被暂停, 例如, 你使用 Zookeeper 。 如果 Zookeeper 被暂停, 服务还能互相呼叫 吗?

      **答案:**首先是将注册中心与数据库分开。如果数据库被暂停,ZK仍可使用,因为ZK将缓存注册表列表。

      其次,ZK本身是一个集群,一台机器挂了,ZK 将 选择 其他 的 机器, 以 继续 提供 服务, 作为 主机,如果整个小组都挂起来,那没关系。因为呼叫者局部缓存注册中心接收的服务列表。避免与登记中心的互动,消费者和供应商使用一个直接的链接,这些策略都是可配置的。

      面试是交流的自由时间。任何点都可以分散。继续深入挖掘,深入挖掘。你永远无法掩盖的无知领域。目的不是让你感到尴尬,而是了解你的技术深度。

      记者:你对RPC非常了解,你能自己写RPC框架吗?

      问题是,虽然我没有手写,但我已经读了源代码,这基本上是实现这个想法的方法。

      图片描述

      1. 客户端调用方法是使用JDK动态代理技术编写的,当调用远程服务方法时,客户端会调用InvocationHandler调用方法。
      2. 完美的RPC框架包括监控、路由、降级、认证等。
      3. 创建一个接口以实现Client在滤波方法中。 写法,其逻辑是从ChannelPool获取连接,然后将数据写入Channel。
      4. 实现数据序列和压缩以减少网络上传输的数据量,并发送请求数据到服务端,使用Nety的异步通信框架。
      5. 在接收客户端发送的讯息后,服务最终在读取该讯息之前将该讯息按逆顺序压低。
      6. 请求是服务端的滤波器。 请求是通过方法监测和验证的。
      7. 根据客户发送的服务信息和参数,通过反射调用相应的业务服务,取得业务处理结果,然后返回结果被写入响应filter中的通道。
      8. 服务结束序列, 压缩, 等, 发送给客户端.
      9. 当客户端收到消息后,它被客户端重新排序和解压缩,然后由 ResponseThreadPoolProcessor线程池处理。
      10. ResponseThreadPoolProcessor 收到消息后,方法调用将结果返回以前的方法,调用请求终止。

      记者:是的,是的。确实是看了,这个问题就到这。(面试官的心理学:虽然目前的项目不会让你真正写RPC框架,知其然知其所以然,如果你有这类RPC的问题, 你可以解决.这个项目小组缺少一个这样的人。

      深入分析

      已有http协议接口, 或者 RestFul接口, 为什么使用RPC技术?

      在接不多的情况下,使用http的确是明智的选择,比如在初创企业,我们不确定生意会顺利进行.可能面临随时倒闭,开发人员也不足,现在,使用清洁高效的技术,首先做事情是最明智的选择。无需一步登天。

      在系统间相互作用较少的情况下,使用http协议的优点是显而易见的:易于开发、易于测试和易于部署。使用现有的http协议进行系统间通信,如果生意真的增长缓慢,系统也慢慢扩大,RPC框架的好处是显而易见的,首先,RPC支持长链条,通信不需要像http那样每次重复三次,减少了网络开销。

      其次,RPC框架一般具有一个注册中心模块,具有完善的监控和管理功能,服务注册发现、服务下游、服务动态扩展等操作方便,基于服务的治理效率大大提高。

      基于TCP协议的RPC,可以更灵活地定制协议字段,与http相比,它可以减少网络传输字节的数量,减少网络开支(握手)提高了性能。实现更大的吞吐量和同时的数目,但是,我们需要更多地关注这些复杂的细节,开发者的需求也很高,增加开发成本。

      总结

      在面试官接管三个问题时,第一三个问题必须掌握,而最后一个则添加了手写的深入分析,这可以大大提高面试官对你的感情,只要有一个亮点,即使其他问题没有很好回答,那么问题就不会大。

      RPC工作原则摘要:

      • 提供者: CS模型中的服务提供者,服务器。
      • 消费者: CS模型中的客户。
      • 注册处: 服务注册和发现服务管理中心.
      • 监视: 对统计服务的电话数目和时间的监视中心.
      • 容器: 运行容器的服务, 如喷气站.

      RPC实施过程摘要:

      1. 服务容器负责启动、装载和运行服务提供者。
      2. 当服务提供商启动时,它将其服务注册到注册中心,展示其IP和端口信息。
      3. 服务消费者在开始服务时就订阅登记中心提供所需的服务。
      4. 注册处将服务提供者名单归还给消费者,如果更改,注册处将根据长期的连接向消费者发送数据。
      5. 服务消费者从这个地址提供者列表中,根据软负载平衡算法选择一个提供者,如果调用失败,则选择另一个服务调用。
      6. 服务消费者和服务提供者,在记忆中积累电话和电话时间,及时向监控中心发送一个统计数据。

      别担心, 文章结束, 期望连续三个!

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27950.html

          热门文章

          文章分类