存储系统层次与局部性

先牢骚一下,批判一下自己先,很多时候做东东,只是听老大说这样去做,然而并没有去深究其背后的意义,很多时候解决了问题,然后并没有去深入挖掘问题发生的原因。而后面的过程,是更可贵的,往往收获也更大。

 

这段时间做的模块,是系统内部中间的中间存储层,是cache的角色。从分布式存储系统上来说,应该是属于,业务数据累的cache存储。

 

最近都争取工作在工作时间完成,然后回来总结。

好了废话多了,开始正题了。

 

一般的存储系统层次,按照众所周知的层次划分可以分为以下几层:

 

级别 存储名称                             访问开销

L0  cpu --------------------------- 几个cpu周期内                 

L1  内存----------------------------几十个到几百个cpu周期 

L2  磁盘----------------------------磁盘平均寻道时间+磁盘旋转平均时间 约是12ms,约是内存访问耗时的10万倍

L3  网络存储-----------------------看具体带宽和网络拓扑结构 + 远程机器访问开销(L0 ~L3的一种) 

 

这里 L3 还可以细分为

L3.1 同一IDC内核心内的网络存储  

L3.2 内网(跨IDC)的网络存储

L3.3 外网的网络存储

 

显而易见地,越上层的访问开销越低,容量也越少,越下层的开销越大,容量也越少,层与层之间的开销。

 

知道了上面的一些基本数据,如何规划,设计存储模型,按照啥原则涅?(傻瓜也知道把东西往上提),但现实不是这么理想的啊。

 

有个很好的原则叫“locality” 局部性。可以从《深入理解计算机系统》第六章找到相关的内容。

局部性有 时间局部性 和 空间局部性。这两个原则在现成的许多系统中都可见一斑。

时间局部性,指的是一个数据被引用过,那么在一定的时间范围内,能被多次引用。memcached等n多cache都是这么整的,glibc的内存块cache啊,包括linux的inode-cache等。

又说空间局部性,指的是一个数据被引用过,那么一定相邻范围内的数据,能在未来被引用。文件预读等就是这个思想。

这两种局部性又是相辅相成的。

 

按照这个局部性原则,规划好数据和存储模型,让大部分的请求落在层级高的存储级别上,就是 最高的指导思想。

我又务虚了T_T

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值