RamCloud 一些疑惑
来源:互联网 发布:node sass dose not 编辑:程序博客网 时间:2024/06/05 14:43
1、什么是RamCloud?
RamCloud 利用普通服务器上的内存为介质组成一个分布式存储, 由于普通服务器的内存大小32G~128G,RamCloud为了提供大容量存储, 所以RamCloud设计的目标是大规模,规模大小是1000到10000.
2、RamCloud是如何保证数据不丢失的?
我们知道内存掉电后数据丢失,如果数据放在内存上,整个集群断电了,数据会丢失吗? 由于RamCloud设计假设是大规模,所以服务器掉电或者坏掉是一个大概率事件,如果同时有3台服务器掉电或者坏掉了,数据会丢失吗? 答案是不会丢失数据。那RamCloud是如何做到的呢?
RamCloud和其他的分布式存储一样,当写数据时会拷贝到其他服务器,其他分布式存储的备份数据保存在hdd或者ssd上,RamCloud是否像其他分布式存储软件一样,把备份数据放在其他服务器的内存里呢? 答案是否,原因有2个:
第一是内存的容量本来就小,如果备份数据放在内存上,则整个RamCloud的容量更加小了。如果容量不变,则成本上升。
第二个数据有可能丢失。对存储系统来说,数据丢失是绝对不能够接受的。
哪RamCloud把备份数据放在哪里呢?答案是硬盘里。这又引出了几个问题:
1)由于写需要同步备份到其他服务器,如果备份的是硬盘,导致RamCloud性能下降,这不符合RamCloud 的设计初衷,RamCloud的其中一个设计目标是低时延。
2) 如果只有一份数据在内存里,如果这个服务器坏掉或者掉电了,这时候是否只能到硬盘里去读数据,这会导致IO 时延急剧下降。这也不符合低时延设计目标。
哪RamCloud是如何解决上面2个问题的呢?
第一问题采用nvram卡, nvram其实就是内存条+备份电池+hdd或者ssd. 在正常供电时,读写的是内存,只有当掉电时,备份电池足够保证内存里的数据保存到ssd或者hdd.
第二个问题采用快速恢复读取磁盘里的数据到内存里,RamCloud采用分布式恢复,在规模比较大的前提下,小于秒级恢复。
采用nvram卡,又会引出其他问题,nvram卡的内存容量有限,主要受制于nvram卡的备份电池量有限。 如果nvram卡的内存大小有限,哪如果是连续写,最后nvram的cache失效,最后实际上和直接写硬盘一样。这个问题怎么解决呢? 我的思路是多个硬盘同时并发写nvram的数据。
- RamCloud 一些疑惑
- 一些疑惑
- RAMCloud使用指南
- 编译器的一些疑惑
- 一些疑惑问题
- java基础----一些疑惑
- C++一些疑惑!
- MDK中一些疑惑
- 关于NAT的一些疑惑
- 解决关于DLL一些疑惑
- 数据仓库生命周期的一些疑惑
- static变量的一些疑惑
- iOS一些疑惑点总结
- Fragment使用中的一些疑惑。
- 总结一些常见的疑惑
- 数据库设计的一些疑惑
- 关于UWP的一些疑惑
- java语言的一些疑惑
- 写在之前的话
- 初识SEO
- smarty多维数组遍历
- web性能优化指南
- 为什么寄存器比内存快?
- RamCloud 一些疑惑
- 组策略中一些与用户登录和设备安装相关的设置
- 新APP上线
- bat命令大全
- HDU 2476 String painter(区间DP)
- 图解TCP/IP 笔记
- Bat基本语法
- IStyleGallery 和IstyleGalleryItem以及IStyleGalleryStorage接口的详解
- java基础:反射字段