有没有类似分布式的 rsync 文件同步部署方案?

2015-12-30 00:05:22 +08:00
 shepherd

最近在做一个项目,多个客户端需要从 rsync 服务器上获取文件,不同客户机需要获取的文件不一定相同(而且相同的概率很小),目前只使用了一台 rsync 服务器,这样一来,当多个客户端同时启动时, rsync 服务器的网络带宽和 IO 瞬间被占满。所以需要考虑使用分布式或者其他的方式来提高文件分发效率。
目前想过几个方案,但是都不算完美:
1.手动布设多个 rsync 服务器,通过控制客户端的配置信息来为其指定 rsync 服务器。这种方案无法最大化发挥多个 rsync 服务器的性能,因为不同客户端需要同步的文件的大小也是有很大差异的( 2G~10G 不等),可能会导致资源的分配不均。
2.btsync ,其设计的思想基本能吻合需求,但是首先不开源,其次客户端只能在命令行下进行自动化的操作,配置和使用起来比较麻烦,不同客户端同步的文件不同,因此可能需要为每个客户端都生成一个种子。
项目对数据传输加密或不加密并没有严格要求,最主要是性能。

6093 次点击
所在节点    云计算
12 条回复
kozora
2015-12-30 00:08:26 +08:00
刚好部署了几台,我是都是在同一个区域的机器,走内网的话,其实还是很快的
shepherd
2015-12-30 00:18:01 +08:00
@kozora 我这也是走内网,一个 B 类网,中间有一些网络设备。
murusu
2015-12-30 00:22:03 +08:00
syncthing
lecher
2015-12-30 00:25:27 +08:00
既然不同客户机获取的文件相同的概率很低,不管哪种方案,不同客户机要同步的文件还是要有独立的配置,这个问题还是回到了手动配置多个权限的事情上面。
所以只要一个同步配置是存在 3 台以上的跨地域服务器,我觉得 btsync 是一个不错的临时解决方案,因为用 rsync 更容易让主服务器出现带宽瓶颈。
毕竟 rsync 和 btsync 都依赖定时任务去唤醒同步检测, rsync 如果同步数据过大,定时间隔设置不好会出现重复任务占用带宽, btsync 至少没有这个同步时间过长会重新发起新任务的问题。
likuku
2015-12-30 00:27:17 +08:00
看着需求,目前也只有 btsync 可以做到了。

btsync 客户端有 GUI 的啊。
likuku
2015-12-30 00:31:01 +08:00
或者自建磁力链系统,通过 openvpn 自有网络来磁力传输,设计客户端可以定期去抓最新磁链 + 给客户端推最新磁链
shepherd
2015-12-30 00:55:04 +08:00
@lecher 这里的同步是不需要定期执行的,一般只在客户端启动的时候执行。
@likuku 哦哦,刚才没描述清楚,客户端是需要在命令行下调用 btsync 。
另外,这些机器都是不连接互联网的。
willis
2015-12-30 02:35:46 +08:00
提醒下楼主, rsync 支持限速的,自己按实际带宽和客户端数量限制一下速度,就解决了带宽和 io 占满的问题了
shepherd
2015-12-30 06:59:29 +08:00
@willis 嗯,其实最需要解决的问题是:客户端太多导致每个客户端同步的时候速度很慢。所以才相当能不能不服务器做成类似 CDN 的效果
julor
2015-12-30 07:50:10 +08:00
试试 syncthing ,就是 btsync 的开源版
Yamade
2015-12-30 08:52:59 +08:00
shepherd
2015-12-30 09:12:20 +08:00
@julor @Yamade 嗯,正在测试 syncthing 的部署效果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/247056

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX