高层概览 – MogileFS文档翻译

原文地址:http://mogilefs.pbworks.com/HighLevelOverview

一下是关于 MogileFS 的工作方式的高层概览。

涉及到的部分:

 

  • 应用 (Application):要存储/加载文件的东西。
  • 跟踪器(Tracker)(mogilefsd 进程):基于事件的父进程/消息总线,管理所有来自应用的客户端通信(要处理的请求操作)。包括均衡负载请求到“请求工作进程”,处理所有 mogilefsd 子进程间的通信。你应该运行两个 tracker 在不同的主机上,以实现 HA 或者进一步实现负载均衡(需要多于两个)。mogilefsd 下的子进程包括:
    • 复制(Replication):四处复制文件。
    • 删除(Deletion):从 namespace 中删除是即时的。从文件系统中删除是异步的。
    • 查询(Query):响应来自客户端的请求。
    • 死神(Reaper):在一个磁盘失败的时候将要复制的文件重新排入队列。
    • 监控器(Monitor):监控主机和设备的健康和状态
  • 数据库(Database):存储 MogileFS 元数据(命名空间、某个文件在哪里)的数据库。应当以 HA 配置搭建,以避免单点失败。
  • 存储节点(Storage Nodes):文件存放的地方。存储节点就是一个支持 DELETE、PUT 等操作的。任何 WebDAV 服务器都可以。但是建议使用 mogstroed。mogilefsd 可以配置为使用两个不同的服务器的不同的端口。使用 mogstored 进行所有的 DAV 操作(以及边界监控),选择你的 快速/轻量 的 HTTP 服务器来处理 GET 请求。通常每个挂载点上有一个 fat SATA 磁盘,每个挂载在 /var/mogdata/devNN 。
高层流程:
  • app 请求打开一个文件(使用库来 RPC 一个 tracker,找到任意一个正常的)。进行一个 “create_open” 请求。
  • tracker 用负载均衡决定可以到哪儿去,并给 app 一些可能的位置。
  • app 写到其中的一个位置(如果中途写入失败,可以重试并写到其他地方)。
  • app(客户端)用 “create_close” API 告诉 tracker 它写到哪里去了。
  • 然后 tracker 把名字连入 domain 的命名空间(通过数据库)。
  • tracker 在后台启动文件复制,直到完成文件类 (class) 的复制策略。
  • 之后,app 对 domain + key 进行一个 “get_paths” 请求(key == 文件名)。tracker 回复(在查询数据库/memcahe/其他)文件所有可能的 URL 。基于每个位置的 I/O 使用率评出权重。
  • app 依次尝试这些 URL (尽管 tracker 的持续监控所有的主机/设备,因此不会返回失败的东西。并且默认会对第一个返回项检查两次,除非你不让它这么做)。

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s