RPC(Remote Procedure Call) 远程调用
RPC原理
可以分为五个部分实现
- 客户端(服务消费端): 调用方法的一端
- 客户端Stub(桩):代理类,将调用的方法、类、方法参数作为信息传递到服务端
- 网络传输: 将信息传输到服务端,并且将返回结果发挥给调用端,推荐使用Netty
- 服务端Stub: 接收信息,去执行对应的方法,将结果返回
- 服务端(服务提供端): 提供服务的一端
过程: - 服务消费端client以本地调用的方式去调用远程服务
- 客户端Stub (client stud) 接收调用后将方法、参数等组装进能够进行网络传输的消息体(序列化之后) : RpcRequest
- 客户端Stub 找到远程服务的地址,将消息发送到服务提供端
- 服务端Stub 收到消息后,反序列化为RpcRequest 对象
- 服务端Stub 根据RpcRequest中的类,方法,方法参数等信息调用本地方法1
- 服务端Stub 将得到的结果封装为 RpcResponse序列化后发送给消费方
- 客户端Stub接收消息并将其反序列化为RpcReponse
Invoker是什么
Inboker 是Dubbo对远程调用的抽象
Dubbo 的SPI机制
SPI (Service Provider Interface):将接口的实现放在配置文件中,在程序的执行过程中读取配置文件,通过反射加载实现类。也就是提供接口,允许第三方实现这个接口
Dubbo 的微内核架构
微内核架构模式又名插件架构模式,是基于产品应用程序的一种自然模式。允许用户添加额外的应用到核心应用。例如IDE