如何实现Linux多台服务器间的文件双向同步(三)
两台服务器间的双向文件同步完整后,要完成3台及以上服务器的双向同步问题,就要来画图说明了。图中箭头所指的方向表示指向方执行定时任务以向被指向方 双向同步文件;如图中Aapp1 指向了 app2则由 app1执行计划任务 与app2双向同步文件。3台服务器要完成逻辑集群,文件双向同步链路最少需要2条,如图中B的连接方法。但是B的连接方法有个问题,在假设 3台服务器上传文件的频率及文
两台服务器间的双向文件同步完整后,要完成3台及以上服务器的双向同步问题,就要来画图说明了。
图中箭头所指的方向表示 指向方执行定时任务以向被指向方 双向同步文件;如图中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 sB方案:
计算总消耗
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台服务器为例说说多服务器之间的文件同步.
是不是让人想起了拓补结构图的样子
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部门用户通过富文本编辑框 把图片上传到服务器时候开始的,肯定是先于通知公告发布操作的。
所以本文中提出的解决方案可以很好的解决文(一)中描述的问题。
更多推荐
所有评论(0)