大规模分布式存储系统——存储系统基本知识

本文深入探讨了大规模分布式存储系统的基础知识,包括硬件基础如CPU架构、IO总线和存储层次,单机存储引擎的设计,如数据结构、缓冲区管理和LevelDB分析。还介绍了数据模型、SQL隔离级别、并发控制(如MVCC)以及故障恢复策略,如日志提交优化和checkpoint机制。文章最后提到了数据压缩的重要性。
摘要由CSDN通过智能技术生成

硬件基础

CPU架构

经典的多CPU架构为对称多处理结构(SMP),即在一个计算机上汇集了一组处理器,他们之间对称工作,共享相同的物理内存与总线
在这里插入图片描述

SMP架构主要是共享,系统中所有资源都是共享的,那么会导致竞争的时候性能下降。
为了提高可扩展性,现在主流服务器架构一般为NUMA
在这里插入图片描述

NUMA——Non-Uniform Memory Access 非一致性存储访问

IO 总线

在这里插入图片描述
存储系统的性能瓶颈一般在IO
Intel x48主板是典型的南北桥架构,北桥芯片通过前端总线与CPU相连,内存模块等挂载在北桥上。

北桥与南桥之间通过DMI链接,DMI带宽为1GB/s

网卡,硬盘则挂载在南桥上。

存储层次架构
  • 存储系统的性能瓶颈主要在磁盘的随机读写
  • 所以设计存储引擎的时候,需要对磁盘的特性做处理,如把随机写操作转化为顺序写,如通过缓存减少磁盘随机读的操作。
  • SSD磁盘一般比较昂贵,可以用于做缓存
  • 存储系统的性能主要包括两个维度:吞吐量以及访问延时
  • 在保证最低成本的同时,尽可能实现高吞吐,例如磁盘和SSD的延时差别很大,但是带宽差别不大。我们可以把热数据存储到SSD中,冷数据存储到磁盘中。

单机存储引擎

  • 哈希存储引擎----Bitcask

基于哈希表结构的键值存储系统,属于日志文件系统,即数据是append only的

  • 在bitcask中,每个文件有大小限制,当文件增加到相应大小时候,就会产生一个新的文件。老的文件只读不写。任意时刻只有一个文件可以写,叫做active data file

  • 数据结构
    在这里插入图片描述
    每一条数据的记录项如上。

那么所有记录以这样的方式存储在磁盘上

在这里插入图片描述
但文件这样持续的存下去,肯定是会无限膨胀的,为了解决个问题,和其他日志型存储系统一样Bitcask也有一个定期的合并操作。合并作,即定期将所有older data file中的数据扫描一遍并生成新的data file(没有包括active data file 是因为它还在不停写入),这里的merge其实就是将对同一个key的多个操作以只保留最新一个的原则进行删除。每次合并后,新生成的数据文件就不再有冗余数据了。

  • 基于Hash表建索引

在这里插入图片描述
如何基于Key快速定位value?

在内存中建立如图上的Hash索引表

hash表对应的这个结构中包括了三个用于定位数据value的信息,分别是文件id号(file_id),value值在文件中的位置(value_pos),value值的大小(value_sz),于是我们通过读取file_id对应文件的value_pos开始的value_sz个字节,就得到了我们需要的value值。

在这里插入图片描述<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值