什么情况?一个工作了5年的Java程序员都答不上来这个问题?《Dubbo如何动态感知离线服务》?好吧,这个问题,看看普通人和专家的回答吧!普通人:嗯。...........师父:好的,面试官,我从几个方面来回答这个问题。首先,Dubbo默认使用Zookeeper来实现服务注册和服务发现。简单的说就是多个Dubbo服务之间的通信地址,由Zookeeper维护。在Zookeeper上,会使用一个树形结构来维护Dubbo服务提供者的协议地址。Dubbo服务消费者会从ZookeeperServer中查找目标服务的地址列表,完成服务注册和消费功能。Zookeeper会通过心跳检测机制来判断Dubbo服务提供者的运行状态,从而决定该服务是否应该从地址列表中移除。当Dubbo服务提供者出现故障,Zookeeper移除该服务的地址时,Dubbo服务消费者需要感知地址的变化,避免后续请求发送到故障节点,导致请求失败。也就是说,Dubbo需要提供离线服务的动态感知。这种能力是通过Zookeeper中提供的Watch机制实现的。简单来说,Dubbo服务消费者会使用Zookeeper中的Watch来注册和监控ZookeeperServer端的/providers节点。一旦该节点下的子节点发生变化,Zookeeper服务器就会发送事件通知Dubbo客户端。Dubbo客户端收到事件后,会删除本地缓存中的服务地址,这样以后就不会再向故障节点发送请求,完成服务下线感知。以上是我对这个问题的理解!总结:Dubbo是目前非常主流的开源RPC框架,很多企业都在使用。有必要了解这个RPC的底层工作原理,可以帮助开发者提高解决开发问题的效率。我还想多说一点,在Java岗位上,要想走得更远,就必须努力。普通人VS专家访谈系列到此结束。有不懂的技术面试题,欢迎私信我。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!
