全部宕机能否继续通讯 ?
- 可以,启动 dubbo时,消费者会从注册中心拉取注册的生产者的地址接口等数据,缓存在本地,每次调用时都按照本地存储的地址进行调用,看架构流程中的第 4 步
- 注册中心对等集群,任意一台宕掉后,会自动切换到另一台
- 服务提供者无状态,任一台宕机后,不影响使用
- 服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复
-
Dubbo 架构图
-
服务注册订阅流程
- 服务的 container 负责启动,加载并运行 provider
- provider 在启动时会向注册中心把自己的元数据注册上去(服务 ip,port 等)
- consumer 启动时向注册中心订阅服务提供方的元数据
- 注册中心将服务提供者地址列表给消费者,如发生数据变更会推送给订阅的 consumer
- 在获取元数据后,consumer 可以发起 rpc 调用
- 在 rpc 调用前后会向监控中心上报(异步)统计信息(并发数、调用接口等)
如果注册中心一直宕机会怎么样 ?
- 注册中心一直没有恢复,一直处于宕机状态,服务是能够进行通讯
- 注册中心宕机就无法感知原有服务的下线状态通知,如果有服务下线,还是会继续进行调用(调用失败当然会有熔断策略)
- 注册中心宕机也无法感知新的服务上线,如果有新的服务上线,不会进行服务调用(provider 启动要向注册中心注册,并且异步通知给 consumer)