shell & zookeeper
局部变量
#!/bin/hash
str = "hello"
echo ${str}world
环境变量,系统已经定义好的变量
运算符
注意是否留空格很重要
#!/bin/hash
a=1;
b=2;
echo `expr $a + $b`;
echo $((a+b));
echo $[a+b];
然后在做乘法的时候要加
/*
for循环的写法
#!/bin/hash
for N in 1 2 3
do
echo $N
done
zookeeper的官方定义是,管理分布式系统中一致性的问题
翻译成大白话就是,现在有3个进程在3台主机上,与java里面3个进程在1台主机上不同(因为java直接用锁就可以解决3个进程同时进行的问题,锁住期中两个进程,进行另外一个进程)。
但是如果是3台主机分别有3个进程,那么网络问题如何控制?这里就要引入zookeeper。
Zookeeper 里面有3个角色
Leader - 主要执行写操作,并把写好的东西转发给别人
follower- 主要执行读操作
observer -主要执行读操作
有两种模式:
- 推模式- 主动将数据更新发给订阅用户
- 拉模式- 获取数据
心跳检测:
检查不同机器之间是否能正常工作
Leader 选举
服务器启动的时候选leader
- 每个sever发出一个投票
myid- 越大越好,相当于投票的编号
ZXID- 事务编号,这个值越大代表这个事务越新
sever上来会先给自己投一票
-
sever接受每个人给它的投票
-
处理投票- 服务器会对票进行pk
首先投票数要过半
先查ZXID- 比较大的话,选为leader
再查myid
Zookeeper 的 watcher机制
- 发布和订阅
- 监控集群中主机的存活状态