什么是RPC框架?

什么是RPC?

RPC框架,全程Remote Procedure Call

通俗些从字面上理解就是一种远程的程序调用,当然这只是一种定义,具体的实现有下面四种角色构成

  • registry - 注册中心,当服务提供者启动时会向注册中心注册,然后注册中心会告知所有的消费者有新的服务提供者。
  • provider - 服务提供者,远程调用过程中的被消费方。
  • consumer - 服务消费者,远程调用过程中的消费方。
  • monitor - 监视器,它主要负责统计服务的消费和调用情况。

演变过程

  • 比如现在A提供了一个服务,告诉其他人说:现在我这里有一个方法,调用后可以得知胡辣汤的配方,但是调用的时候你们要提供手机号和名字让我知道你们是谁。然后B听说了:好的,我现在就创建方法去调用。这时候就产生了两个角色,provider(服务提供者 指A)consumer(服务消费者 指B)。这就是最简单的远程调用。

在这里插入图片描述

  • 现在A突然发布了声明说:我现在搬家了,新的地址在xxx.xxx.xxx.xx。B呢就要去修改代码了,把地址修改,然后重新运行程序。然后B就想了,我可不可以把定义他地址和调用他的这个动作这些代码封装一下呢,然后以后修改的时候就不用动所有的地方了。这时候就用到了封装,把底层调用逻辑抽出来,不用每次都看到它。

在这里插入图片描述

  • 过段时间A又发布了声明说:我现在有了炸油条的配方,你们可以调用另一个方法获取。那B就想了,你这又多一个方法,我每多一个方法就要封装一个调用逻辑,能不能共用一个调用逻辑呢?能!将调用逻辑抽象,做一个代理模式,每次调用的时候将要远程的方法告诉它,不就可以不用动这个逻辑了吗

在这里插入图片描述

这就形成了简单的一个框架,当然再往下延伸还有很多

  • 那如果有其他用户调用方法怎么办呢,能不能把这些方法放在一个固定的地方,然后他们谁都可以调用。这就是registry (注册中心) ,当服务提供者启动时会向注册中心注册,然后注册中心会告知所有的消费者有新的服务提供者。
  • 如果调用的时候,突然服务不在了怎么办,能不能监控一下这个服务状态,出现问题的时候提前告知消费者一下,这就是monitor(监视器),它主要负责统计服务的消费和调用情况。

还有一些是这些中心之间的通信协议,最基础的是TCP/IP协议,也是最有效不会过时的协议。像HTTP协议等就是基于TCP/IP升级的一种协议,通过URL传输JSON字符串来实现,比web serivce高效一些

框架

现在主流的框架有Dubbo、Spring Cloud等,微博内部使用的Motan,腾讯内部使用的Tars。

猜你喜欢

转载自blog.csdn.net/weixin_45525272/article/details/123576983