0%

RPC

RPC(Remote Procedure Call) 远程调用

RPC原理

可以分为五个部分实现

  1. 客户端(服务消费端): 调用方法的一端
  2. 客户端Stub(桩):代理类,将调用的方法、类、方法参数作为信息传递到服务端
  3. 网络传输: 将信息传输到服务端,并且将返回结果发挥给调用端,推荐使用Netty
  4. 服务端Stub: 接收信息,去执行对应的方法,将结果返回
  5. 服务端(服务提供端): 提供服务的一端
    过程:
  6. 服务消费端client以本地调用的方式去调用远程服务
  7. 客户端Stub (client stud) 接收调用后将方法、参数等组装进能够进行网络传输的消息体(序列化之后) : RpcRequest
  8. 客户端Stub 找到远程服务的地址,将消息发送到服务提供端
  9. 服务端Stub 收到消息后,反序列化为RpcRequest 对象
  10. 服务端Stub 根据RpcRequest中的类,方法,方法参数等信息调用本地方法1
  11. 服务端Stub 将得到的结果封装为 RpcResponse序列化后发送给消费方
  12. 客户端Stub接收消息并将其反序列化为RpcReponse

Invoker是什么

Inboker 是Dubbo对远程调用的抽象

Dubbo 的SPI机制

SPI (Service Provider Interface):将接口的实现放在配置文件中,在程序的执行过程中读取配置文件,通过反射加载实现类。也就是提供接口,允许第三方实现这个接口

Dubbo 的微内核架构

微内核架构模式又名插件架构模式,是基于产品应用程序的一种自然模式。允许用户添加额外的应用到核心应用。例如IDE

Dubbo的负载均衡策略