文章目录
分布式理论知识
CAP原理
C(Consistency):一致性,这里指的是有效时间内数据的强一致性。
A(Availability):可用性,要求即便系统故障,也能在有效的时间内返回结果(成功或失败)
P(Partition tolerance):分区容错性,在网络分区发生故障的情况下还是能向外提供服务。排除整体网络故障。
cap理论指的是在分布式的环境下仅能满足以上的2种,其中P是必须的,因为如果某个分区网络故障如果导致另外的分区不能继续向外提供相应的服务,那么分布式是没有意义的。CA的对立点在于,如果在有效的时间内系统是有问题的,那么我应该选择C保持数据的一致性还是选择A做出响应。
1、对于一个分布式环境,CAP理论应用在于节点之间的信息同步,那么其实对于Nosql或者关系型数据库都是一样的,都是在解决读写一致的问题,在中间做出一个权衡。
2、对于单节点而言,CAP理论在关系型数据库中应该对应的是多表关联,或者垂直分表模型下的同步机制,而Nosql则基本上弱化了表的关联,也就是选择了AP,但是其实CAP理论是基于分布式而提出的理论,针对这种场景提出的讨论其实没有什么意义。
BASE理论
BA(Basically Available):基本可用,允许损失部分可用(时间上或者降级服务)。
S(Soft sate):软状态,系统的一些状态不会影响系统的怎整体可用性。
E(Eventually consistent):最终一致性,允许系统在一段时间的同步中,最终能达到一个一致的状态。
Base是对CAP中的一致性和可用性权衡的结果,核心的思想就是即使无法做到强一致性,但是每个业务可以根据自身的特点,达到系统的最终一致性。
zookepeer的安装
下载地址,选择当前比较新的稳定版本
http://mirror.bit.edu.cn/apache/zookeeper/
单节点模式
#下载zookepeer
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar -zxvf zookeeper-3.4.13.tar.gz
#进到/conf目录下
cp zoo_sample.cfg zoo.cfg
#进到/bin目录下,出现下图即成功(图2-0)
sh zkServer.sh start
#连接到zookeppeer
./zkCli.sh -server 127.0.0.1:2181
(图2-0)
使用docker搭建单机zookepeer
-
获取Dockerfile文件
1.1 可以在
https://github.com/31z4/zookeeper-docker
找到相应的Dockerfile文件。
1.2 附上一份zookepeer-3.4.12的Dockerfile文件FROM openjdk:8-jre-alpine # Install required packages RUN apk add --no-cache \ bash \ su-exec ENV ZOO_USER=zookeeper \ ZOO_CONF_DIR=/conf \ ZOO_D