欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

zookeeper学习笔记-zookpeeper集群

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


zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群


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

zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群

zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群
zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群
在每个dataDir=/tmp/zookeeper1目录下创建文件mypid,分别写入1,2,3到zookeeper1,zookeeper2,zookeeper3
配置完成,启动三个zk如图


zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群

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

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

	}

}


zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群
如上图每个节点都有zkclient这个节点
  • zookeeper学习笔记-zookpeeper集群
            
    
    博客分类: 开源框架 zkzookeeper集群
  • 大小: 72.5 KB
相关标签: zk zookeeper集群