客户端询问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通知客户端成功或者失败
客户端可以从第一步开始重试
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。