分析&回答
可以的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用。具体看看架构流程中的第4步。
- 注册中心对等集群,任意一台宕掉后,会自动切换到另一台
- 服务提供者无状态,任一台 宕机后,不影响使用
- 服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复
Dubbo 架构图:
流程如下:
- 服务的Container负责启动,加载并运行 Provider
- Provider 在启动时会向注册中心把自己的元数据注册上去(服务Ip,Port等)
- Consumer 启动时向注册中心订阅服务提供方的元数据
- 注册中心将服务提供者地址列表给消费者,如发生数据变更会推送给订阅的 Consumer
- 在获取元数据后,Consumer 可以发起 RPC 调用
- 在 RPC 调用前后会向监控中心上报(异步)统计信息(并发数,调用接口等)
喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!