发布时间:2021-7-17 分类: 行业资讯
数据存储重要性:
数据是公司最重要的资产;
数据可靠性是企业的生命线,必须得到保证。
单机存储原理:
存储引擎:存储系统的引擎,用于确定存储系统的功能和性能;
引擎类型:哈希存储引擎,B树存储引擎,LSM存储引擎
哈希存储引擎:基于哈希表结构:数组+链表;支持CreateUpdateDelete随机阅读
B树存储引擎:基于B Tree实现,它支持单个记录的CURD并支持顺序查找。更多地使用RDBMS。
LSM树存储引擎:数据修改保存在内存中,然后在某些条件下更新到磁盘;优势在于批量写作;缺点是磁盘和内存需要合并;
避免内存数据丢失:修改操作将写入CommitLog日志。
数据模型:
文件:由目录树组织,如linux,mac,windows;
关系类型:每个关系都是一个表,由多行组成,每行有多列;
键值:Memcached,Tokey,Redis;
列存储类型:Casadra,Hbase;
图形数据库:Neo4J,InfoGrid,无限图
文档类型:MongoDB,CouchDB
事务与并发控制:
事务的4个基本属性:ACID原子性,一致性,隔离性,持久性
并发控制:
锁粒度:Process-> DB-> Table-> Row
提供读并发,Read未锁定:copy-on-write,MVCC
数据恢复:通过操作日志
多机存储原理:
独立存储原理仍可用于多机存储;多级存储基于独立存储;
数据分发:
分布在多个节点上,在节点之间进行负载均衡;
分配方式:
静态:modulo,uid%32;
动态:一致的散列,数据漂移问题(更新前节点失败,更新迁移到节点B后A节点恢复);
复制:
分布式存储多个副本;保证高可靠性和高可用性;提交日志。
故障检测:
心跳机制,数据迁移,故障恢复;
FLP定理和设计:
FLP Impossiblity(FLP Impossible):
在异步消息传递方案中,即使只有一个进程失败,也无法确保非失败进程是一致的。
CAP定理与设计:
CAP:网络分区的一致性,可用性,容差。
一致性和可用性需要权衡
分布式存储系统需要能够自动容错,这意味着需要保证分区容差。
2PC(Two Phase Commit)协议与设计:
对于分布式事务;
组成两种类型的节点:
协调员(1);
交易参与者(多个);
分两个阶段:
请求阶段:协调员通知参与者准备提交或取消交易,所有参与者需要投票同意或不同意。
提交阶段:
在收到参与者的所有决定后,协调员做出决定(提交或取消);
通知参与者执行操作,所有参与者同意提交,否则取消;
参与者在收到协调员的通知后执行操作。
2PC协议是阻塞式:
交易参与者可能会失败
- 设置超时时间;
协议可能有问题
- 记录,备用协调员
申请:交易订单等;
Paxos协议与设计:
作用:
解决节点之间的一致性问题;
如果主节点被删除,则选择新节点;
主节点通常以操作日志的形式同步备用节点。
分为两个角色:propsor(Prpposer),acceptor(Acceptor);
执行步骤:
批准:提议者向Accepter发送接受消息,要求接受提供者;
确认:如果超过一半的接受者接受,建议的价值将生效,并且投标人将发送确认消息以通知所有接受者提议生效。
与2PC ::
比较2PC协议保证了对多个数据切片的操作的原子性;
Paxos协议保证数据切片的多个副本之间的数据一致性;
Paxos协议用法:
实现全局锁定服务或命名和配置服务;
--- Apache Zookeeper
将用户数据复制到多个数据中心;
--- Google Megastore
数据存储层冗余:
多个副本以实现高可用性访问。
如何实现:
数据复制:
基于日志;
Master-Slave:mysqlMongoDB
复制集: MongoDB
双写:
存储层多主对等结构;更灵活,但数据模块层成本更高;
数据备份:
冷备份:
定期将数据复制到存储介质是传统的数据保护手段;
优点:简单,便宜,技术难度大;
缺点:有定期数据不一致;恢复数据需要很长时间;
热备份:
在线备份;提供更好的高可用性;
异步热备份:
来自主存储器的写入将返回到应用程序,并且存储系统异步写入其他副本;
同步热备份:
多个数据副本是同步写入的,没有主从;
为了提高性能,应用程序同时写入;
响应延迟是最慢的服务器;
数据存储层失效转移机制:
失败确认:是否失败,心跳;
访问传输:访问非停机机器的路由;存储数据完全相同;
数据恢复:主从,日志;