RPC框架学习

RPC框架学习

一. RPC是什么

  1. RPC解释为远程过程调用
  2. 两台机器A,B,A调用B中方法就是远程过程调用
  3. RPC其实和HTTP类似,但是它的性能比HTTP(RestFul风格)要好得多,具体表现在RPC支持长连接;而HTTP需要三次握手(TCP),在多系统中,HTTP每次三次握手,四次挥手网络消耗太大

二. RPC的三点具体任务

  1. call ID维护:不同机器之间的方法调用不同同一台机器中的方法调用(入栈出栈),在RPC中,每个方法都具有一个ID,RPC通过客户端和服务端维护一个call ID表,每次客户端调用服务端都需要从call ID表中找到方法对应的方法ID,之后传输到服务端,服务端在call ID表中查询是否具有这个方法ID,如果有执行函数体
  2. 序列化和反序列化:客户端请求服务端的方法携带的方法参数,call ID需要转化为一连串的字节流,传送到服务端,服务端通过反序列化即可得到参数
  3. 网络传输:序列化的字节流通过网络传输,网络传输有:TCP,HTTP等协议支持

三. RPC如何实现高可用

  1. 高流量请求需要支持多台机器提供服务,还需要注册中心提供多台服务器的URL注册与服务调用,Dubbo分布式框架使用Zeekeeper提供注册中,还可以使用Redis提供注册中心
  2. 负载均衡:Zeekeeper提供了四种负载均衡算法(随机,轮训,一致性哈希,主备)
  3. 请求需要连接Zeekeeper,消耗太大,使用缓存存储Zeekeeper列表,访问速度更快
  4. 服务器(Tomcat或者Jetty)提供线程池技术处理请求

四. RPC框架的主要组件

  1. Client
  2. RPCInvoker:客户端数据序列化和响应结果的处理与存储
  3. RPCConnector:客户端连接服务端,发送数据
  4. RPCChannel:客户端传输数据
  5. RPCAccepter:服务端获取连接
  6. RPCProtocal:服务端反序列化
  7. RPCProcessor:服务端处理请求,调用线程池,返回结果

猜你喜欢

转载自blog.csdn.net/qq_40910541/article/details/88616582