第二天 Linux 增强 zk

本文深入讲解了ZooKeeper的基本概念,包括存储系统的设计原理、主从及主备集群的工作方式、数据一致性保证机制等,并介绍了如何搭建ZooKeeper集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储系统:存储文件 目录树的概念
小文件:存储有限制

分布式:意味着本身是分布式的软件

分布式:意味着多台机器组成集群

主从集群
主角色 主节点 master leader 老大 大哥
从角色 从节点 slave follower 小弟
主从角色各司其职,从角色受到主角色的管理
常见的是一主多从

主备集群
主角色 主节点
备角色 备节点
解决的单点故障 保证高可用 容错
主备角色职责一模一样
同一时刻有且只有一个干活 干活的叫做active 备用的叫做standby
当active挂掉的时候 备顶上
常见的是一主一备

zk就是一个主从的集群。

  1. 全局数据一致:集群中每个服务器保存一份相同的数据副本,client 无
    论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;
  2. 可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。
  3. 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上
    消息 a 在消息 b 前发布,则在所有 Server 上消息 a 都将在消息 b 前被
    发布;偏序是指如果一个消息 b 在消息 a 后被同一个发送者发布,a 必
    将排在 b 前面。
  4. 数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失
    败,不存在中间状态;
  5. 实时性:Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的
    更新信息,或者服务器失效的信息。
    Zookeeper

linux 环境变量文件 /etc/profile
source /etc/proflie 重新加载环境变量文件 使修改的环境变量立即生效


zk集群搭建基础环境
1.确认hosts文件
2.确认1到2 到3的免密登陆
3.检测集群时间是否同步
4.检测防火墙是否关闭

zk启动命令 /export/servers/zookeeper/bin/zkServer.sh start

jps jdk提供的 用来查看本机有哪些java程序
QuorumPeerMain—>zk进程


当使用ssh登陆自己的时候 实际上底层是重新打开了一个新的进程去登陆自己
所以需要密码验证
一般来说在企业中 会在跳板机或者主角色所在的机器上配置好自己到自己的免密登录
自己到自己的免密登录很多时候都是应用在用脚本控制自己本机上的服务

zk一键脚本:

!/bin/bash

for host in {node-1,node-2,node-3}
do
ssh $host “source /etc/profile; /export/servers/zookeeper/bin/zkServer.sh start”
done


标准文件系统特性(Windows文件系统 linux文件系统)
1、文件系统从树根开始 /
2、根目录下可以创建文件夹 文件
3、文件夹下面可以创建下一级(文件夹 文件)
文件下面不能创建下一级
4、文件可以保存数据 文件夹不可以
5、访问资源 /xx/cc/1.txt path路径的唯一性
6、同类型的文件、文件夹不能重名


-s :序列化

-e :临时、短暂

ephemeral Owner短暂的拥有者:如果该节点是短暂节点 这个属性值就是创建该节点的会话id
如果发现该属性值是0 意味着该节点不是短暂节点

Output quota for /allen count=3,bytes=-1
表示最终的限制情况 count限制子节点个数,bytes限制数据长度,-1表示无限制

Output stat for /allen count=1,bytes=3
表示当前的限制情况 在统计子节点的时候 会把自己也算进去

Quota限制是软性限制,超出限制后 并不会阻碍你继续操作
只是在日志中温柔的警告你
当我们需要进行限制的时候 只能通过监控日志文件判断是否超出限制。


监听机制:
1、设置监听事件(你对什么感兴趣)
2、监听执行,感兴趣的事件发生,监听触发
3、触发告知设置监听的人

客户端设置、注册监听
get /itcast watch
监听触发
set /itcast 123123
通知给客户端

WatchedEvent state:SyncConnected type:NodeDataChanged path:/itcast

eclipse
workspace–>project
idea
project—>module
推荐使用的是一个project对应一个module

-src
-main
-java
-resource
-test
-java
-resource

main—> psvm

System.out.println()–>sout

zk集群选举:
全新集群–刚搭建起来 米有任何数据
非全新集群–已经运行过一段时间

非全新集群:优中择优 找取数据版本号最新的 找取状态最稳定的


TCP:建立连接 不打包 建立传输管道(IO)
服务端:ServerSocket
客户端:Socket
UDP:不需要建立连接 打包
客户端:DatagramSocket
服务端:DatagramSocket
数据包:DatagramPacket


阻塞非阻塞 同步非同步
前提:程序是运行在系统之上的,任何形式的IO操作都需要系统的支持

阻塞非阻塞:站在程序的角度看问题
如果发起IO请求,系统没有准备好
如果等待—》阻塞
如果不等待,通过线程不断轮询,直到数据准备好,返回接着处理–》非阻塞

同步非同步:站在系统的角度看问题
如果程序发起IO,资源并木有准备好
如果不响应程序—》同步
如果先返回一个标记,告诉程序数据转变好了的话,按照标记去获取数据即可–》非同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值