高可用架构设计数据存储层七

单机存储引擎

哈希存储引擎:数组+链表。readO(1) 

B数存储引擎:顺序扫描,范围查找 innoDB

LSM存储引擎:对于增量数据保存在内存中,达到一定条件存储到硬盘。查询的时候要硬盘内容和内存merge在返回给调用方。通过CommitLog可以保证内存数据丢失后可恢复。

数据模型分类:关系型mysql。键值型 Memcached。列存储型Hbase。文档性MongoDB。

多机存储原理与设计

数据分布在多个节点上,在多个节点之间需要实现负载均衡。数据分布一致性hash。多机存储存在,a节点不能用了,请求转移到b上,然后a又可用,此时ab数据不一致会存在脏数据。可以在每条记录上存储一个时间戳。

使用复制:分布式存储多个额副本。

故障检测:心跳机制,数据迁移,故障恢复。

FLP定理与设计:FLP Impossibility FLP不可能性,在异步消息通讯场景,即使只有一个进程失败,没有任何方法能保证非失败进程达成一致性。

FLP系统模型基于以下几个假设, 异步通信:与同步通信最大区别是没有时钟,不能时间同步,不能使用超时,不能探测失败,消息可任意延迟,消息可乱序。通信健壮性:只要进程非失败,消息虽会被无线延迟,但最终会被送达,并且消息仅会被送达一次(重复保证)。fail-stop模型:进程失败不再处理任何消息。失败进程数量:最多一个进程失败。

http://blog.csdn.net/chen77716/article/details/27963079

CAP 。一致性:读的数据总是最新的(写的结果),强一致性。可用性:机器或系统部分发生故障,仍提供读写服务。分区容忍性:机器故障,网络故障,机房故障等异常情况下人可以满足一致性和可用性。

分区容忍性要保证P,在保证C的时候强同步,主副本网络异常,写操作被阻塞,无法保证可用性。在保证可用性A时,异步复制机制,保证了分布式存储系统的可用性,强一致性无法保证。

一致性和可用性需要折中,不允许数据丢失,强一致性,金融。小概率丢失,可用性,IM消息。

2PC协议,协调者一个,事务参与者多个。2pc是阻塞式,设置3秒钟超时时间。

3PC

Paxos:参考知行学社视频。

2PC保证多个数据分片上的操作的原子性。Paxos保证一个数据分片多个副本之间的数据一致性。

数据存储冗余

mysql,mongoDB。Master-Slave主挂了从不能成为主。

mongoDB。ReplicSet。可以选举主。

双写:存储层多住对等结构,双写,分布式一致。

数据备份(热备)

异步热备,多份数据副本写入异步弯沉个,应用程序写入成功一份数据后即返回。有存储系统异步写入其他副本。mysql,mongoDB都是

同步热备份,多份数据副本写入同时完成。应用程序收到所有副本的写入成功。没有主从完全对等。

数据备份落地

RDSMS 主从读写分离。当备份机器过多时,采用数据备份管理系统,中控机给节点发送备份命令,如果在指定时间没有返回备份成功,则认为失败需要报警人工介入。

数据一致性

MS结构,M异步同步到S

Proxy应用写Proxy,有proxy负责更新多数据。

例如用数据提交同,延迟删除,间隔5秒两次删除缓存。

数据迁移



 1.Mongo-s摘除,复制到mysql上,同时把更新写放到消息队列,然后mysql从消息队列读,再执行。

猜你喜欢

转载自peng4602.iteye.com/blog/2369766