• 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做的?
    • ...
  • 相关阅读:
    C#的一些基本问题
    Mac ssh连接远程服务器,并实现文件的上传和下载
    Redis 持久化
    Redis 数据类型
    @dynamic 与 @synthesize 关键词详解
    Redis介绍及安装
    crontab的用法
    修改文件权限
    Linux目录结构
    一些命令
  • 原文地址:https://www.cnblogs.com/shiyu404/p/8945542.html
Copyright © 2020-2023  润新知