RPC框架原理

一、基本原理

由于网站越来越庞大,在一台机器上进行部署是不太现实的,所以有了分布式架构,把一些核心业务抽离出来。这样就会存在比如一台机器要调用另一台机器的上的服务或者操作,就有了RPC请求。

二、基本过程

1. 建立通信

由于两台机器要调用对方机器上的服务,肯定是需要通信的,所以需要建立TCP连接

2. 服务器寻址

即要得到对方服务器上的IP地址和端口号,调用方法名称,传入返回参数等。

这时我们需要一个注册服务,可以向调用者提供这些信息,服务提供方提供这些信息

é«å¹¶åæ¶æç³»åï¼RPCæ¡æ¶çå®ç°åçï¼è°ç¨å¨è¿ç¨ï¼åRPCæ¶æç»ä»¶

  1. 从服务提供者的角度看:当提供者服务启动时,需要自动向注册中心注册服务;
  2.  当提供者服务停止时,需要向注册中心注销服务;
  3.  提供者需要定时向注册中心发送心跳,一段时间未收到来自提供者的心跳后,认为提供者已经停止服务,从注册中心上摘取掉对应的服务。
  4.  从调用者的角度看:调用者启动时订阅注册中心的消息并从注册中心获取提供者的地址;
  5.  当有提供者上线或者下线时,注册中心会告知到调用者;
  6.  调用者下线时,取消订阅。

三、网络传输

 主要是序列化、反序列化、网络传输

调用者通过代理生成proxy对象作为中间人,传输给提供者,提供者通过proxy得到对应的对象或者结果,然后再通过序列化之后返回给调用者。

四、分布式组件

  • 服务端
  • 服务端存根
  • 客户端
  • 客户端存根

å¨è¿éæå¥å¾çæè¿°

具体调用过程:

1、服务消费者(client客户端)通过调用本地服务的方式调用需要消费的服务;

2、客户端存根(client stub)接收到调用请求后负责将方法、入参等信息序列化(组装)成能够进行网络传输的消息体;

3、客户端存根(client stub)找到远程的服务地址,并且将消息通过网络发送给服务端;

4、服务端存根(server stub)收到消息后进行解码(反序列化操作);

5、服务端存根(server stub)根据解码结果调用本地的服务进行相关处理;

6、本地服务执行具体业务逻辑并将处理结果返回给服务端存根(server stub);

7、服务端存根(server stub)将返回结果重新打包成消息(序列化)并通过网络发送至消费方;

8、客户端存根(client stub)接收到消息,并进行解码(反序列化);

9、服务消费方得到最终结果;

而RPC框架的实现目标则是将上面的第2-10步完好地封装起来,也就是把调用、编码/解码的过程给封装起来,让用户感觉上像调用本地服务一样的调用远程服务。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值