Dubbo实现服务远程调用的原理分析

实践中,通常在服务提供方使用@DubboService注解暴露服务,服务调用方使用@DubboReference注解远程注入,然后在应用程序中添加@EnableDubbo注解及相关配置,就能实现远程服务调用。

但是调用方只有接口信息,是如何实现远程服务的调用呢?

简要理解服务远程调用的流程:

  • 注册中心中存放着所有服务的名称和访问地址信息,调用方配置了注册中心的地址,即可实现订阅注册中心中的服务信息。
  • 获取到服务信息后(主要是服务名称、访问地址信息),调用方在进行远程调用时,会根据接口信息生成一个代理对象,完成具体的远程调用操作(包括:包装接口信息、请求方法名称、请求参数类型、请求参数数据,与远程服务提供方建立通信连接,将包装信息通过连接通道发送给服务提供方)。
  • 服务提供方在启动后,会开启一个netty server的端口监听,当监听到请求方发送的数据后,进行数据解析(解析到类信息、方法名称、传递的参数信息等),然后通过反射调用本地对应的方法,再将方法调用的返回结果通过网络通道传递给调用方。
  • 调用方监听到返回数据后,解析并打印出来。

参考链接

https://www.bugstack.cn/md/road-map/dubbo.html

你可能感兴趣的:(中间件,dubbo)