设计一个分布式块存储

栏目: 后端 · 发布时间: 7年前

内容简介:最近读了GFS论文,然后想自己造一个轮子出来,毕竟自己的轮子圆又圆。最开始其实是脑子一团浆糊,没想好要怎么完成这个设计。不过仔细想了一下之后,逐步把大的系统拆解之后,然后依次实现和迭代, 最终还是成功的做出来了。

https://github.com/jiajunhuang/hfs

最近读了GFS论文,然后想自己造一个轮子出来,毕竟自己的轮子圆又圆。

设计思路

最开始其实是脑子一团浆糊,没想好要怎么完成这个设计。不过仔细想了一下之后,逐步把大的系统拆解之后,然后依次实现和迭代, 最终还是成功的做出来了。

  • 封装一套POSIX API的操作文件的API,用于操作本地文件,包括CRUD
  • 封装一套操作文件(file)和chunk的API,并且提供gRPC接口,称之为chunkserver
  • 使用etcd来存储关于chunk和file的信息,例如file有哪些chunk组成,顺序是如何,每个chunk大小是多少,实际上写入的数据是多少,把这些信息称之为meta data
  • 给chunkserver加上服务注册的功能,使得在etcd中可以读取到worker的信息
  • 增加一个监听chunk变化的worker,当发现本机有新建的chunk时,就挑选可用的其他chunkserver对该chunk进行同步
  • 更改删除文件的API,删除文件时,删除所有节点上的chunk

差不多就是这样一个顺序。

还可以做的事情:

hfsclient

以上所述就是小编给大家介绍的《设计一个分布式块存储》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript设计模式

JavaScript设计模式

Ross Harmes、Dustin Diaz / 谢廷晟 / 人民邮电出版社 / 2008 / 45.00元

本书共有两部分。第一部分给出了实现具体设计模式所需要的面向对象特性的基础知识,主要包括接口、封装和信息隐藏、继承、单体模式等内容。第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript 程序员最常见的任务,然后运用设计模式使其解决方......一起来看看 《JavaScript设计模式》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码