后台架构设计—数据存储层

来源:http://www.cnblogs.com/xiwang6428/p/6060138.html

数据存储重要性:

  • 数据是企业最重要的财产;

  • 数据可靠性是企业的命根,一定要保证。

单机存储原理:

  • 存储引擎:存储系统的发动机,它决定存储系统的功能和性能;

  • 引擎类型:哈希存储引擎、B树存储引擎、LSM存储引擎

    • 哈希存储引擎:基于哈希表结构 :数组+链表;支持Create\Update\Delete\随机Read

    • B树存储引擎:基于B Tree实现,支持单条记录的CURD,支持顺序查找。RDBMS使用较多。

    • LSM树存储引擎:对数据的修改增量保存在内存,达到一定条件再批量更新到磁盘;优势在于批量写入;劣势在于读取需合并磁盘和内存;

      • 避免内存数据丢失:修改操作写入到CommitLog日志。

数据模型:

  1. 文件:以目录树组织,如linux,mac,windows;

  2. 关系型:每个关系是一个表格,多行组成,每行多列;

  3. 键值(Key-Value):Memcached, Tokey, Redis;

  4. 列存储型:Casadra, Hbase;

  5. 图形数据库:Neo4J, InfoGrid, Infinite Graph

  6. 文档型: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-

后台架构设计—数据存储层相关推荐

  1. 架构师实战培训(架构设计+数据后台+快速开发+二次开发+发布部署)

    架构师实战培训(架构设计+数据后台+快速开发+二次开发+发布部署)系列视频课程 课程目标 学习MIS系统.高并发系统.单机系统设计思路: 理解设计模式,学会命令模式: 适用人群 CIO.CTO.技术总 ...

  2. Flink 完美搭档:数据存储层上的 Pravega

    作者 | 滕昱 DellEMC 研发总监 整理 | 赵海凯 DellEMC 实习生 本文将从大数据架构变迁历史,Pravega 简介,Pravega 进阶特性以及车联网使用场景这四个方面介绍 Prav ...

  3. 亚马逊光缆被挖?——阿里工程师讲解支付宝如何架构设计数据中心

    文: 周瑜 校对:李二 全文2500字,建议阅读时长7分钟 点击右上角关注我们,每天都能收到有趣的推文哦. 亚马逊光缆被挖?--阿里工程师讲解支付宝如何架构设计数据中心 昨天科技圈最火的新闻应该是&q ...

  4. 架构设计-数据访问层简述

    在前面简单描述了下服务层,SOA面向服务架构,架构设计-业务逻辑层,以及一些面面向设计原则理解和软件架构设计箴言.这篇博客我们将继续进入我们的下一层:数据访问层.无论你用的是什么开发模式或者是业务模式 ...

  5. 微信后台基于时间序的海量数据冷热分级架构设计实践

    写在前面 微信的后台数据存储随着微信产品特性的演进,经历了数次的架构改造,才形成如今成熟的大规模分布式存储系统,有条不紊的管理着由数千台异构机型组成的机器集群,得以支撑每天千万亿级的访问.键值以及 P ...

  6. 从0到10亿,微信后台架构及基础设施设计与实践!

    摘要:微信后台业务类型众多,包括即时通信,社交网络,金融支付等等.本次分享着重讨论如何在海量用户场景下,后台架构设计中的共性部分如高可用.强一致.快速迭代等等,微信是如何在不断变化的背景下设计统一的架 ...

  7. 数据中台到底包括什么内容?一文详解架构设计与组成

    01 数据中台功能架构 数据中台建设是一个宏大的工程,涉及整体规划.组织搭建.中台落地与运营等方方面面的工作,本节重点从物理形态上讲述企业的数据中台应该如何搭建.一般来讲,企业的数据中台在物理形态上分 ...

  8. 偏移出来的数据不准_独家解读!京东高可用分布式流数据存储的架构设计

    作者 | 李玥 编辑 | Vincent AI 前线导读:每天,超过千亿交易相关的数据在京东数千个系统中高速流转,确保数据的高可靠.高可用.一致性对京东的消息中间件系统是一项艰巨的技术挑战.为高性能. ...

  9. IBM系统分析——架构设计五视图+数据设计

    目  录 一.架构设计五视图 1. 逻辑架构 2. 开发架构 3. 运行架构 4. 物理架构 5. 数据架构 二.数据设计 1. 数据库的逻辑模型 2. 数据库的常用模型 3. 实现从面对对象模型到表 ...

最新文章

  1. 单片机找工作好找吗?不懂英语怎么学会单片机?
  2. 1.6 字符串的比较
  3. Unity的Lerp函数实现缓动
  4. java 判断对象为控制_Java流程控制
  5. python 到 poc
  6. 如何读入一个多行的txt文件,给每行的数据加双引号并保存为一行输出
  7. qcustomplot圆_QCustomPlot使用心得五:坐标轴常用属性设置
  8. python click
  9. MyCat分布式数据库集群架构工作笔记0020---高可用_单表存储千万级_海量存储_水平分表ER表
  10. 爬虫:python爬虫学习笔记之Beautifulsoup正则表达式
  11. 国外RSGIS权威期刊杂志
  12. numpy库的下载与应用
  13. 决策树生成算法流程图
  14. 计算机c盘扩容不用软件,电脑分区c盘扩容,这个方法超级简单!
  15. 1.In-Sight浏览器电子表格的简单使用
  16. Python的数据类型讲座
  17. 如何降低计算机版本,电脑系统WIN10如何降级,还原老系统_win10专业版教程
  18. Bug趣闻:在程序员崩溃的边缘试探……
  19. java severlet 获取当前路径_Java 获取当前路径的方法总结
  20. Codeforces1509 B. TMT Document(思维)

热门文章

  1. TUP第19期综述:从12306看海量并发网站架构
  2. 2020.8.3【算协集训】线性dp
  3. 第三部分 基本库的使用(urllib库, requests库, re库)
  4. 网易视频云:浅谈视频通信技术的发展
  5. 学生HTML个人网页作业作品 HTML+CSS校园环保(大学生环保网页设计与实现)
  6. html的text-decoration,CSS属性参考 | text-decoration
  7. 手把手教你用Python打造一款属于你自己的个性二维码
  8. 不到七千入手的高性能笔记本,游匣G15实测
  9. 886n虚拟服务器,TP-Link TL-WR886N V4路由器端口映射怎么设置
  10. Window10 应用商店闪退问题