zoukankan      html  css  js  c++  java
  • 基于sersync海量文件实时同步

    项目需求:最近涉及到数百万张图片从本地存储迁移到云存储,为了使完成图片迁移,并保证图片无缺失,业务不中断,决定采用实时同步,同步完后再做流量切换。在实时同步方案中进行了几种尝试。

    方案1:rsync+inotify同步,最先想到的是此方案,先看下脚本
    此前在多台服务器间同步代码就用此方法,基本上没问题,因为代码文件数并不多,但这次面对大量小文件时其缺陷暴露了,同步非常耗时,并且没不能做到实时同步。为什么呢?每次新增数据rsync都会对全目录扫描,对比文件差异,并且是全量同步,耗时很长,新增的数据只能等上一次全量同步完再触发同步,这样就没法实时同步,因此此方案最终被我放弃。

    方案2:采用sersync,sersync由金山的一位同学开发,实际上是整合了inotify和rsync上做的二次开发,对监听事件进行了过滤,并且同步时只同步单个文件或单个目录,对于数百万的文件或目录比较多的的情况,只用同步单个子目录而不是整个目录,并且支持多线程同步,也就是说可同时同步多个子目录,这样同步效率大大提高,并且做到了实时同步。

    总结:经过实际检验,sersync对我数百万张图片数据做到了实时同步,新增的数据能够立马同步到另一台,最后上百G的图片数据实现了平滑迁移。

  • 相关阅读:
    剑指offer-替换空格
    Python replace方法并不改变原字符串
    退出循环break,在while、for、do...while、循环中使用break语句退出当前循环,直接执行后面的代码。
    do{}while()
    while循环
    for循环
    switch用法
    Javascript获取select下拉框选中的的值
    js关于a++ 与++a
    onload属性使用方法
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/10245289.html
Copyright © 2011-2022 走看看