关于Zookeeper的那些事

[dubbo实战] dubbo+zookeeper伪集群搭建 zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待。所以可以通过zookeeper集群解决。 一、为什么需要zookeeper呢?    大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。目前,大多数都要开发私有的协调程序,缺乏一个通用机制,协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器,zookeeper提供通用的分布式锁服务 阅读详情

转自:http://blog.youkuaiyun.com/l1028386804/article/details/52226265


官方网址:http://zookeeper.apache.org/

一、 什么是Zookeeper

Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务

它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等


二、  为什么使用Zookeeper?

大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)

目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制

协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器

ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

三、  Zookeeper能帮我们做什么?

Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.

HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.

四、Zookeeper的特性

Zookeeper是简单的

Zookeeper是富有表现力的

Zookeeper具有高可用性

Zookeeper采用松耦合交互方式

Zookeeper是一个资源库

五、Zookeeper的安装和配置(单机模式)

1、下载ZooKeeper:

http://labs.renren.com/apache-mirror/zookeeper/zookeeper-3.4.3/zookeeper-3.4.3.tar.gz

解压:tar xzf zookeeper-3.4.3.tar.gz/2

2、在conf目录下创建一个配置文件zoo.cfg
[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. tickTime=2000  
  2. dataDir=/Users/zdandljb/zookeeper/data  
  3. dataLogDir=/Users/zdandljb/zookeeper/dataLog          
  4.   
  5. clientPort=2181  
3、启动ZooKeeper的Server

sh bin/zkServer.sh start, 如果想要关闭,输入:zkServer.sh stop

六、Zookeeper的安装和配置(集群模式)

1、创建myid文件:

server1机器的内容为:1

server2机器的内容为:2

server3机器的内容为:3

2、在conf目录下创建一个配置文件zoo.cfg
[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. tickTime=2000  
  2. dataDir=/Users/zdandljb/zookeeper/data  
  3. dataLogDir=/Users/zdandljb/zookeeper/dataLog          
  4.   
  5. clientPort=2181                                  
  6.   
  7. initLimit=5                                       
  8.   
  9. syncLimit=2                                                 
  10.   
  11. server.1=server1:2888:3888                                      
  12.   
  13. server.2=server2:2888:3888                                     
  14.   
  15. server.3=server3:2888:3888  

七、Zookeeper的安装和配置(伪集群模式)

1、建了3个文件夹,server1 server2 server3,然后每个文件夹里面解压一个zookeeper的下载包

2、进入data目录,创建一个myid的文件,里面写入一个数字,server1,就写一个1,server2对应myid文件就写入2,server3对应myid文件就写个3

3、在conf目录下创建一个配置文件zoo.cfg

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. tickTime=2000  
  2.        dataDir=/Users/zdandljb/zookeeper/data  
  3.        dataLogDir=xxx/zookeeper/server1/           
  4.   
  5. clientPort=2181                                             
  6.   
  7. initLimit=5                                       
  8.   
  9. syncLimit=2                                                
  10.   
  11. server.1=server1:2888:3888                              
  12.   
  13. server.2=server2:2888:3888                                    
  14.   
  15. server.3=server3:2888:3888  

八、Zookeeper的数据模型

层次化的目录结构,命名符合常规文件系统规范

每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点

Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本

客户端应用可以在节点上设置监视器

节点不支持部分读写,而是一次性完整读写

九、Zookeeper的节点

Znode有两种类型,短暂的(ephemeral)和持久的(persistent)

Znode的类型在创建时确定并且之后不能再修改

短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点

持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除

Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL

十、Zookeeper的角色

领导者(leader),负责进行投票的发起和决议,更新系统状态

学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度

客户端(client),请求发起方

十一、Zookeeper的顺序号

创建znode时设置顺序标识,znode名称后会附加一个值

顺序号是一个单调递增的计数器,由父节点维护

在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

十二、Zookeeper的读写机制

Zookeeper是一个由多个server组成的集群

一个leader,多个follower

每个server保存一份数据副本

全局数据一致

分布式读写

更新请求转发,由leader实施

十三、Zookeeper的保证

更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行

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

全局唯一数据视图,client无论连接到哪个server,数据视图都是一致的

实时性,在一定事件范围内,client能读到最新数据

十四、Zookeeper的API接口

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. String create(String path, byte[] data,List<ACL> acl, CreateMode createMode)  
  2.   
  3. Stat exists(String path, boolean watch)  
  4.   
  5. void delete(String path, int version)  
  6.   
  7. List<String> getChildren(String path, boolean watch)  
  8.   
  9. List<String> getChildren(String path, boolean watch)  
  10.   
  11. Stat setData(String path, byte[] data, int version)  
  12.   
  13. byte[] getData(String path, boolean watch, Stat stat)  
  14.   
  15. void addAuthInfo(String scheme, byte[] auth)  
  16.   
  17. Stat setACL(String path, List<ACL> acl,int version)  
  18.   
  19. List<ACL> getACL(String path, Stat stat)   

十五、观察(watcher)

Watcher 在 ZooKeeper 是一个核心功能,Watcher 可以监控目录节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录节点上的 Watcher,从而每个客户端都很快知道它所关注的目录节点的状态发生变化,而做出相应的反应

可以设置观察的操作:exists,getChildren,getData

可以触发观察的操作:create,delete,setData

十六写操作与zookeeper内部事件的对应关系

 

十七、zookeeper内部事件与watcher的对应关系

 

十八、 写操作与watcher的对应关系

 

十九、ACL

每个znode被创建时都会带有一个ACL列表,用于决定谁可以对它执行何种操作


 

身份验证模式有三种:

digest:用户名,密码

host:通过客户端的主机名来识别客户端

ip: 通过客户端的ip来识别客户端

new ACL(Perms.READ,newId("host","example.com"));

                   这个ACL对应的身份验证模式是host,符合该模式的身份是example.com,权限的组合是:READ

二十、Znode的节点状态


每个ACL都是身份验证模式、符合该模式的一个身份和一组权限的组合

二十一、 Zookeeper工作原理

Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。

一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大部分的followers支持。

广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。

当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确的状态。

二十二、Leader选举

首先看一下选举的过程,zk的实现中用了基于paxos算法(主要是fastpaxos)的实现。具体如下;此外恢复模式下,如果是重新刚从崩溃状态恢复的或者刚启动的的server还会从磁盘快照中恢复数据和会话信息。(zk会记录事务日志并定期进行快照,方便在恢复时进行状态恢复)

每个Server启动以后都询问其它的Server它要投票给谁。

对于其他server的询问,server每次根据自己的状态都回复自己推荐的leader的id和上一次处理事务的zxid(系统启动时每个server都会推荐自己)

收到所有Server回复以后,就计算出zxid最大的哪个Server,并将这个Server相关信息设置成下一次要投票的Server。

计算这过程中获得票数最多的的sever为获胜者,如果获胜者的票数超过半数,则改server被选为leader。否则,继续这个过程,直到leader被选举出来。

leader就会开始等待server连接

Follower连接leader,将最大的zxid发送给leader

Leader根据follower的zxid确定同步点

完成同步后通知follower 已经成为uptodate状态

Follower收到uptodate消息后,又可以重新接受client的请求进行服务了


Observing: 观察状态,这时候observer会观察leader是否有改变,然后同步leader的状态;Following:  跟随状态,接收leader的proposal ,进行投票。并和leader进行状态同步

 

Looking: 寻找状态,这个状态不知道谁是leader,会发起leader选举;Leading:    领导状态,对Follower的投票进行决议,将状态和follower进行同步

二十三、Zookeeper示例代码

 

输出的结果如下:

已经触发了 None 事件!

testRootData   [testChildPathOne]

目录节点状态:[5,5,1281804532336,1281804532336,0,1,0,0,12,1,6]

已经触发了NodeChildrenChanged 事件!

testChildDataTwo

已经触发了NodeDeleted 事件!

已经触发了NodeDeleted 事件!

二十四、应用场景

应用场景1: 统一命名服务

n  分布式应用中,通常需要有一套完整的命名规则,既能够产生唯一的名称又便于人识别和记住,通常情况下用树形的名称结构是一个理想的选择,树形的名称结构是一个有层次的目录结构,既对人友好又不会重复。

n  Name Service 是 Zookeeper 内置的功能,只要调用 Zookeeper 的 API 就能实现

应用场景2: 配置管理

n  配置的管理在分布式应用环境中很常见,例如同一个应用系统需要多台 PCServer 运行,但是它们运行的应用系统的某些配置项是相同的,如果要修改这些相同的配置项,那么就必须同时修改每台运行这个应用系统的 PC Server,这样非常麻烦而且容易出错。

n  将配置信息保存在 Zookeeper 的某个目录节点中,然后将所有需要修改的应用机器监控配置信息的状态,一旦配置信息发生变化,每台应用机器就会收到 Zookeeper 的通知,然后从 Zookeeper 获取新的配置信息应用到系统中。

Zookeeper很容易实现这种集中式的配置管理,比如将APP1的所有配置配置到/APP1 znode下,APP1所有机器一启动就对/APP1这个节点进行监控(zk.exist(“/APP1″,true)),并且实现回调方法 Watcher,那么在zookeeper上/APP1 znode节点下数据发生变化的时候,每个机器都会收到通知,Watcher方法将会被执行,那么应用再取下数据即可 (zk.getData(“/APP1″,false,null));

 

应用场景3: 集群管理

n  Zookeeper 能够很容易的实现集群管理的功能,如有多台 Server 组成一个服务集群,那么必须要一个“总管”知道当前集群中每台机器的服务状态,一旦有机器不能提供服务,集群中其它集群必须知道,从而做出调整重新分配服务策略。同样当增加集群的服务能力时,就会增加一台或多台 Server,同样也必须让“总管”知道。

n  Zookeeper 不仅能够维护当前的集群中机器的服务状态,而且能够选出一个“总管”,让这个总管来管理集群,这就是 Zookeeper 的另一个功能 Leader Election。

应用集群中,我们常常需要让每一个机器知道集群中(或依赖的其他某一个集群)哪些机器是活着的,并且在集群机器因为宕机,网络断链等原因能够不在人工介入的情况下迅速通知到每一个机器。Zookeeper同样很容易实现这个功能,比如我在zookeeper服务器端有一个znode叫/APP1SERVERS,那么集群中每一个机器启动 的时候都去这个节点下创建一个EPHEMERAL类型的节点,比如server1创建/APP1SERVERS/SERVER1(可以使用ip,保证不重 复),server2创建/APP1SERVERS/SERVER2,然后SERVER1和SERVER2都watch /APP1SERVERS这个父节点,那么也就是这个父节点下数据或者子节点变化都会通知对该节点进行watch的客户端。因为EPHEMERAL类型节 点有一个很重要的特性,就是客户端和服务器端连接断掉或者session过期就会使节点消失,那么在某一个机器挂掉或者断链的时候,其对应的节点就会消失,然后集群中所有对/APP1SERVERS进行watch的客户端都会收到通知,然后取得最新列表即可。

 

Zookeeper 如何实现 Leader Election,也就是选出一个 Master Server;另外有一个应用场景就是集群选master,一旦master挂掉能够马上能从slave中选出一个master,实现步骤和前者一样,只是机器在启动的 时候在APP1SERVERS创建的节点类型变为EPHEMERAL_SEQUENTIAL类型,这样每个节点会自动被编号

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. zk.create("/testRootPath/testChildPath1","1".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);  
  2.   
  3. zk.create(“/testRootPath/testChildPath2”,“2”.getBytes(), Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);  
  4.   
  5. zk.create("/testRootPath/testChildPath3","3".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);  
  6.   
  7. zk.create("/testRootPath/testChildPath4","4".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);  
  8.   
  9. System.out.println(zk.getChildren("/testRootPath",false));  
  10.   
  11. 打印结果:[testChildPath10000000000,testChildPath20000000001, testChildPath40000000003, testChildPath30000000002]  

规定编号最小的为master,所以当我们对SERVERS节点做监控的时候,得到服务器列表,只要所有集群机器逻辑认为最小编号节点为master,那么master就被选出,而这个master宕机的时候,相应的znode会消失,然后新的服务器列表就被推送到客户端,然后每个节点逻辑认为最小编号节点为master,这样就做到动态master选举。

应用场景4:共享锁

共享锁在同一个进程中很容易实现,但是在跨进程或者在不同 Server 之间就不好实现了。Zookeeper 却很容易实现这个功能,实现方式也是需要获得锁的 Server 创建一个 EPHEMERAL_SEQUENTIAL 目录节点,然后调用 getChildren方法获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点,如果正是自己创建的,那么它就获得了这个锁,如果不是那么它就调用 exists(String path, boolean watch) 方法并监控 Zookeeper 上目录节点列表的变化,一直到自己创建的节点是列表中最小编号的目录节点,从而获得锁,释放锁很简单,只要删除前面它自己所创建的目录节点就行了。


应用场景5: 队列管理

Zookeeper 可以处理两种类型的队列:当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达,这种是同步队列;队列按照 FIFO 方式进行入队和出队操作,例如实现生产者和消费者模型

创建一个父目录 /synchronizing,每个成员都监控目录 /synchronizing/start 是否存在,然后每个成员都加入这个队列(创建/synchronizing/member_i 的临时目录节点),然后每个成员获取 / synchronizing 目录的所有目录节点,判断 i 的值是否已经是成员的个数,如果小于成员个数等待 /synchronizing/start 的出现,如果已经相等就创建 /synchronizing/start。

 

二十五、总结

Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的 NameNode,还有 Hbase 中 Master Election、Server 之间状态同步等。

Zoopkeeper提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型
Zookeeper的那些事 1、Zookeeper 的数据节点 Znode有两种类型,短暂的(ephemeral)和持久的(persistent) PERSISTENT-持久节点 除非手动删除,否则节点一直存在于Zookeeper上 EPHEMERAL-临时节点 临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。 PERSISTENT_SEQUENTIAL-持久顺序节点 基本特性同持久节点,只... 阅读详情

相关推荐

集群路径规划实战(一)之EGO-swarm环境搭建与调试

本文详细介绍了EGO-swarm分布式无人机集群运动规划系统的仿真环境搭建与调试全流程。内容涵盖ROS Melodic安装、代码获取、依赖库配置、编译问题解决(如multi_map_server头文件缺失)以及最终通过roslaunch启动集群仿真与Rviz可视化,为学习和研究集群路径规划算法提供了可运行的实战平台。

weixin_29243279的博客 249

Zookeeper之——关于Zookeeper的那些事

官方网址:http://zookeeper.apache.org/ 一、 什么是Zookeeper Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等 二、  为什么使用Zookeeper? 大部分分布式应用需要一个主控、协调器或控制器

冰河的专栏 1万+

基于JavaEE的银行大客户关系维护系统(JSP+java+springmvc+mysql+MyBatis)

基于JavaEE技术的大型银行客户关系管理系统可以实现客户信息的集中管理、客户需求的分析与挖掘、个性化的服务推荐等功能。+ Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。用户发送请求:用户通过浏览器或其他客户端向系统发送请求,请求访问特定的页面或执行特定的操作。前端展示结果:前端接收到后端返回的数据,根据需要进行展示。数据返回给前端:后端程序处理完业务逻辑后,将结果数据返回给前端。后端程序接收到请求后,根据请求的类型和参数进行相应的处理。

gp1052的博客 719

zookeeper学习(一)

Zookeeper 运用场景 1、利用 ZooKeeper 可以非常方便构建一系列分布式应用中都会涉及到的核心功能。 数据发布/订阅 负载均衡 命名服务 分布式协调/通知 集群管理 Master 选举 分布式锁 分布式队列 多个开源项目中都应用到了 ZooKeeper,例如 HBase, Spark, Flink, Storm, Kafka, Dubbo 等等。 1.1 数据发布/订阅 数据发布/订阅的一个常见的场景是配置中心,发布者把数据发布到 ZooKeeper 的一个或一系列的节点上,供订阅者进行

qq_41842356的博客 317

Spring Boot应用Docker化实战:从Dockerfile编写到镜像推送完整流程

本文详细介绍了将Spring Boot应用Docker化的完整实战流程。从环境准备、项目审视,到编写高效且安全的Dockerfile,重点讲解了多阶段构建、镜像层优化、Spring Boot分层JAR等核心技巧,并涵盖了镜像构建、验证、调试以及最终推送至仓库并集成CI/CD的最佳实践,帮助开发者构建生产级Docker镜像。

butter的博客 1023

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

一文读懂Zookeeper

集中式系统,集中式系统中整个项目就是一个独立的应用,整个应用也就是整个项目,所有的东西都在一个应用里面。部署到一个服务器上。布署项目时,放到一个tomcat里的。也称为单体架构原生Java API(不推荐使用)​ ZooKeeper 原生Java API位于org.apache.ZooKeeper包中​ ZooKeeper-3.x.x. Jar (这里有多个版本)为官方提供的 java APIApache Curator(推荐使用)

CODEING一场空的博客 7886

CANOe实战指南 - 从入门到精通的全流程解析

本文是CANOe实战指南,全面解析从入门到精通的全流程。内容涵盖CANOe软件的核心功能仿真、测试与分析,详细指导安装配置、工程创建、CAN信号收发、UDS诊断通信、CAPL自动化编程以及Panel面板设计。通过实战案例,帮助汽车电子工程师快速掌握这一行业标杆工具,构建自动化测试环境,提升开发与测试效率。

pear55的博客 574

进阶分布式系统架构系列(五):Zookeeper 节点(znode)详解

点击下方名片,设为星标!回复“1024”获取2TB学习资源!前面介绍了 Zookeeper基础概念、应用场景、安装部署、常用管理命令等相关的知识点,今天我将详细的为大家介绍Zookeeper 节点(znode)相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发支持一波!!!今天我们来聊聊 ZooKeeper 中,关于节点(znode)的一些概念。节点详解Znode有两种,分别为临时节...

民工哥的博客 2103

【瑞芯微px30】【RTL8363】【一】驱动移植-网卡驱动概述

linux rtl8363驱动移植

weixin_34799243的博客 1179

基于高光谱的物质反演与分类 — 技术文章(原理详解 + 深度代码实现)

高光谱遥感 / 近场光谱采集产生逐像素上百波段的光谱曲线,是物质识别与定量反演(abundance / composition estimation)和语义分类(landcover / material class)的一把利器。本文第一部分对常用模型(线性混合模型、非线性辐射传输、稀疏反演、降维与特征选择、分类器/神经网络)进行数学推导与理论分析;第二部分给出两套完整实现:A. 基于 LMM 的约束最小二乘 / 稀疏反演流水线(含端到端评估);

VectorShift的博客 219

zookeeper那些事

一、 ZooKeeper 简介 ZooKeeper 是一个开源的分布式协调服务,ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper成为Hadoop,HBase和其他分布式框架使用的有组织服务的标准。 例如,Apache HBase使用ZooKeeper跟踪分布式数据的状态。 二、 ZooKeeper 的作用 1.1 配置管理 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都 是使用配置

qq_38294614的博客 350

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具,广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置,以高效监控服务,并确保系统的可靠性和可维护性。

颜淡慕潇 2万+

zookeeper的一些事

&lt;1&gt;ZooKeeper的安装与部署: 安装jdk 安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.6版本。 解压zookeeper-3.4.6至D:\machine\zookeeper-3.4.6. 在D:\machine 新建data及log目录。 一、系统要求 ZooKeeper...

gaston的博客 257

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ZooKeeper那些事

1、一次性无论是服务端还是客户端,一旦一个 Watcher 被触发,Zookeeper 都会将其从相应的存储中移除。这样的设计有效的减轻了服务端的压力,不然对于更新非常频繁的节点,服务端会不断的向客户端发送事件通知,无论对于网络还是服务端的压力都非常大。2、客户端串行执行客户端 Watcher 回调的过程是一个串行同步的过程。3、轻量3.1、Watcher 通知非常简单,只会告诉客户端发生了事件,而不会说明事件的具体内容。

sunjie12311的博客 200

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

关于Zookeeper不得不说的事

在说完全分布式模式之前,必须重点提一下Zookeeper。虽然Zookeeper不是HBase的组成部分,但它却是其不可或缺的依赖组建。你必须完全理解Zookeeper在HBase中的作用和地位,才能避免在接下来的操作中带来的问题。 首先你需要知道:HBase自带了一个Zookeeper,而且会默认启动自已的Zookeeper。 Zookeeper进程的名字: 如果HBase用的是自已的Zookeeper,那你在jps中看到的Zookeeper名字是HQuorumPeer。如果使用的是外部的Zookeepe

Rocky 664

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Zookeeper中Session Timeout的那些事

前言: RDS系统致力于MySQL数据的高可用,高可靠,高性能以及在线扩展功能,实现这些特性的主要逻辑功能都运行在管理服务器上,一旦管理服务器宕机,数据库的在线扩展功能/备份功能/故障恢复功能等都无从谈起。然而,之前RDS系统管理服务器却是单点服务,为了保证整个系统的稳定性,管理服务器需要实现高可用,结合当前主流的高可用方案,决定使用Zookeeper来实现服务的高可用。 基本设计...

varyall的专栏 5097

Zookeeper 要避免的事

配置ZooKeeper时,要避免的一些常见问题: 不一致的服务器列表 客户端使用的ZooKeeper服务器列表,要和每台ZooKeeper服务器有的一致; 客户端列表可以是服务端列表的子集; 每台ZooKeeper服务器的列表也要一致; 事务日志的位置不正确 ZooKeeper最大的性能问题,是事务日志.ZooKeeper在返回响应前会同步事务到存储媒介. 独立的事务日志设备,是稳定的好性...

chenzl的专栏 561

[hadoop那些事]Linux的zookeeper的安装

推荐一首音乐:一些规律(许飞/姚晨) 巨好听 hadoop的搭建请移步这里个人感觉还算详细吧。 还有一些基本操作此篇文章不会再做赘述。 如图将zookeeper传入虚拟机中,并且解压。 1.设置hosts 192.168.111.147 master master.root 192.168.111.137 slave1 slave1.root 192.168.111.132 slave2 sl...

qq_44172732的博客 708

Zookeeper的Leader选举哪些事

阅读文本大概需要3分钟。 Leader选举是保证分布式数据一致性的关键所在。Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集...

天行健,君子以自强不息;地势坤,君子以厚德载物。 214

Zookeeper那些事

一、 什么是Zookeeper Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等 二、 为什么使用Zookeeper? 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) 目前,大部分应用需要开...

weixin_30791095的博客 72

Zookeeper 能干的事这么多?

确保数据在集群中的一致性,适用于对数据一致性要求高的场景。。Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心。服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。所以zookeeper可以看作是一个。文件系统指的是zookeeper可以存储数据,尽管数据量比较少(默认只有1M),但还是像文件一样可以存储的;

1307

Zookeeper 那些事(一)

Zookeeper 是一个**开源分布式协调框架**,是由Apache Hadoop 的子项目,主要用来处理分布式集群中应用的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并且以一系列简单易用的接口提供给用户使用。它的官方网址为:它的示例图如下:ZooKeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制)。提供基。

随时分享高质量技术文章 957

zookeeper 认证_Zookeeper的Leader选举哪些事

Leader选举是保证分布式数据一致性的关键所在。Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况。在讲解Leader选举前先了解一下Zookeeper节点4种可能状态和事务ID概念。0x01、Zookeeper节点状态LOOKING:寻找Leader状态,处于该状态需要进入选举流程LEADING:领导者状态,处于该状态的节点...

weixin_39615219的博客 79
上一篇: Java Web前端到后台常用框架介绍
下一篇: Java应用架构的演化之路
andybbc
博客等级 码龄11年 64粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值