浅析dubbo服务引入

前言

服务提供方:通过本地或者远程暴露的方式,将服务暴露出来
服务调用方:通过本地或者远程的方式,将服务引入,才能像调用本地方法一样,调用服务提供者的服务

正文

先贴一下敖丙大佬画的服务引入流程图,画得真挺好,大佬的文章链接,文末也会贴出来
在这里插入图片描述

在这里插入图片描述

跟上篇浅析dubbo服务暴露一样,服务引入也是大致分成三个大步骤

  1. 先检查配置,通过配置构建map,组装URL,dubbo的spi机制调用对应的protocol.refer得到相应的invoker
  2. 多个URL的情况下,遍历生成多个invoker,通过StaticDirectory封装,最后经过cluster.join合并成一个invoker
  3. 构建代理,封装invoker返回服务引用,之后就是使用invoker这个代理对象了

记住这三个大流程,接下来我们开始补充一些小细节

服务引入的入口

在这里插入图片描述
这里更多的是涉及spring源码的相关知识,之前也花了段时间了解spring源码,之后会把相关知识也梳理出来

StaticDirectory 服务目录

常常拿来与注册中心进行对比,服务目录可以理解为本地的缓存注册表
在这里插入图片描述
服务目录实现了NotifyListener接口,用于刷新Invoker集合,如果有的新的服务提供者加入,或者剔除已有的服务提供者,就会及时动态更新信息

NettyClient
  1. dubbo默认是通过netty进行网络通信的,服务调用者充当Client的角色,服务提供者充当Server的角色
  2. 浅析dubbo服务暴露中提到服务暴露后会创建NettyServer,用于处理Client的请求、维持心跳信息等
  3. 服务引入会封装NettyClient,当发起服务调用的时候,会通过NettyClient向NettyServer发起请求

参考资料

字节面试:dubbo的服务引用过程
dubbo 的服务引入和服务目录源码解析(流程图)

结语

由于自己有严重的拖延症和懒癌
在这里插入图片描述

很多知识都想拖着以后慢慢学,所以一些细节的地方以后等理解透彻了再补充吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值