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

来源:互联网 发布:2017三季度gdp数据 编辑:程序博客网 时间:2024/06/06 09:52
高可用之数据存储层




数据储存的重要性
公司、企业数据是最宝贵的财产
一旦丢失,对公司的打击是致命的
数据可靠性是企业的命根,一定要保证

单机存储原理与设计
单机存储引擎
存储引擎是存储系统的发动机
决定了存储系统能够提供的功能
存储系统提供功能
Create Update Read Delete
存储引擎类型
-哈希存储引擎
基于哈希表结构的键值存储系统
数组+链表
支持Create、Upate、Delete、随机Red
O(1)Read复杂度
-B树存储引擎
基于Btree的实现
支持单条记录的CURD
还支持顺序扫描、范围查找
RDBMS使用较多
MySQL
InnoDB 聚族索引
B+树
-LSM存储引擎
Log Structured Merge Tree
对于数据修改增量保存在内存中 达到指定条件后(通常是数量和时间间隔) 批量更新操作持久到磁盘
读取数据时需要合并磁盘中的历史数据和内存最近修改操作
LSM优势在于通过批量写入 规避了随机写入问题 提高写入性能
LSM劣势在于读取需要合并磁盘数据和内存数据
如何避免内存数据丢失
CommitLog
首先将修改操作写入到CommitLog中
操作数据可靠性保证

数据模型
数据模型是存储系统外壳
数据模型分类
文件
目录树的方式组织文件Linux Mac Windows
关系
每个关系是个表格由多个行组成每行多个列组成
MySQL Orcale
KeyValue
Memcached Tokyo Cabinet Redis
列存储
Cassadra Hbase
图形
Neo4j
文档
MogoDB CouchDB
事务并发与控制
事务四个基本特性
原子性
一致性
隔离性
持久性
并发控制
锁粒度
数据恢复

多机储存原理与设计
单机存储与多机存储
单机存储原理在多机仍然可用
多机存储基于单机存储
多机数据分布
区别与单机存储
数据分布在多个节点,在多个节点之间需要负载均衡
数据分布方式
静态方式
取模
uid%32
动态方式
一致性hash
数据漂移问题
复制
分布式存储多个副本
保证了高可靠和高可用性
CommitLog
故障检测
心跳机制
数据迁移
故障恢复

数据冗余层
数据多个副本
数据高可靠性
从而实现访问高可靠性
如何实现数据存储层的冗余?
数据复制
基于日志
Mater Slave
MySQL MogoDB
Replic Set
MogoDB
使用较多
互联网
双写
存储层多主对等结构
数据模块层存储层双写
比较灵活
数据模块层成本较高


数据备份落地
数据冷备份
古老而有效的数据保护手段
将数据复制某种存储介质上(磁盘等)
系统存在故障,从冷备份设备中恢复数据
优点
简单、廉价
成本和技术难度都较低
缺点
定期备份
数据一致性保证不了
恢复时间长,系统高可用保证不了
数据热备份
Online备份
提供更好的高可用性
异步热备份
多份数据副本写入异步完成
应用程序写入成功一份数据后,即返回
由存储系统异步写入其他副本
同步热备份
多份数据写入同步完成
应用程序收到所有副本的写入成功
应用程序收到部分服务写入成功,可能都成功
为了提高写性能,应用程序并发写入数据
没有主从之分 完全对等
响应延迟是最慢的那台服务器 而不是所有的响应延迟之和


阅读全文
0 0
原创粉丝点击