【第六周】学习总结——分布式存储
分布式数据库
1、单一数据库
数据压力不大,可用性要求不高
2、读写分离
访问压力比较大
一主多从,主负责写,从负责读,降低读压力
主主复制:高可用性,只能向一个服务器写入
3、业务分库
数据分片前一定考虑先做业务分库,分的最彻底的情况是一个服务器就一张表。
4、数据分片
分片,加主从复制
当一个表数据量非常大,写压力非常大的时候,需要进行数据分片。
分布式数据库中间件,MyCat
节点伸缩:多schema
CAP原理
一致性(Consistency):每次读取的数据都应该是最新写入的数据,而不是过期数据。
可用性(Availability):非故障节点每次请求都应该返回正常状态(不能是错误或者超时)。
分区容错性(Partition Tolerance):当发生分区问题时,系统能继续履行职责。
对于一个分布式存储系统CAP是不同同时满足的,而分区失效一定会发生的。也就是说P是必须保证,而C 和A是要看场景进行选择。但并不是就一定要完全舍弃另一方,比如经常会使用的满足AP前提下的最终一致性方案(对用户使用最终一致)。
限定(在这个前提下去理解会清晰很多,否则范围错误的放大,对概念的理解都变得更复杂和困难):
CAP针对相互连接且数据共享的多分区场景。
CAP关注的粒度是数据,而不是系统。
NoSQL
1、Cassandra
2、HBase
LSM树
写入性能非常好,查询需要逐级查询
ACID和BASE
关系数据库遵循ACID事务,NoSQL一般使用BASE。
ACID:传统的事务机制
原子性(Atomicity):事务要么完成,要么取消
一致性(Consistency):只有合法的数据才能写入,数据库约束
隔离性(Isolation):多个事务执行,不相互影响
持久性(Durability):事务执行完成后,数据不会受程序运行状态影响
BASE:
基本可用(Basically Availble)、软状态/柔性事务(Soft-state)、最终一致性(Eventual Consistency)
Doris海量KV引擎
Doris的一致性Hash和伸缩策略
Zookeeper分布式一致
分布式一致性(共识机制)算法Paxos
Proposer
Acceptor
Leaner
学习小结
分布式存储的理论和技术有一定深度和广度,需要好好学习,而且很重要。
评论