JAVA全系列 教程
3762个小节阅读:7094k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Apache Dubbo是一款高性能的Java RPC框架,其前身是阿里巴巴公司开源的一个高性能、轻量级Java RPC框架,可以和Spring无缝集成。
Dubbo的处理流程如下图所示:
节点说明:
节点 | 角色说明 |
---|---|
Provider | 服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册中心,负责服务注册与发现 |
Monitor | 统计服务调用次数和调用时间的监控中心 |
Container | 运行服务的容器 |
调用关系说明:
调用流程:
Dubbo的整体架构大致分为三层:业务层、RPC层、Remoting层
注册中心挂了服务之间可以继续通信吗?
要回答这个问题,我们要弄清楚Dubbo的动态服务感知原理。
首先,Dubbo 默认采用 Zookeeper 实现服务的注册与服务发现,简单来说,是多个 Dubbo 服务之间的通信地址,是使用 Zookeeper 来维护的。而在 Zookeeper 上,会采用树形结构的方式来维护 Dubbo 服务提供端的协议地址,Dubbo 服务消费端会从 Zookeeper Server 上去查找目标服务的地址列表,从而完成服务的注册和消费功能。
Zookeeper就会通过心跳检测机制,来判断 Dubbo 服务提供端的运行状态,来决定是否应该把这个服务从地址列表剔除。
当 Dubbo 服务提供方出现故障导致 Zookeeper 剔除了这个服务的地址,那么 Dubbo 服务消费端需要感知到地址的变化,从而避免后续的请求发送到故障节点,导致请求失败。也就是说 Dubbo 要提供服务下线的动态感知能力。这个能力是通过 Zookeeper 里面提供的 Watch 机制来实现的。
简单理解呢,就是Dubbo 服务消费端会使用 Zookeeper 里面的 Watch 来针对Zookeeper Server 端的/providers 节点注册监听,一旦这个节点下的子节点发生变化,Zookeeper Server 就会发送一个事件通知Dubbo Client 端,Dubbo Client 端收到事件以后,就会把本地缓存的这个服务地址删除,这样后续,就不会把请求发送到失败的节点上,完成服务下线感知。
结论:
了解Dubbo服务感知原理以后,我们就应该知道,Dubbo的注册中心挂了以后,服务之间还是可以继续通信的。主要是因为Dubbo初始化的时候,消费者会将服务提供者的地址等信息缓存到本地。