• ZooKeeper与*模式


      为了让服务器之间可以通信,服务器间需要一些联系信息。理论上,服务器可以使用多播来发现彼此,但我们想让ZooKeeper集合支持跨多个网

    络而不是单个网络,这样就可以支持多个集合的情况。

    为了完成这些,我们将要使用以下配置文件:
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=./data
    clientPort=2181
    server.1=127.0.0.1:2222:2223
    server.2=127.0.0.1:3333:3334
    server.3=127.0.0.1:4444:4445

      每一个server.n项指定了编号为n的ZooKeeper服务器使用的地址和端口号。每个server.n项通过冒号分隔为三部分,第一部分为服务器n的IP地址或主机名(hostname),第二部分和第三部分为TCP端口号,分别属于仲裁通信和群首选举。因为我们在同一个机器上运行三个服务器进程,所以我们需要在每一项中使用不同的端口号。通常,我们在不同的服务器上运行每个服务器进程,因此每个服务器项的配置可以使用相同的端口号

    我们还需要分别设置data目录,我们可以在命令行中通过以下命令来
    操作:

    mkdir z1
    mkdir z1/data
    mkdir z2
    mkdir z2/data
    mkdir z3
    mkdir z3/data

     当启动多个服务器时,我们需要知道启动的是哪个服务器。一个服务器通过读取data目录下一个名为myid的问件来获取服务器ID信息。可以通过以下命令来创建这些文件:

    echo 1 > z1/data/myid
    echo 2 > z2/data/myid
    echo 3 > z3/data/myid

       当服务器启动时,服务器通过配置配件中的dataDir参数来查找data目录的配置。它通过mydata获得服务器ID,之后使用配置问件中server.n对应的项来设置端口并监听。当在不同的机器上运行ZooKeeper服务器进程时,它们可以使用相同的客户端端口和相同的配置问件。但对于这个例子,在一台服务器上运行,我们需要定义每个服务器的客户端端口。

    现在可以启动服务器,让我们从z1开始:

    cd z1
    $ {PATH_TO_ZK}/bin/zkServer.sh start ./z1.cfg

    我们使用zkCli.sh来访问集群:

    $ {PATH_TO_ZK}/bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

    注意:简单的负载均衡
    客户端以随机顺序连接到连接串中的服务器。这样可以用ZooKeeper
    来实现一个简单的负载均衡。不过,客户端无法指定优先选择的服务器来
    进行连接。例如,如果我们有5个ZooKeeper服务器的一个集合,其中3个
    在美国西海岸,另外两个在美国东海岸,为了确保客户端只连接到本地服
    务器上,我们可以使在东海岸客户端的连接串中只出现东海岸的服务器,
    在西海岸客户端的连接串中只有西海岸的服务器。

  • 相关阅读:
    NOIp199Cantor表
    NOIP2001数的计算
    NOIP2010排队接水
    普及组2006第三题jam的计数法
    2013提高组积木大赛
    洛谷1223排队接水
    9.3noip模拟赛第一题卡片
    2002普及组第四题过河卒
    细胞分裂(NOIP2009 普及组第三题)
    道路游戏(NOIP2009 普及组第四题)
  • 原文地址:https://www.cnblogs.com/duan2/p/9011762.html
Copyright © 2020-2023  润新知