zookeeper 初识

1.Zookeeper 是什么?

Zookeeper 是一个分布式协调服务,基于它实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁和分布式队列等功能等。

Zookeeper 是一个高可用的分布式管理与协调框架,基于ZAB算法(原子消息广播协议)的实现。该框架能够很好的保证分布式环境中数据的一致性。也正是基于这样的特点,使得Zookeeper成为了解决分布式一致性问题的利器。

 

Zookeeper的特性:

顺序一致性:从一个客户端发起的事务请求,最终将严格地按照其发起的顺序被应用到Zookeeper 中去

原子性:所有事务请求的处理结果在整个集群中所有的机器上的应用情况都是一致的,也就是说,要么整个集群所有的机器都成功,要么都失败,不会出一部分成功 一部分失败。

单一视图:无论客户端连接的是哪一个zookeeper服务器,其看到的服务端数据都是一致的。

可靠性:一旦服务器成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务器端状态将会被一致保留下来。除非有另外一个事务对其更改。也就是如果集群的各个节点出现网络问题 未同步成功,那么客户端会一直等待服务器端的响应,或者返回超时异常。

实时性:通常所说的实时性就是指一旦事务被成功应用,那么客户端就能立刻从服务器上获取变更后的数据,仅仅能保证一段时间内,客户端最终一定能从服务器端读取最新的数据状态。

 

 

 

Zookeeper 的核心是原子广播:

这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。 各个节点之间同步的算法 就是 Paxos,它是一个基于消息传递的一致性算法。

 

为了保证事务的顺序一致性:

zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

每个Server在工作过程中有三种状态

    LOOKING:当前Server不知道leader是谁,正在搜寻
    LEADING:当前Server即为选举出来的leader
    FOLLOWING:leader已经选举出来,当前Server与之同步

全局数据一致性:

 每个server保存一份相同的数据副本,client无论连接到哪个 server,数据都是一致的。

2、Zookeeper 设计目标:

1、简单的数据结构。就是以简单的树形结构来进行相互协调的

2、可构件集群。一般要基数个节点,只要集群中半数以上正常运行就能对外提供服务

3、顺序访问。每个客户端请求都会分配一个全局唯一的递增编号,这个编号反应了所有事务操作的先后顺序

4、高性能。它是将全量数据存储在内存中,并直接服务与所有的非事务请求,尤其在读场景下性能突出,但是它不适合存储大量数据。

3、Zookeeper的结构

 Zookeeper会维护一个具有 层次关系的数据接口,它类似于一个标准的文件系统。

每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。 

 

有四种类型的znode

1、PERSISTENT-持久化目录节点 :客户端与zookeeper断开连接后,该节点依旧存在 

2、PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 

客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 

3、EPHEMERAL-临时目录节点  

客户端与zookeeper会话结束,该节点被删除 ,多用于处理分布式锁

4、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 

客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号 

4、Zookeeper组成

5、Zookeeper应用场景

配置管理、数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁和分布式队等

 

命名服务 

  在分布式环境下,经常需要对应用/服务进行统一名称,便于识别。例如:IP不容易记住,而域名容易记住

 

配置管理

配置信息写入zookeeper上的znode。

各个客户端服务器监听这个znode。

统一集群管理

1) 分布式环境中,实时掌握每个节点的状态是必要的。

  可根据节点实时状态做出一些调整

2)Zookeeper可以是实现实时监控节点状态变化

  可将节点信息写入Zookeeper上的一个Znode

  监听这个znode可获取它的实时状态变化

服务器动态上下线

客户端能实时洞察到服务器上下线的变化

 

软负载均衡

 在Zookeeper中记录每台服务器的访问次数,让访问最少的服务器去处理最新的请求

下一节链接地址http://blog.youkuaiyun.com/lm324114/article/details/78376776

 

一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值