zoukankan      html  css  js  c++  java
  • 分布式存储bfs

    来自bilibili的bfs,很喜欢它的分层结构,我认为,把它改造成类似hadoop的平台,也是可以的。

    1.实现分布式存储

    其实就是同步元信息和调度的问题,同步元信息可以使用zk,调度具体看应用。bfs的调度是随机的,根据硬盘容量来决定。bfs的调度和存储是分开的,因此可以定制,这也是它的优点之一(不过这方面没有做到插件化)。

    2.存储和调度隔离的方法

    存储是根据整数id作为key,写入到一大块文件上,每个大文件有一个id,叫vid。而文件里面的大量数据对象的偏移,即所谓索引,保持在另一个文件上,开机即读取到内存中,方便索引。

    vid和所属服务器,存在zk上。

    文件名和路径和vid、key的对应关系,存储在hbase等数据库。

    这样,通过映射,分离了调度和存储。

    3.实现多备份,多镜像

    多个备份就会涉及到调度,这里bfs用zk创建多个group实现,相同的资源id可以同时存在不同的group下(利用了zk的树结构),这样就允许了多镜像,即多备份。当然,资源id太多了,是不会直接存在zk上的。

    4.资源id的生成

    通过类似snowflake算法,可以分布式生成唯一id,即使出现down机也能保证唯一性。

  • 相关阅读:
    Solr 配置连接数据库
    最大利润
    分割金条的最小代价
    民居点亮
    一个会议室最多安排几场宣讲
    N皇后问题
    Integer的缓存机制
    Windows快捷键
    二叉树中两个节点的最低公共祖节点
    判断二叉树是不是完全二叉树
  • 原文地址:https://www.cnblogs.com/dearplain/p/9563414.html
Copyright © 2011-2022 走看看