本文旨在表述出自己对于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中干什么的更多相关文章

  1. zookeeper在Dubbo中扮演了一个什么角色

    作者:guxiangfly链接:https://www.zhihu.com/question/25070185/answer/188238271来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  2. Zookeeper笔记(四)Zookeeper在Dubbo中的应用

    Zookeeper在Dubbo中的应用 Dubbo的架构 节点角色说明: Provider: 暴露服务的服务提供方.Consumer: 调用远程服务的服务消费方.Registry: 服务注册与发现的注 ...

  3. 【DUBBO】zookeeper在dubbo中作为注册中心的原理结构

    [一]原理图 [二]原理图解释 流程:1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL2.服务消费者启动时订阅/dubbo/com.foo. ...

  4. zookeeper在Dubbo中角色与作用

    作者:倪炜链接:http://www.zhihu.com/question/25070185/answer/86166486来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...

  5. zookeeper和dubbo中出现的问题

    报错出现timeout关键字 解决:在服务发布时,添加timeout字段 <!-- 5.服务发布 --> <dubbo:service interface="com.sxt ...

  6. Zookeeper在Dubbo中的作用及Zk集群的选举原理

    转自 : https://blog.csdn.net/zh15732621679/article/details/80723358

  7. 服务治理框架dubbo中zookeeper的使用

    Zookeeper提供了一套很好的分布式集群管理的机制,就是它这猴子那个几月层次型的目录树的数据结构,并对书中的节点进行有效的管理,从而可以设计出多种多样的分布式的数据管理模型:下面简要介绍下zook ...

  8. 通过dubbo暴露接口调用方法,及基于zookeeper的dubbo涉及配置文件

    现在很流行的Dubbo很多朋友都听说过吧,最近我也在看这方面的东西,分享先我的心得笔记. 先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的dubbo注册. 框架:springmvc ...

  9. SpringMVC、Zookeeper、Dubbo使用

    联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前 ...

随机推荐

  1. 微信现金红包 python

    微信现金红包发送接口,好像没法限制一个用户一个活动只能领取一次红包,在调用红包接口上,自己做了限制 REDPACK_RECORD 建表sql -- Create table create table ...

  2. centos7 pgpool+postgresql

    安装postgresql CentOS7安装并配置PostgreSQL 安装pgpool rpm -ivh http://www.pgpool.net/yum/rpms/3.7/redhat/rhel ...

  3. 02、@PropertySource指定配置文件的属性映射到JavaBean属性

    零.@PropertySource 功能类似于 <context:property-placeholder location="classpath*:/config/load.prop ...

  4. kan

    http://blog.csdn.net/yahohi/article/details/7427724 http://duanhengbin.iteye.com/blog/1706635 http:/ ...

  5. ElasticSearch学习

    官方文档 https://www.elastic.co/cn/ http://www.learnes.net/

  6. Activity,Fragment的状态保存

    http://blog.csdn.net/hqdoremi/article/details/26376797 https://blog.csdn.net/u013588712/article/deta ...

  7. 深入解析内存原理:SRAM的基本原理

    1. SRAM芯片的引脚定义早期的SRAM 芯片采用了20 线双列直插(DIP:Dual Inline Package)封装技术,它们之所以具有这么多的针脚,是因为它们必须:• 每个地址信号都需要一根 ...

  8. eclipse自动编译

    自动编译:对java应用没有什么意义,对web应用来说,当修改了代码时,会自动帮你编译并发布到web容器中去,省的重启web容器了. build:编译,Eclipse的编译是基于时间戳的判断机制的.c ...

  9. 执行update语句mysql5.6报错ERROR 1292 (22007): Truncated incorrect DOUBLE value: '糖糖的坤大叔'

    执行修改语句update tbl_user_details set nickname=CONCAT("用户",yunva_id) where nickname = yunva_id ...

  10. S5PV210 LCD显示

    第一节 S5PV210 LCD控制器要使一块LCD正常显示文字或图像,不仅需要LCD驱动器,还需要相应的LCD控制器.LCD控制器的主要作用是将在系统存储器中的显示缓冲区中的LCD图像数据传送到外部L ...