dubbo推断过程
2025/9/22大约 2 分钟
dubbo推断过程
服务提供者,启动后,服务消费者就可以调用到他,终止后,这个提供者就不被消费者调用了,可以在任意时刻上线或者下线,只需要保证同一个服务有最低一个提供者即可
- 提供对应的服务,声明提供的服务类型,需要注册
- 启动的时候要能通知消费者
- 消费者的地址是哪里
- 如何进行通知
- 直接进行通知--直接调用消费者的接口
- 间接进行通知--写入中间件,由中间件进行通知
- 可以应对突然宕机的情况
当前这个服务宕机,可以平滑的通知所有的消费者- 或者由消费者进行自我服务管理
服务消费者:调用服务,可以获得任意一个提供者,并且每次调用都是随机的
- 调用服务提供者
- 需要获得服务的提供者
- 硬编码
- 通过一些中间件进行动态管理
- 需要获得服务的提供者
- 某个服务调用失败后,进行换提供者重试
- 本地需要记录多个提供者信息
- 或者可以不重复的获得多个提供者信息
- 新启动的提供者可以被消费者感知,服务提供者下线后,最好也能避免重复调用下线的服务提供者
- 本身动态维护黑名单
消费者和提供者间的通信
- 直接通信(选用) 两者直接直接连接,没通过中间件进行转发请求
- 快
- 需要提前配置
- 太紧密 不解耦合
- 多对多实现复杂
- 间接通信(用于同步数据,主要是服务提供者ip提供的服务信息等等)
- 实现相对简单
- 安全稳定?
- 好维护
- 可以增加一些额外的功能
- 可以监控
消费者
- 获得所有的服务提供者名单
- 按需进行调用
- 有某种机制同步新的提供者,并且去除无效的提供者
- 按照某种策略进行调用
- 轮询
- hash一致
- 权重
- 随机
- 如果某次调用失败,重试几次,重试仍失败,将其剔除提供者名单,并将此信息同步给所有的服务消费者
提供者
- 自我注册
- 启动通告大家,我活了,提供方便面服务
- 定时和中心做心跳
