设为首页 加入收藏

TOP

后台架构设计—数据存储层(一)
2017-10-13 10:41:52 】 浏览:2089
Tags:后台 架构 设计 数据 存储

数据存储重要性:

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

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

 

单机存储原理:

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

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

  1. 哈希存储引擎:基于哈希表结构 :数组+链表;支持Create\Update\Delete\随机Read
  2. B树存储引擎:基于B Tree实现,支持单条记录的CURD,支持顺序查找。RDBMS使用较多。
  3. LSM树存储引擎:对数据的修改增量保存在内存,达到一定条件再批量更新到磁盘;优势在于批量写入;劣势在于读取需合并磁盘和内存;
    1. 避免内存数据丢失:修改操作写入到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协议与设计:

    作用:

        解决节点间的一致性问题;

&

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇“老坛泡新菜”:SOD MVVM框架,让.. 下一篇【转载】乐视秒杀:每秒十万笔交..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目