• GFS


     

    解决的特点

    1.对于组件无法工作可以当作常态,因为机器数量以及廉价等原因,会频频出现机器组件失效问题
    2.对于处理的数据非常巨大
    3.对于数据大部分是追加,而不是覆盖
    4.能够提供API,来随时调整系统
     
    处理大规模顺序读,小规模随机读,能够处理大规模数据,通常被用于 生产者-消费者 模式
     
    一个GFS集群包含一个master和多个chunk服务器,可以同时被多个客户端访问
    ChunkServer:数据存储节点,包含多个固定大小的Chunk
    Chunk:每个文件至少一个Chunk,并存在唯一标示,默认一共3个副本
    master保存了元数据(描述数据的数据),chunk的管理等等
     
    Chunk的大小设置为较大的优缺点
    优点:对同一个Chunk进行多次读写操作,可以减少负载,保持长时间连接可以增强读的性能,可以减少master的内存
    缺点:会让Chunk成为热点,也就是说一直操作这个文件
     
     
    客户端 -(文件名,chunk索引)-> master
     
     
    GFS系统存储的3种主要类型的元数据:文件和chunk的命名空间,文件和chunk的对应关系,每个chunk副本的存放地点
     

    元数据

    元数据都保存在内存中(master),因此chunk的数量以及整个系统的承载能力都取决于master服务器所拥有的内存大小,但其实元数据所占用的内存并不大
    对于chunk的位置信息,master会轮询chunk服务器来获取
    对于某个操作,必须保证操作日志更新以后,才会去相应客户端查询日志文件
     

    租约

    客户端向master查询准备写入的chunk的信息
    master会返回第一个主副本为当前租约的副本
    客户端会向多个副本推送数据
    主副本在将数据写入本地的同时,通知其他副本讲数据写入各自节点
     

    Master节点

    通过锁,使得命名空间的修改为原子性的
    副本的存放,不能都放在同一磁盘或者物理机上,最大化网络带宽
    当创建一个chunk的时候要找一个空间利用率低的节点和磁盘,最近一段时间新建chunk较少的节点,并把副本放到不同的机架上

    垃圾回收

    GFS采取延时回收策略。当要删除文件时,会将其更改一个隐藏名字,并且增加一个删除时间,master会定期检查,一旦超时就会将其删除
    对于master不能识别的副本都是垃圾,但不会立即回收,会在周期性的常规垃圾扫描才回收,并在master相对空闲时完成

    快照

    对当前系统进行拍照,用户可以在任意时刻回滚到快照的状态
    当master收到快照请求时,并不会立即对chunk进行拷贝,只会保存其元数据,等到client需要修改指定chunk时,才会进行本地复制(本地复制可以节省带宽)

    容错

    Master和ChunkSever,都被设计成数秒内可以恢复并且重启,Client和其他服务器发现请求超时,会重连重启的Server
    ChunkServer关闭或者校验出损坏副本时,Master会通过已有的副本来保障副本个数
    CheckPoint文件+操作日志可以完成Master的恢复
  • 相关阅读:
    golang zip 压缩,解压(含目录文件)
    c3p0参数详解
    golang协程——通道channel阻塞
    乔恩与加菲猫引发的思考
    部署bugzilla(bugzilla+apache+mysql+linux)
    新的篇章
    SQL基础2
    SQL基础1
    引用
    const 对象默认为文件的局部变量
  • 原文地址:https://www.cnblogs.com/lmhyhblog/p/10517905.html
Copyright © 2020-2023  润新知