第六周作业总结
CAP原理
Consistency(一致性):每次读取的数据都应该是最近写入的数据或者返回一个错误, 而不是过期数据,也就是说,数据是一致的。
Availability(可用性):每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的,也就是说系统需要一直都是可用正常使用的,不会引起调用者的异常,但是并不保证响应的数据是最新的。
Partition tolerance(分区耐受性):指的是因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的。
ZooKeeper
ZooKeeper 是一个分布式开源的应用程序协调服务。ZooKeeper 的实现得益于 Zab 协议作为基础的 fast Paxos 算法。
ZooKeeper 主要用途:
Hadoop:使用 Zookeeper 的事件处理确保整个集群只有一个 NameNode,存储配置信息等
HBase:使用 Zookeeper 的事件处理确保整个集群只有一个 HMaster,察觉 HRegionServer 联机和宕机,存储访问控制列表等
Kafka:使用 ZooKeeper 协调协调 Kafka 的各个 broker,实现 broker 的负载均衡
分片
分片将数据分配在不同的数据库上,使得每个数据库仅管理整个数据集的一个子集。以 User 数据库为例,随着用户数量的增加,越来越多的分片会被添加到集群中。我们可以根据 User 的首字母分片存储到不同的数据库中。分片可以减少读取和写入流量,减少复制并提高缓存命中率。也减少了索引,通常意味着查询更快,性能更好。如果一个分片出问题,其他的仍能运行,你可以使用某种形式的冗余来防止数据丢失。类似联合,没有只能串行写入的中心化主库,你可以并行写入,提高负载能力。
ACID
原子性(Atomicity): 事务要么全部完成,要么全部取消。 如果事务崩溃,状态回到事务之前(事务回滚)。
隔离性(Isolation): 如果2个事务 T1 和 T2 同时运行,事务 T1 和 T2 最终的结果是相同的,不管 T1和T2谁先结束,隔离性主要依靠锁实现。
持久性(Durability): 一旦事务提交,不管发生什么(崩溃或者出错),数据要保存在数据库中。
一致性(Consistency): 只有合法的数据(依照关系约束和函数约束)才能写入数据库。
BASE 理论如下:
基本可用(Basically Available)系统在出现不可预知故障时,允许损失部分可用性,如响应时间上的损失或功能上的损失。
Soft state(弱状态)软状态,指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
Eventually consistent(最终一致性)指系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态,因此最终一致性的本质是需要系统保证数据能够达到一致,而不需要实时保证系统数据的强一致性。
评论