如何实现Linux多台服务器间的文件双向同步(三)

两台服务器间的双向文件同步完整后,要完成3台及以上服务器的双向同步问题,就要来画图说明了。

如何实现Linux多台服务器间的文件双向同步(三)_第1张图片
图中箭头所指的方向表示 指向方执行定时任务以向被指向方 双向同步文件;如图中A app1 指向了 app2则由 app1执行计划任务 与app2双向同步文件。

3台服务器要完成逻辑集群,文件双向同步链路最少需要2条,如图中B的连接方法。
但是B的连接方法有个问题,在假设 3台服务器上传文件的频率及文件双向同步的频率相同的情况下,达到3台服务器完全同步消耗的时间要比A连接画法多。
这里来计算一下:

  • A方案:
    计算总消耗
    app1==>app2最短路径为 1
    app1==>app3最短路径为 1
    app2==>app3最短路径为 1
    求和 为 3 个单位
    任何两台服务器间的路径都为1,则任意一个文件在逻辑集群中最多只需要1个单位的同步时间。
    以 t 来表示理论上随机一个文件达到所有服务器双向同步的时间 (单位为秒 s)
    则A方案的值为 0 s< t < 60 s

  • B方案:
    计算总消耗
    app1==>app2最短路径为 1
    app1==>app3最短路径为 1
    app2==>app3最短路径为 2
    求和 为 4 个单位
    任意一个文件在逻辑集群中最多需要 2个单位的同步时间(app2==>app3)。
    以 t 来表示理论上随机一个文件达到所有服务器双向同步的时间 (单位为秒 s)
    则A方案的值为 0 s< t < 120 s

综上当3台服务器时当然选择A方案的连接方法。

当3台服务器之间的文件双向同步还算是简单的,下面4台服务器为例说说多服务器之间的文件同步.
如何实现Linux多台服务器间的文件双向同步(三)_第2张图片
是不是让人想起了拓补结构图的样子
A属于环型
B属于网状型
D属于星型

同理计算:

  • A 方案 0s < t < 120s

  • B 方案 0s < t < 60s

  • C 方案 0s < t < 180s

  • D 方案 0s < t < 120s

综上 4台服务器的话 建议采用A方案(相对于D方案I/0比较均衡,D方案中app1的I/O是比较繁忙的);如果只想做3台服务器的定时任务,可以使用D方案,把app1当做其他3台服务器共同的同步对象;如果对文件同步频率要求很高的话 采用B方案,当然B方案对I/O的消耗是最大的。

本文讲述的文件双向同步方案 对一般的业务系统非核心数据文件 已经够用了。
比如说 某证券公司A部门在集团总部针对 各营业部 发布了一个通知公告,其中插了几张图片,以笔者在(一)中3台服务器而言,从发布 各营业部相关人员 从看到该通知 并打开 阅读的这段时间里,留1分钟时间给服务器已经足够了。并且实际上后台各服务器之间的文件同步是在 A部门用户通过富文本编辑框 把图片上传到服务器时候开始的,肯定是先于通知公告发布操作的。

所以本文中提出的解决方案可以很好的解决文(一)中描述的问题。

你可能感兴趣的:(linux)