100 行代码搞定了 RPC 原理,大家随便问!

      最后更新:2022-07-04 10:11:17 手机定位技术交流文章

      7bbd4da6bbcf600b2480a6d8f05a65b6.png

      如果有收获,请记住分享并递交

      引言

      本文主要讨论了“RPC实现原则”,所以首先澄清一个问题,什么是RPC? RPC是远程程序调用(Remote Process Call)的缩写。

      RPC是一个计算机通信协议,该协议允许一个运行于一个计算机的程序调用另一个计算机的子程序,开发者不需要额外的编程来进行这种交互。

      注意两个或多个应用程序在不同的服务器上分布,它们之间的调用类似于本地方法调用。

      一个基本的RPC电话涉及什么?

      如今,一些最受欢迎的RPC框架,如Dubbo,提供基于接口的远程方法调用这意味着客户端只需要知道接口的定义来调用远程服务。 在Java中,接口不能直接调用实例方法,必须通过其实现的类对象执行,这意味着客户端必须生成这些接口代理对象,由Java提供ProxyInvocationHandler生成动态代理支持; 生成代理对象, 那么如何调用每个特定的发送方法?

      当调用指定的方法时,由jdk动态代理生成的代理对象实际上将被执行InvocationHandler中定义的#invoke方法完成远程方法调用并取得该方法中的结果.

      RPC是两个计算机间的调用,基本上是两个主机间的调用,让客户端离开网络通信必然会有网络通讯序列化、反序列化编解码有些问题需要考虑;同时,事实上,大多数系统现在都是集群部署的,有多个主机/容器外部提供相同的服务,如果集群中的节点数量很大,那么管理服务地址也将是一个非常繁琐的事情。

      ee2f10109831ab9a59975b661d257fb2.png

      求方程调用接口的实际实现获取结果并将其写入相应的响应流中。

      6c6fbc88cf834d303788629009c41f8f.png

      d7962c0e405fa0e58b76dc77ebeb72b3.png

      63e58d60fae0a24bcfb8b52a9f2ca906.png

      ba05599e886b79c2e999dbb585cd5d1c.png

      1fd9922e0911295dcbe419ae8597fa37.png

      5c46a27cf0b7a24394ad81daca34a80c.png

      81d9b3b38ba8d5febe518ea904d4fafa.png

      eebee4ab8b59e092f65e6a8b9c5ace0f.png

      a2a83bd8acc8c62f5b7f436c0bd0df55.png

      08b22610754ce5276bca31fbcb72787d.png

      b09401ee978a70ae46e3f398f8a39b01.png

      e4b75d7c1100c39219855acab9dd1646.png

      72702f0c6edeaa9603ca073b333772b7.png

      68b34fdcde891a1ae30a0f650008dc4d.png

      3c2b87c5c0eaba8e68fdf2bf734dc59d.png

      还有一些细节,例如一个自定义的编码器,这里没有指定。MessageToByteEncoderByteToMessageDecoder覆写对应的encodedecode方法可以是自定义的编码器,使用的序列工具,例如Hessian/Proto,可以在相应的官方文件中引用。

      bcfac08bb993f5c2932a1c7804924db6.png

      ab36a137e7d41acf6155acf96dad579d.png

      0a3d9252292c92a3f496f0b635b8cd5f.png

      7043c368b32e77801eb20b5336fd8cf0.png

      18352ec7cef81e2ff3a092e55b225dff.png

      ce9d8fc387a600f1cfa8051feec491d5.png

      3f0ec02b98c85dd9dac943dbe25c452f.png

      e36574e0987edc39aa7dac9be4f9766d.png

      3b98e574b6aded627c1c1e62db8dacd0.png

      d25414b0899d5b332b064c9939f677be.png

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

          热门文章

          文章分类