RPC的设计思想及原理图
解决了RPC的调用问题,现在还要解决的一个关键问题是,客户端怎么知道调用哪一台机器上的服务。这就需要引入一个中间的第三者目标服务器
服务提供者向目标服务器注册服务,客户机从目标服务器(一种叫法叫服务注册中心)中获取可调用的机器列表。如果有用过类似dubbo这样的RPC框架是不是对这个图很熟悉?因为所有的RPC架构的原理大多都是类似的。服务提供者往目标服务器里面通常会注册机器的ip和端口信息。
下面我们来谈下RPC的好处和注意的地方。
好处:屏蔽了底层通讯的复杂性,在分布式系统中提供了通讯的透明性。
需要注意的地方:RPC是点对点的通讯方式,要求通讯两端必须同时运行,当其中一端挂了就会导致通常异常,并且调用者一般会阻塞住等待结果的返回,性能相对不是很高,当然也有异步RPC,超时重试情况下服务端提供者需要做好服务幂等性处理。相对于RPC而言采用了面向消息通讯模型的架构比如MQ则不要求通讯两端同时运行,发送消息时也不需要阻塞等待处理结果的返回通讯性能就高出很多。
最后我们总结一下:RPC调用是指不同机器间的进程通讯。程序不需要关心某个远程服务是在哪台机器上执行的,远程服务调用就和调用本地服务一样。要在不同机器间进行通讯我们需要知道通讯机器的ip和端口号。ip帮助我们定位是哪一台机器,端口号帮我们定位是机器上的哪一个进程。RPC的出现使用得机器的进程通讯透明化,这在分布式系统中是很重要的。RPC调用架构中客户端和服务端都和一个叫服务注册中心的第三方通讯。
原文链接:https://www.cnblogs.com/linlinismine/p/9205676.html