最近在做一个项目,多个客户端需要从 rsync 服务器上获取文件,不同客户机需要获取的文件不一定相同(而且相同的概率很小),目前只使用了一台 rsync 服务器,这样一来,当多个客户端同时启动时, rsync 服务器的网络带宽和 IO 瞬间被占满。所以需要考虑使用分布式或者其他的方式来提高文件分发效率。
目前想过几个方案,但是都不算完美:
1.手动布设多个 rsync 服务器,通过控制客户端的配置信息来为其指定 rsync 服务器。这种方案无法最大化发挥多个 rsync 服务器的性能,因为不同客户端需要同步的文件的大小也是有很大差异的( 2G~10G 不等),可能会导致资源的分配不均。
2.btsync ,其设计的思想基本能吻合需求,但是首先不开源,其次客户端只能在命令行下进行自动化的操作,配置和使用起来比较麻烦,不同客户端同步的文件不同,因此可能需要为每个客户端都生成一个种子。
项目对数据传输加密或不加密并没有严格要求,最主要是性能。
1
kozora 2015-12-30 00:08:26 +08:00
刚好部署了几台,我是都是在同一个区域的机器,走内网的话,其实还是很快的
|
3
murusu 2015-12-30 00:22:03 +08:00
syncthing
|
4
lecher 2015-12-30 00:25:27 +08:00 1
既然不同客户机获取的文件相同的概率很低,不管哪种方案,不同客户机要同步的文件还是要有独立的配置,这个问题还是回到了手动配置多个权限的事情上面。
所以只要一个同步配置是存在 3 台以上的跨地域服务器,我觉得 btsync 是一个不错的临时解决方案,因为用 rsync 更容易让主服务器出现带宽瓶颈。 毕竟 rsync 和 btsync 都依赖定时任务去唤醒同步检测, rsync 如果同步数据过大,定时间隔设置不好会出现重复任务占用带宽, btsync 至少没有这个同步时间过长会重新发起新任务的问题。 |
5
likuku 2015-12-30 00:27:17 +08:00
看着需求,目前也只有 btsync 可以做到了。
btsync 客户端有 GUI 的啊。 |
6
likuku 2015-12-30 00:31:01 +08:00
或者自建磁力链系统,通过 openvpn 自有网络来磁力传输,设计客户端可以定期去抓最新磁链 + 给客户端推最新磁链
|
7
shepherd OP |
8
willis 2015-12-30 02:35:46 +08:00 via iPhone
提醒下楼主, rsync 支持限速的,自己按实际带宽和客户端数量限制一下速度,就解决了带宽和 io 占满的问题了
|
9
shepherd OP @willis 嗯,其实最需要解决的问题是:客户端太多导致每个客户端同步的时候速度很慢。所以才相当能不能不服务器做成类似 CDN 的效果
|
10
julor 2015-12-30 07:50:10 +08:00 via Android 1
试试 syncthing ,就是 btsync 的开源版
|
11
Yamade 2015-12-30 08:52:59 +08:00 2
|