您的位置:首页 > 财经 > 金融 > 用友财务软件的客服电话_平面设计作品欣赏_资源企业网站排名优化价格_微信怎么推广找客源

用友财务软件的客服电话_平面设计作品欣赏_资源企业网站排名优化价格_微信怎么推广找客源

2025/2/24 1:59:52 来源:https://blog.csdn.net/n04j04h06/article/details/145474945  浏览:    关键词:用友财务软件的客服电话_平面设计作品欣赏_资源企业网站排名优化价格_微信怎么推广找客源
用友财务软件的客服电话_平面设计作品欣赏_资源企业网站排名优化价格_微信怎么推广找客源

课程视频:【尚硅谷Zookeeper教程】

一、Zookeeper入门

概述

Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

Zookeeper从设计模式角度理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责同志已经在Zookeeper上注册的哪些观察者做出相应的反应。

特点

1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。

2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。

3)全局数据一致。每个Server保存一份相同的数据副本。

4)更新请求顺序进行。来自同一个Client的更新请求按发送顺序依次执行。

5)数据更新原子性。一次更新要么成功,要么失败。

6)实时性。在一定时间范围内,Client能读到最新数据。

数据结构

Zookeeper的数据模型结构类似树结构,每个节点称作一个ZNode。每个ZNode默认能存储1MB的数据,每个ZNode都可以通过路径唯一标识

应用场景

统一命名服务:在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。

统一配置管理:分布式环境下,一般要求所有节点的配置信息是一致的,对配置文件修改后,希望能够快速同步到各个节点上。

统一集群管理:分布式环境下,实时掌握每个节点的状态是必要的,可根据节点实时状态走做出一些调整。

服务器节点动态上下线:客户端能实时洞察到服务器上下线的变化。

软负载均衡:在Zookeeper中记录每台服务器的访问数,让访问最少的服务器去处理最新的客户端请求。

下载地址

官网首页:Index of /zookeeper

在Linux中可以用wget命令安装

wget  https://downloads.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz

二、Zookeeper安装

2.1本地模式安装

前提准备

1)安装jdk

2)解压Zookeeper.tar.gz到指定目录

tar -zxvf zookeeper-3.7.2.tar.gz -C /opt/module/

配置修改

1)将解压后的zookeeper的zoo_sample.cfg修改为zoo.cfg;

mv zoo_sample.cfg zoo.cfg    # 先进入zookeeper文件后再执行此条命令

2)打开zoo.cfg文件,修改dataDir路径;

gedit zoo.cfg# dataDir=/opt/module/zookeeper-3.7.2/zkData

3)在/opt/module/zookeeper-3.7.2/目录上创建zkData文件夹;

mkdir zkData

启动Zookeeper

 1)启动Zookeeper

bin/zkServer.sh start

2)查看进程是否启动

jps
# 出现QuorumPeerMain说明启动成功

3)查看状态

bin/zkServer.sh status

4)启动客户端

bin/zkCli.sh

5)退出客户端

quit

6)停止Zookeeper

bin/zkServer.sh stop

2.2配置参数解读

  • Zookeeper中的配置文件zoo.cfg中参数含义:
  • tickTime=2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位ms
  • initLimit=10:LF初始通信时限
  • syncLimit=5:LF同步通信时限
  • clientPort=2181:客户端访问端口号
  • dataDir:存储数据路径

三、Zookeeper内部原理

3.1选举机制

1)半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。

2)Zookeeper在配置文件中没有指定Master和Slave。但是Zookeeper工作时有一个节点是Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的。

a. 初始阶段
  • 每个节点向其他节点发送投票信息,包含 (myid, ZXID, epoch)

  • 节点初始默认投给自己。

b. 投票比较
  • 当节点收到其他节点的投票时,按上述规则比较:

    • 若收到的投票比自己的更优,则更新投票并转发新投票。

    • 否则忽略该投票。

c. 确定 Leader
  • 当某个节点获得 超过半数(Quorum) 的投票时,成为 Leader。

  • 其余节点成为 Follower/Observer,切换到 FOLLOWING 或 OBSERVING 状态

3.2节点类型

持久(Persistent)型节点

  • 客户端和服务器断开连接后,创建的节点不删除
  • 客户端与Zookeeper断开连接后,Zookeeper给该节点名称进行顺序编号

短暂(Ephemeral)型节点

  • 客户端和服务器断开连接后,创建的节点自己删除
  • 客户端与Zookeeper断开连接后,Zookeeper给该节点名称进行顺序编号

3.3 Stat结构体

1)czxid:创建节点的事务zxid值

2)ctime:znode被创建的毫秒数(从1970年开始)

3)mzxid:znode最后更新的事务zxid

4)mtime:znode最后修改的毫秒数(从1970年开始)

5)pZxid:znode最后更新的子节点zxid

6)cversion:znode子节点变化号,zonde子节点修改次数

7)dataversion:znode数据变化号

8)aclVersion:znode访问控制列表的变化号

9)ephemeralOwner:如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。

10)dataLength:znode的数据长度

11)numChileren:znode子节点数量

3.4监听器原理

1)首先要有一个main()线程

2)在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)。

3)通过connet线程将注册的监听事件发送给Zookeeper

4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。

5)Zookeeper监听到有数据或路径变化,就会将这个消息发送到listener线程。

6)listener线程内部调用了process()方法。

3.5写数据流程

客户端client发给Zookeeper的数据如何在各个服务器之间保持一致的问题。

1)Clinet向一个Server1上写数据,发送一个请求。

2)如果Server1不是Leader,那么Server1会将收到的请求进一步转发给Leader;然后Leader再将该请求广播给其他Server。各Server写成功后会通知Leader。

3)当Leader收到半数以上的Server数据写成功时,会告诉Server1数据写成功了。

4)Server1会进一步通知Client数据写成功了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com