惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
IT之家
IT之家
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
L
LangChain Blog
博客园 - Franky
美团技术团队
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
小众软件
小众软件
Y
Y Combinator Blog
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 Clash 结合 工作VPN 的网络设计 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例)
设计一个分布式块存储
Jiajun Huang · 2018-07-08 · via Jiajun的技术笔记

设计一个分布式块存储

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

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

还可以做的事情:

  • 读文件的API需要改成从metadata中获取信息,然后从对应的chunkserver中获取chunk
  • 读文件的客户端 hfsclient 可以改成并发下文件
  • 增加检查chunk和file是否数据损坏的worker