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

如果有收获,请记住分享并递交
本文主要讨论了“RPC实现原则”,所以首先澄清一个问题,什么是RPC? RPC是远程程序调用(Remote Process Call)的缩写。
RPC是一个计算机通信协议,该协议允许一个运行于一个计算机的程序调用另一个计算机的子程序,开发者不需要额外的编程来进行这种交互。
注意两个或多个应用程序在不同的服务器上分布,它们之间的调用类似于本地方法调用。
如今,一些最受欢迎的RPC框架,如Dubbo,提供基于接口的远程方法调用这意味着客户端只需要知道接口的定义来调用远程服务。 在Java中,接口不能直接调用实例方法,必须通过其实现的类对象执行,这意味着客户端必须生成这些接口代理对象,由Java提供Proxy、InvocationHandler生成动态代理支持; 生成代理对象, 那么如何调用每个特定的发送方法?
当调用指定的方法时,由jdk动态代理生成的代理对象实际上将被执行InvocationHandler中定义的#invoke方法完成远程方法调用并取得该方法中的结果.
RPC是两个计算机间的调用,基本上是两个主机间的调用,让客户端离开网络通信必然会有网络通讯序列化、反序列化,编解码有些问题需要考虑;同时,事实上,大多数系统现在都是集群部署的,有多个主机/容器外部提供相同的服务,如果集群中的节点数量很大,那么管理服务地址也将是一个非常繁琐的事情。

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















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










本文由 在线网速测试 整理编辑,转载请注明出处。