后台架构设计—数据存储层
后台架构设计—数据存储层
来源:http://www.cnblogs.com/xiwang6428/p/6060138.html
数据存储重要性:
数据是企业最重要的财产;
数据可靠性是企业的命根,一定要保证。
单机存储原理:
存储引擎:存储系统的发动机,它决定存储系统的功能和性能;
引擎类型:哈希存储引擎、B树存储引擎、LSM存储引擎
哈希存储引擎:基于哈希表结构 :数组+链表;支持Create\Update\Delete\随机Read
B树存储引擎:基于B Tree实现,支持单条记录的CURD,支持顺序查找。RDBMS使用较多。
LSM树存储引擎:对数据的修改增量保存在内存,达到一定条件再批量更新到磁盘;优势在于批量写入;劣势在于读取需合并磁盘和内存;
避免内存数据丢失:修改操作写入到CommitLog日志。
数据模型:
文件:以目录树组织,如linux,mac,windows;
关系型:每个关系是一个表格,多行组成,每行多列;
键值(Key-Value):Memcached, Tokey, Redis;
列存储型:Casadra, Hbase;
图形数据库:Neo4J, InfoGrid, Infinite Graph
文档型:MongoDB, CouchDB
事务与并发控制:
事务4个基本属性:ACID 原子性、一致性、隔离性、持久性
并发控制:
锁粒度:Process->DB->Table->Row
提供Read并发,Read不加锁:写时复制、MVCC
数据恢复:通过操作日志
多机存储原理:
单机存储原理在多机存储仍然可用;多级存储基于单机存储;
数据分布:
分布在多个节点,节点间负载均衡;
分布方式:
静态:取模、uid%32;
动态:一致性hash,数据飘移问题(A节点更新前出现故障,更新迁移到B节点后A节点又恢复);
复制:
分布式存储多个副本;保证高可靠和高可用;Commit Log。
故障检测:
心跳机制、数据迁移、故障恢复;
FLP定理与设计:
FLP Impossiblity(FLP不可能性):
在异步消息通信场景,即使只有一个进程失败,没有任何方法能保证非失败进程达到一致性。
CAP定理与设计:
CAP:一致性(Consistency)、可用性(Availabilty)、分区容忍性(Tolerance of network Partition)。
一致性和可用性需要折中权衡
分布式存储系统需要能够自动容错,也就是说分区容忍性需要保证。
2PC(Two Phase Commit)协议与设计:
用于分布式事务;
两类节点组成:
协调者(1个);
事务参与者(多个);
分两阶段:
请求阶段:协调者通知参与者准备提交或取消事务,所有参与者都需要表决同意或者不同意。
提交阶段:
收到参与者所有决策后,协调者进行决策(提交或取消);
通知参与者执行操作,所有参与者都同意就提交,否则取消;
参与者收到协调者的通知后执行操作。
2PC协议是阻塞式:
事务参与者可能发生故障
--设置超时时间;
协议者可能发生故障
--日志记录、备用协调者
应用:交易订单 等;
Paxos协议与设计:
作用:
解决节点间的一致性问题;
主节点宕掉,则选择新节点;
主节点常以操作日志的形式同步备节点。
分两种角色:提议者(Prpposer)、接受者(Acceptor);
执行步骤:
批准:Proposer发送accept消息给Accepter要求接受某个提议者;
确认:超一半的Accepter接受,则提议值生效,Proposer发送acknowledge消息通知所有的Accepter提议生效。
与2PC比较::
2PC协议保证多个数据分片上操作的原子性;
Paxos协议保证一个数据分片多个副本之间的数据一致性;
Paxos协议用法:
实现全局的锁服务或者命名和配置服务;
---Apache Zookeeper
将用户数据复制到多个数据中心;
---Google Megastore
数据存储层冗余:
多个副本,实现访问的高可用性。
如何实现:
数据复制:
基于日志;
Master-Slave:mysql\MongoDB
Replic Set:MongoDB
双写:
存储层多主对等结构;比较灵活,但数据模块层成本较高;
数据备份:
冷备份:
定期将数据复制到某个存储介质,是传统的数据保护手段;
优点:简单、廉价,技术难度低;
缺点:定期存在数据不一致;恢复数据时间长;
热备份:
online备份;提供更好的高可用性;
异步热备份:
从主存储写入即返回给应用端,由存储系统异步写入其他副本;
同步热备份:
多份数据副本写入同步完成,无主从之分;
为提高性能,应用程序并发写入;
响应延迟是最慢的那台服务器;
数据存储层失效转移机制:
失效确认:是否宕机、心跳;
访问转移:访问路由到非宕机机器;存储数据完全一致;
数据恢复:主从、日志;
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。
-END-
后台架构设计—数据存储层相关推荐
- 架构师实战培训(架构设计+数据后台+快速开发+二次开发+发布部署)
架构师实战培训(架构设计+数据后台+快速开发+二次开发+发布部署)系列视频课程 课程目标 学习MIS系统.高并发系统.单机系统设计思路: 理解设计模式,学会命令模式: 适用人群 CIO.CTO.技术总 ...
- Flink 完美搭档:数据存储层上的 Pravega
作者 | 滕昱 DellEMC 研发总监 整理 | 赵海凯 DellEMC 实习生 本文将从大数据架构变迁历史,Pravega 简介,Pravega 进阶特性以及车联网使用场景这四个方面介绍 Prav ...
- 亚马逊光缆被挖?——阿里工程师讲解支付宝如何架构设计数据中心
文: 周瑜 校对:李二 全文2500字,建议阅读时长7分钟 点击右上角关注我们,每天都能收到有趣的推文哦. 亚马逊光缆被挖?--阿里工程师讲解支付宝如何架构设计数据中心 昨天科技圈最火的新闻应该是&q ...
- 架构设计-数据访问层简述
在前面简单描述了下服务层,SOA面向服务架构,架构设计-业务逻辑层,以及一些面面向设计原则理解和软件架构设计箴言.这篇博客我们将继续进入我们的下一层:数据访问层.无论你用的是什么开发模式或者是业务模式 ...
- 微信后台基于时间序的海量数据冷热分级架构设计实践
写在前面 微信的后台数据存储随着微信产品特性的演进,经历了数次的架构改造,才形成如今成熟的大规模分布式存储系统,有条不紊的管理着由数千台异构机型组成的机器集群,得以支撑每天千万亿级的访问.键值以及 P ...
- 从0到10亿,微信后台架构及基础设施设计与实践!
摘要:微信后台业务类型众多,包括即时通信,社交网络,金融支付等等.本次分享着重讨论如何在海量用户场景下,后台架构设计中的共性部分如高可用.强一致.快速迭代等等,微信是如何在不断变化的背景下设计统一的架 ...
- 数据中台到底包括什么内容?一文详解架构设计与组成
01 数据中台功能架构 数据中台建设是一个宏大的工程,涉及整体规划.组织搭建.中台落地与运营等方方面面的工作,本节重点从物理形态上讲述企业的数据中台应该如何搭建.一般来讲,企业的数据中台在物理形态上分 ...
- 偏移出来的数据不准_独家解读!京东高可用分布式流数据存储的架构设计
作者 | 李玥 编辑 | Vincent AI 前线导读:每天,超过千亿交易相关的数据在京东数千个系统中高速流转,确保数据的高可靠.高可用.一致性对京东的消息中间件系统是一项艰巨的技术挑战.为高性能. ...
- IBM系统分析——架构设计五视图+数据设计
目 录 一.架构设计五视图 1. 逻辑架构 2. 开发架构 3. 运行架构 4. 物理架构 5. 数据架构 二.数据设计 1. 数据库的逻辑模型 2. 数据库的常用模型 3. 实现从面对对象模型到表 ...
最新文章
- 单片机找工作好找吗?不懂英语怎么学会单片机?
- 1.6 字符串的比较
- Unity的Lerp函数实现缓动
- java 判断对象为控制_Java流程控制
- python 到 poc
- 如何读入一个多行的txt文件,给每行的数据加双引号并保存为一行输出
- qcustomplot圆_QCustomPlot使用心得五:坐标轴常用属性设置
- python click
- MyCat分布式数据库集群架构工作笔记0020---高可用_单表存储千万级_海量存储_水平分表ER表
- 爬虫:python爬虫学习笔记之Beautifulsoup正则表达式
- 国外RSGIS权威期刊杂志
- numpy库的下载与应用
- 决策树生成算法流程图
- 计算机c盘扩容不用软件,电脑分区c盘扩容,这个方法超级简单!
- 1.In-Sight浏览器电子表格的简单使用
- Python的数据类型讲座
- 如何降低计算机版本,电脑系统WIN10如何降级,还原老系统_win10专业版教程
- Bug趣闻:在程序员崩溃的边缘试探……
- java severlet 获取当前路径_Java 获取当前路径的方法总结
- Codeforces1509 B. TMT Document(思维)
热门文章
- TUP第19期综述:从12306看海量并发网站架构
- 2020.8.3【算协集训】线性dp
- 第三部分 基本库的使用(urllib库, requests库, re库)
- 网易视频云:浅谈视频通信技术的发展
- 学生HTML个人网页作业作品 HTML+CSS校园环保(大学生环保网页设计与实现)
- html的text-decoration,CSS属性参考 | text-decoration
- 手把手教你用Python打造一款属于你自己的个性二维码
- 不到七千入手的高性能笔记本,游匣G15实测
- 886n虚拟服务器,TP-Link TL-WR886N V4路由器端口映射怎么设置
- Window10 应用商店闪退问题