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:监控中心,统计服务调用次数和调动时间
工作过程:
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的性能也不会造成多大影响。
Dubbo架构及原理的更多相关文章
- 说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?
面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来先问你一些思考性的问题.原理,比如 kaf ...
- 阿里dubbo服务注册原理解析
阿里分布式服务框架 dubbo现在已成为了外面很多中小型甚至一些大型互联网公司作为服务治理的一个首选或者考虑方案,相信大家在日常工作中或多或少都已经用过或者接触过dubbo了.但是我搜了 ...
- 1.说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?
作者:中华石杉 面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来先问你一些思考性的问题.原 ...
- Dubbo API 笔记——Dubbo架构与使用
转载于: https://blog.csdn.net/benhuo931115/article/details/78457149 架构演变 单一应用架构 所有功能部署在一个应用上,用于简化增删改查工作 ...
- 分布式的几件小事(二)dubbo的工作原理
1.dubbo的工作原理 ①整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单 ...
- Dubbo架构深入篇----RPC实现总结
最近我拜读了mindwind的一片博客文章深入浅出 RPC - 深入篇,希望通过Dubbo深入学习RPC架构设计,在此结合RPC架构的原理,解析Dubbo是如何实现RPC架构的. RPC架构模型 RP ...
- HBase的基本架构及其原理介绍
1.概述:最近,有一些工程师问我有关HBase的基本架构的问题,其实这个问题仅仅说架构是非常简单,但是需要理解.在这里,我觉得可以用HDFS的架构作为借鉴.(其实像Hadoop生态系统中的大部分组建的 ...
- SQL Server AlwaysOn架构及原理
SQL Server AlwaysOn架构及原理 SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例 ...
- Dubbo架构设计详解-转
Dubbo架构设计详解 2013-09-03 21:26:59 Yanjun Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解 ...
随机推荐
- 「NOI2018」冒泡排序
「NOI2018」冒泡排序 考虑冒泡排序中一个位置上的数向左移动的步数 \(Lstep\) 为左边比它大的数的个数,向右移动的步数 \(Rstep\) 为右边比它大的数的个数,如果 \(Lstep,R ...
- Java四种权限修饰符 在创建类中的使用
四种权限修饰符 Java中有四种权限修饰符 public > protected > (default) >private 同一个类(我自己) YES YES YES YES同一个包 ...
- C#完成 使用异步线程定时更新窗体标签内容,并对标签内容进行求和显示
这是我在面试过程中遇到的一个小测试,很可惜,当天未能圆满完成,虽然第二天经过实际测试已经OK 了,但学无止境,继续努力吧,特将此代码贴在这里,供以后学习使用: namespace mytest { p ...
- C# vb .net图像合成-合成自定义路径
在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...
- soup.select的用法
1.通过标签选择 # 选择所有title标签 soup.select("title") # 选择所有p标签中的第三个标签 soup.select("p:nth-of-ty ...
- Throwable中几个常见方法。
getMessage();//获取异常信息,返回字符串.例如: toString();//获取异常类名和异常信息,返回字符串.例如: printStackTrace();//获取异常类名和异常信息,以 ...
- elementUI 2个输入框 时间区间月份选择
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue-使用计时器实现跑马灯效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python 之 sys.stdout输出不换行
在处理程序打进度条时,希望不换行显示进度,可以使用sys.stdout相关函数来进行处理. 1.print 输出不换行 首先可以使用print函数来整体输入,利用,结尾就可以在同一行内显示: # py ...
- Cheat Engine 基本用法
打开游戏 当前血量2620 打开Cheat Engine 扫描2620 掉点血 再次扫描2600 此时,会根据第一次扫描结果,再次扫描 扫描成功 将数据放到修改区,点击箭头 修改数据 双击Value进 ...