Dubbo架构及原理
1、Dubbo:Dubbo是一个分布式服务框架,SOA治理方案。
主要功能有:高性能的NIO通讯以及协议集成、服务动态寻址与路由、软负载均衡与容错、依赖分析与降级
主要特点:
连通性:provider、consumer、register基于长连接,并且provider、consumer、register注册服务以及订阅服务的时间都得向Monitor汇报。
健壮性:比如说注册中心集群中的任意一台宕掉后,将自动切换到另一台。就算注册中心全部宕掉,服务者和消费者仍可以通过本地缓存进行通讯。
伸缩性:可以通过增加机器部署实例进行添加新的注册中心和服务提供者。
补充:SOA 面向服务的架构 是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
2、架构:
主要包括五个节点:Provider、Consumer、Container、Register、Monitor
Provider:服务提供者
Consumer:服务订阅者
Container:服务运行的容器
Register:注册中心
Monitor:监控中心,统计服务调用次数和调动时间
dubbo工作过程:
1. 服务容器负责启动,加载,运行服务提供者。
2. 服务提供者在启动时,向注册中心注册自己提供的服务。
3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
3、Zookeeper作为dubbo的注册中心的工作原理:
Zookeeper作为Dubbo的注册中心时:服务提供者在初始化启动时,会在Zookeeper下的 Dubbo节点/ 服务节点 /providers节点下创建一个子节点并写入URL,路径类似为 /dubbo/servicename/providers/url,该路径下的所有子节点均为服务提供者。此时这些子节点都为临时节点,因为临时节点的生命周期与客户端会话相关,所以一旦提供者所在的机器出现故障导致提供者无法提供服务,该临时节点就会自动从Zookeeper删除。此时因为服务提供者,注册中心,消费者之间是长连接,注册中心能感知服务者宕机,会告知消费者。
而监控中心是Dubbo服务治理体系中重要的一部分,它需要知道所有的服务提供者和消费者的变化情况 。所以它在启动时会在服务节点上注册一个watcher来监听子节点变化,路径为 /dubbo/servicename/ ,所以它也能感知服务提供者的宕机。
服务消费者的节点创建过程和提供者是一样的,而且也是临时结点。
还有一个特性就是Zookeeper的节点结构设计,它以服务名和类型,也就是 /dubbo/servicename/类型 作为节点路径,符合Dubbo订阅和通知的需求,保证了以服务为粒度的变更通知,通知范围易于控制。所以即使服务提供者和消费者频繁变更,对Zookeeper的性能也不会造成多大影响。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)