悲观锁又叫悲观并发锁,是数据库中一种非常严格的锁策略,具有强烈的排他性,能够避免不同事务对同一数据并发更新造成的数据不一致性,在上一个事务没有完成之前,下一个事务不能访问相同的资源,适合数据更新竞争非常激烈的场景
相比悲观锁,乐观锁使用的场景会更多,悲观锁认为事务访问相同数据的时候一定会出现相互的干扰,所以简单粗暴的使用排他访问的方式,而乐观锁认为不同事务访问相同资源是很少出现相互干扰的情况,因此在事务处理期间不需要进行并发控制,当然乐观锁也是锁,它还是会有并发的控制!对于数据库我们通常的做法是在每个表中增加一个version版本字段,事务修改数据之前先读出数据,当然版号也顺势读取出来,然后把这个读取出来的版本号加入到更新语句的条件中,比如,读取出来的版本号是1,我们修改数据的语句可以这样写,update 某某表 set 字段一=某某值 where id=1 and version=1,那如果更新失败了说明以后其他事务已经修改过数据了,那系统需要抛出异常给客户端,让客户端自行处理,客户端可以选择重试
6.ACL权限控制
ACL是Access Control Lists的简写,ZooKeeper采用ACL策略进行权限控制,有以下权限:
CREATE:创建子节点的权限
REAN:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限
DELETE:删除子节点的权限
ADMIN:设置节点ACL的权限
ZooKeeper环境搭建
1.环境准备
vmware虚拟机
centos7
SecureCRT(连接虚拟机)
附件下载:
Centos7 请自己官网下载
SecureCRT(32和64)+注册机:http://pan.baidu.com/s/1mhCQwTa
ZookeePer:http://pan.baidu.com/s/1mhCQwTa
VMware:http://pan.baidu.com/s/1dE6ZcSL
步骤:
(1)使用vmvare创建三个centos7的虚拟机
IP地址:每个虚拟机服务器配置与你当前主机在同一个网段的IP
网络设置足以:如果虚拟机与SecureCRT所在的机器不是同一台,需要把3台虚拟机centos7的虚拟机的网络设置为桥接模式
(2)使用SecureCRT连接虚拟机
(3)安装配置ZooKeeper
2.三种集群
(1)集群环境
(2)单机环境
(3)伪集群环境
如何安装VMware和Centos7以及如何配置“桥接模式”下的网络请自行百度
配置使用的命令如下:
------------------------------------------------------------------------------------------------------
cd /opt
wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.10.tar.gz
ls
tar xzvf zookeeper.tar.gz
mv zookeeper.3.4.10 zookeeper
cd zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
i键进入插入模式
修改dataDir
dataDir=/var/zookeeper
clientport 是用来对外提供服务的端口
配置服务器的格式
server.id=host:port:port
id:即为服务器的Id,是一个整数
host:即为服务器的IP
第一个port:是Leader服务器与Follower服务器的通信端口
第二个port:是用于服务器之间选举投票选着Leader服务器的通信端口
按ESC进入命令模式 输入 :wq 保存并退出
进入var 创建zookeeper文件夹 mkdir 文件夹名称
在该文件中创建文件myid 并写入服务器Id
启动zookeeper服务器
./zkserver.sh start
关闭zookeeper服务器
./zkserver.sh stop
yum install telnet 安装telnet
服务器之间相互拷问文件
scp zoo.cfg root@192.168.124.128:/opt/zookeeper/conf
zoo.cfg的主要配置信息
------------------------------------------------------------------------------------------------------
注意事项:
1.虚拟机网络连接使用桥接模式
2.一定要关掉本机和虚拟机的防火墙