Cloudfs一致性问题分析及解决

声明
本文为Gleasy原创文章,转载请指明引自Gleasy团队博客

问题产生的背景
格子云自有的分布式文件系统(参见文章分布式文件系统Cloudfs)线上运行2年时间,经受住了各种使用场景的考验。但也暴露出了一些问题,问题之一为,同一group内的结点数据存在少量不同步情况(100万文件中,大概有1个文件,错误率为1:100万),当服务器结点故障时,该问题就会出现,该问题的本质原因是由于cloudfs的同步机制为基于操作序列的异步同步,当服务器异常时,可能会出现同步故障而不会通知,参见文章基于操作序列的一致性机制对分布式系统设计的意义

问题解决
每个结点都记录当天生成的物理文件(并写入LOG).
引入dfs-cron工具,每天凌晨运行一次,向group内其它结点前一天产生的新文件做一次主动的全量检测,遇到未同步的文件,则强制同步一次。如果强制同步失败,则产生报警(通知nagios,并以邮件和短信通知运维人员)。
通过被动同步 主动检测 人工干预三种方式结合,有效避免了文件不同步的情况,使cloudfs的一致性无限接近100%。但又不会丧失自身高性能的优势。

online casino

此条目发表在 Java技术, 分布式技术, 数据库技术, 运维 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

发表评论