zookeeper在dubbo中干什么
本文旨在表述出自己对于zookeeper在dubbo的作用的初步理解
在对dubbo进行了初步的探索后,对于zookeeper在其中的作用不甚了解,因为本身对zookeeper就没有一个特别具体的概念,所以在这里思考一下,为什么要使用zookeeper或者说dubbo为什么要有注册中心
一对一的调用
Server A依赖Server B提供的RPC服务,因为Server B只有单一的一份,那么此时Server A只需要Server B提供RPC调用的ip和port就可以了
一对多的调用
Server B在用户量日益扩大的背景下,需要进行横向扩展,此时的Server B扩充到了3台服务器:01,02,03
这样做的好处是:
- 一台宕机,还有两个正常运转的Server
- 负载均衡(并不是zookeeper实现的,具体的负载均衡算法需要自己实现,zookeeper能提供给我们的是可用服务列表)
- ...
那么对于Server A来说,一下子有3个Server B可以使用,该如何选择呢?如果我选择了01,我还需要去关心,01是不是挂了,01挂了我选择谁呢?
对于Server B来说,我如何进行负载均衡呢?
其实对于Server A来说,我不想要关心Server B的主备情况,我希望Server B的整个分布对于我这个调用方是完全透明的,那么考虑一下这种结构:
其实这个结构很好理解:由于Server B的分布式部署,Server A有选择困难症不知道该选择哪一个B,那么我们就让中间人帮他选并告诉他,然后Server A知道要找谁了,就会去找相关的Server。图中黄色的线代表了注册通知过程,绿色的线代表了调用过程。
例如,Server B的3台服务器都注册一个“获取用户列表”的RPC接口到zookeeper中,Server A作为客户端连接zookeeper,向zookeeper讨要一个“获取用户列表”接口,拿到这个接口的相关信息之后,Server A再去调用具体的Server B的某一台服务器上的服务。即:注册中心(zookeeper)不做实际的方法调用,只做相关信息的传递者。
更多需要关注的细节:
- dubbo的在向zookeeper注册服务时,放了些什么数据进去?
- dubbo的负载均衡是dubbo自己做的,还是zookeeper做的?
- ...
zookeeper在dubbo中干什么的更多相关文章
- zookeeper在Dubbo中扮演了一个什么角色
作者:guxiangfly链接:https://www.zhihu.com/question/25070185/answer/188238271来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...
- Zookeeper笔记(四)Zookeeper在Dubbo中的应用
Zookeeper在Dubbo中的应用 Dubbo的架构 节点角色说明: Provider: 暴露服务的服务提供方.Consumer: 调用远程服务的服务消费方.Registry: 服务注册与发现的注 ...
- 【DUBBO】zookeeper在dubbo中作为注册中心的原理结构
[一]原理图 [二]原理图解释 流程:1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL2.服务消费者启动时订阅/dubbo/com.foo. ...
- zookeeper在Dubbo中角色与作用
作者:倪炜链接:http://www.zhihu.com/question/25070185/answer/86166486来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...
- zookeeper和dubbo中出现的问题
报错出现timeout关键字 解决:在服务发布时,添加timeout字段 <!-- 5.服务发布 --> <dubbo:service interface="com.sxt ...
- Zookeeper在Dubbo中的作用及Zk集群的选举原理
转自 : https://blog.csdn.net/zh15732621679/article/details/80723358
- 服务治理框架dubbo中zookeeper的使用
Zookeeper提供了一套很好的分布式集群管理的机制,就是它这猴子那个几月层次型的目录树的数据结构,并对书中的节点进行有效的管理,从而可以设计出多种多样的分布式的数据管理模型:下面简要介绍下zook ...
- 通过dubbo暴露接口调用方法,及基于zookeeper的dubbo涉及配置文件
现在很流行的Dubbo很多朋友都听说过吧,最近我也在看这方面的东西,分享先我的心得笔记. 先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的dubbo注册. 框架:springmvc ...
- SpringMVC、Zookeeper、Dubbo使用
联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前 ...
随机推荐
- 二、主目录 Makefile 分析(3)
2.8 编译选项 重新回到 主 makefile 中执行 2.8.1 u-boot 的编译顺序 代码166 到 189 行,这些是 u-boot 文件编译的顺序,由代码可以看到,首先是从cpu/$( ...
- 二、主目录 Makefile 分析(1)
2.1 uboot 版本号 uboot 的版本号分三个级别: VERSION:主版本号 PATCHLEVEL:次版本号,为补丁级别 SUBLEVEL:再次版本号 EXTRAVERSION:附加版本信息 ...
- u-boot移植(八)---代码修改---存储控制器--MMU
一.MMU介绍 1.1 虚拟地址与物理地址 建立两个应用程序,hello1.c和hello2.c,然后运行: hello1.c hello2.c 运行结果如下: 可以看到两个结果打印的地址是一样的,都 ...
- QToolButton按钮
继承 QAbstractButton QToolButton是与工具操作相关的按钮,通常和QToolBar搭配使用.QToolButton一般不用来显示文本,而显示图标QIcon 需要 from P ...
- 2018秋寒假作业6- -PTA编程总结3
PTA3抓老鼠啊~亏了还是赚了?思路: 首先定义变量并初始化为零,然后用if-else语句判断其关系和计算奶酪数量及盈利情况.
- 【文件】使用word的xml模板生成.doc文件
一.编辑模板 替换地方以变量标记如“案件编号”可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writeP ...
- php 设置中文 cookie, js获取
参考链接:http://www.nowamagic.net/librarys/veda/detail/1271 http://www.ruanyifeng.com/blog/2008/06/base6 ...
- Navicat Premium连接各种数据库
版本信息 Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL.MariaDB.SQL Server.Oracle.PostgreSQL 和 SQLite 数 ...
- 说几个python与c区别的地方以及静态变量,全局变量的区别
一: python代码: a = 2 def b(): print a a = 4 print a b() 在b函数中,有a=4这样的代码,说明a是函数b内部的局部变量,而不是外部的那个值为2的全局变 ...
- Netty通信原理
Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端,它极大的简化了TCP和UDP套接字服务器等网络编程. BIO(Blocking IO):每一个请求,一个S ...