开发者社区> 问答> 正文

GFS客户端如果是追加一条记录需要经过哪些步骤?

GFS客户端如果是追加一条记录需要经过哪些步骤?

展开
收起
kun坤 2020-04-23 16:04:53 361 0
1 条回答
写回答
取消 提交回答
  • 客户端询问master最新的chunk offset
    如果master没有找到primary chunk(租约过期)
    当没有chunkserver可写,并且最新的版本号 丢失时直接返回错误
    从其他的副本选举出新的primary chunkserver,以及文件的最新版本
    增加版本号,并写日志到磁盘
    告诉primary和secondary最新的版本号是多少
    副本写新的版本到磁盘,并且响应结果给新的Primary
    Master告诉client 主副节点,client会对响应结果缓存。只有当Primary访问不到时才重新请求
    Client发送文件到所有的chunkserver(存内存)
    Client通知Primary进行append
    Primary检查当前租约是否过期,chunkserver是否有足够的存储空间
    Primary根据offset重新计算新的偏移位置
    Primary写chunk 文件(64MB)
    Primary通知secondary 新的offset,并且append 文件到chunk file
    Primary等待所有的副本响应(包括错误的响应,譬如空间不足、超时等)
    Primary通知客户端成功或者失败
    客户端可以从第一步开始重试
    
    
    2020-04-23 16:21:02
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载