zookeeper学习笔记-zookpeeper集群

Zookeeper集群
1.是一种对等集群,所有节点(机器)数据都一致
2. 集群节点之间靠心跳感知彼此的存在
3. 所有写操作都在主节点上,其他节点只能读,虽然可以接收写请求,但是内部会把写操作转给主节点
4. 通过选举机制选出主节点,从而保障了主节点的高可用
5.至少3个节点,必须是基数个节点,这个和zk的选举算法有关系的,以后介绍
6. 当一半以上的节点数据写入成功后,则返回写入成功,是最终一致性策略
Zookeeper集群





分布式系统理论之CAP定义
1. 一个分布式系统不可能同时时满足一致性(Consistency),可用性(Availability)和分区容忍性(Partition tolerance)这些基本需求,只能满足其中的两项
CAP解读
1.一致性:分布式环境下,一致性主要是指数据在多个副本间是否保持一致
2.可用性:是指系统提供的服务必须是一直处于可用的状态,对于用户的请求总是能够在有限的时间内返回结果,有限
时间强调的是用户能接受的时间
– 可用性和常说的高可用性的可用性不是一个概念,即如果服务访问不到,不属于没有可用性
– P:集群出现网络割裂(即脑裂)时,集群还能继续提供一定的可用性和一致性,除非整个网络不可用
– 只能满足其中的两项不是另外一项就完全没有,而是要求没有那么严格
3. 分区容忍是分布式系统必须有的特性,因为网络不可靠,所以只能在C和A中进行平衡


分布式系统理论之BASE理论
BASE是Basically Available(基本可用), Soft state(软状态)和Eventually Consistent最终一致性)几个短语的简写,它是对CAP中的一致性和可用性权衡的结果
– BASE的核心思想是即使无法做到强一致性,但是每个应用可以根据自身的业务特点,采用适当的方式
达到最终一致性,同时获取到系统可用性
1.BASE之基本可用
– 响应时间上的损失:有些要求1s内返回,有些要求5s内返回
– 功能上的损失:对于电商来说,某些区域可能不能购买某些商品,又或者大促时,部分消费者被引流
到降级的页面
2.BASE之弱状态
– 也称为软状态,是指允许系统中的数据存在中间状态,并认为该状态不会影响系统的整体可用性,即
允许系统在不同节点的数据副本之间存在一定的延时
– 举例:双11的时候,我在京东购买东西,明明已经付款成功,但是系统提示的还是未付款
3. BASE之最终一致性
– 系统中的数据副本在经过一段时间同步后,最终能够达到一个一致的状态

集群搭建
把安装的zk复制成3份分别改写zoo.cfg文件如图





在每个dataDir=/tmp/zookeeper1目录下创建文件mypid,分别写入1,2,3到zookeeper1,zookeeper2,zookeeper3
配置完成,启动三个zk如图




修改任何一个节点都会同步其他节点,简单的同步完成

java客户端代码如下
 
package com.xue.zk1;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooDefs.Ids;

public class ZkclientTest {
	ZooKeeper zkclient = null;
	public ZkclientTest() throws Exception {
		this.zkclient = new ZooKeeper("localhost:2181,localhost:2182,localhost:2183", 5000, null);
	}

	public void createPersistentNode(String path, Object data) throws Exception, InterruptedException {
		zkclient.create(path, "meiren".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
	}

	public static void main(String[] args) throws Exception {
		ZkclientTest zt = new ZkclientTest();
		zt.createPersistentNode("/zkclient", "zkclientnode2");

	}

}



如上图每个节点都有zkclient这个节点

猜你喜欢

转载自blueyan.iteye.com/blog/2296686