下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于存储系统开发的几条原则

作者:课课家教育     来源: http://www.kokojia.com点击数:597发布时间: 2017-06-13 14:00:15

标签: 存储开发云存储存储系统

  计算机存储系统由高层到低层分别名之寄存器堆、高速缓存(cache)、主存(main memory)和外存(secondary memory)。课课家教育平台提醒大家:定要认真阅读本篇文章哦~

     国内存储界现在是百花齐放,非常热闹。软件定义存储,云存储,超融合等各种创新企业也在各自领域快速的发展。关于各方面的概念解释和技术分析很多,但是我感觉关于存储系统的开发方面,实践性的文章非常少。我就据自己多年的存储开发经验,写几条原则,希望能抛砖引玉,让各位开发人员和架构师能进行更广泛的讨论。

关于存储系统开发的几条原则_存储开发_云存储_存储系统_课课家教育

  1. 重视元数据的冗余安全很多人说存储的稳定性是第一位的,其实任何人为的系统都是有可能出错的,存储的数据安全性才是第一位的。出错不可避免,宕机不可避免,任何软件都是有bug的,但是一定要避免出错后数据丢失,特别是元数据丢失,要把这个概率降到最低最低。所以,设计元数据方案就像造飞机一样,要有2套以上的独立冗余方案。这个是架构师第一个要考虑的问题。

  2. 产品有定位,功能有取舍,要简单突出。存储的稳定性非常关键,复杂的东西很难稳定,除非不计成本。所以,我们首先要清楚产品的定位和市场应用,针对这个定位和市场应用来设计开发,其他的辅助功能一定建立在这个基础之上。如果一个产品开始设计的时候就考虑到了很多功能都要做到最好,那么很有可能主要的架构设计复杂,影响稳定性,最后影响最主要的功能点。所以,研发要对产品部门和销售部门的要求有取舍,并且一定要坚持,这个在设计中非常关键。

  3. 抽象,抽象,再抽象。其实这个和上一条的简单原则有关系,抽象了,那么架构就会非常简单。模块之间的耦合度就低,这个其实是软件开发的共性。存储软件的基础架构其实是和协议,和OS,和硬件驱动都是无关的。如果相关了,那么这个架构一定出了问题。

  4. 数据驱动,不是功能驱动。这个可以参考Linux内核设计,内核负责功能机制,但是用户态负责数据驱动来做出各种应用。应用一定是和数据相关而不是和功能相关的,功能是非常共性的东西,由上层的数据来决定了具体的应用。

这个可以参考linux内核设计,内核负责功能机制,但是用户态负责数据驱动来做出各种应用。

  5. 我们能碰到的所有的问题都是别人解决过的问题,碰到架构或者其他方面的问题参考现有的linux内核架构,block/scsi中间层,各种协议,看看他们是如何解决的,参考这些业界标准基本不会出错。发明创造是科学家的工作,不是工程师的工作。

  6. debug系统做好了,产品就不会做不好。这个是软件开发的共性,不用多费笔墨。只是存储开发有两个问题debug起来非常难,一个是一致性问题,一个是性能问题。由于它的难度和全局影响性,这两个debug系统最好要由系统架构师亲自设计甚至编写。

  7. 适当打补丁,但是最后要勇于承认架构有问题,要勇于重新来过,长痛不如短痛。真正稳定的软件是不会一版成功的。

  知识分享:存储系统总结

  1)全内存存储

  内存存储索引和数据

  2)内存+磁盘

  内存存储索引等,磁盘存储数据文件

  索引主要有hash和B+树等;

  磁盘数据文件大多采用日志性数据文件;只在文件末尾追加而不修改文件,写入和更新是追加新记录,删除也是追加记录(记录的value为特殊的值);此外,还有定期merge数据文件的过程,以免数据文件过多过大(随机io转换为顺序io,加快读写效率)。

磁盘数据文件大多采用日志性数据文件;只在文件末尾追加而不修改文件,写入和更新是追加新记录,删除也是追加记录(记录的value为特殊的值);

  Hbase中使用b+树索引数据(根据row key )所在的Region(一个表由多个Region组成,一个Region包括多个store,每个store存储一个列簇,每个Strore又由一个memStore和0至多个StoreFile组成)。

  memstore中的数据是排序的,到达一定大小就冻结,生成storefile。

  hbase用bloom filter算法检测某个值是否在一个文件中(读数据时,需要从一系列文件中和memfile中读取值)。

     小结:

  计算机存储系统层次结构的中心思想是,是对每个K,位于K层的更快更小的存储设备作为位于K+1层的更大更慢的存储设备的缓存。换句话说,层次结构中的每一层都缓存来自较低一层的数据对象。如果大家还有什么不懂得地方,请咨询课课家教育平台~

赞(10)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程