zookeeper学习笔记-zookpeeper集群

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


[img]http://dl2.iteye.com/upload/attachment/0117/2398/2240f391-f643-328f-a77c-247712c82682.png[/img]


分布式系统理论之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文件如图

[img]http://dl2.iteye.com/upload/attachment/0117/2413/c9f58fea-42c8-3b10-aa73-8aa0951a75fe.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0117/2415/05442683-c15a-3e84-ad1a-53e272d5ccbf.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0117/2417/2e77d54c-1041-3225-b9b1-af6ffae796fb.png[/img]
在每个dataDir=/tmp/zookeeper1目录下创建文件mypid,分别写入1,2,3到zookeeper1,zookeeper2,zookeeper3
配置完成,启动三个zk如图


[img]http://dl2.iteye.com/upload/attachment/0117/2419/946ca130-0e1a-3384-8b46-418bf264c6a0.png[/img]

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

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");

}

}


[img]http://dl2.iteye.com/upload/attachment/0117/2447/4d5e6361-d0a5-3d20-b436-4cd7519ad474.png[/img]
如上图每个节点都有zkclient这个节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值