这个问题从我昨天从我的问题中学到的标题为using git to distribute nightly builds继续。使用bittorrent协议每晚分发和CI编译
在上述问题的答案中很明显,git不适合我的需要,并被鼓励使用BitTorrent重新检查。
短版
需要夜间分发构建每天早上人70+,想用混帐BitTorrent的进行负载平衡的转移。
龙版
NB。如果您已阅读我的previous question,则可以跳过以下段落。
每天早上我们需要将我们每晚的作品分发给70多人(艺术家,测试人员,程序员,制作人员等)的工作室。到目前为止,我们已经将构建版本复制到服务器,并编写了一个同步程序来获取它(使用下面的Robocopy);即使设置了镜像,传输速度也会慢得令人无法接受,因为在高峰时间同步需要长达一小时或更长时间(非高峰时间大约为15分钟),这指出硬件I/O瓶颈以及可能的网络带宽。
我知道什么到目前为止
我迄今发现:
我发现有关BitTorrent protocol这是一个有趣的阅读维基百科的优秀条目(我先前只知道种子如何工作的基础知识)。在客户端 - 服务器握手之后发生的BITFIELD交换中也发现这个StackOverflow answer。
我还发现MonoTorrent C# Library(GitHub Source),我可以用它来编写我们自己的跟踪器和客户端。我们不能使用现成的追踪器或客户端(例如uTorrent)。
问题
在我最初的设计,我有我们的编译系统创建的.torrent文件和加入它来跟踪。我会超级种子洪流使用我们现有的构建镜像。
使用这种设计,我需要为每个新版本创建一个新的.torrent文件吗?换句话说,是否有可能创建一个“滚动”。torrent如果构建的内容只改变了20%,那么需要下载的所有内容到获取最新的?
......其实。在写上面的问题,我认为我会需要创建新的文件然而我将能够下载到用户计算机上的相同位置和散列会自动确定什么,我已经有了。它是否正确?
响应于评论
对于完全新鲜同步整个构建(包括:游戏,源代码,本地化数据,和光盘图像为PS3和X360)〜37000页的文件和在未来只需 50GB以下。随着生产的继续,这将会增加。此同步需要29分钟才能完成,此时只有2个其他同步正在发生,如果您认为早上9点我们会有50多个人想要获得最新时间,那么这个同步会出现低峰。
我们已经调查了与IT部门的磁盘I/O和网络带宽;结论是网络存储正在饱和。我们也将统计数据记录到同步数据库,这些记录甚至显示少数用户正在获得不可接受的传输速率。
关于未使用过的,现成的客户,它具有像的uTorrent安装在考虑到其他项目可以容易地使用程序下载的用户机应用程序中的法律问题。我们也希望有一个自定义的工作流程来确定你想要获得哪个版本(例如,只有PS3或X360取决于你的桌面上有什么DEVKIT)并且有可用的新版本的通知等。使用MonoTorrent创建客户端不是部分我很关心。
你分发的文件的大小是多少?你有没有试过一个很好的压缩?您也可以使用二进制比较工具对付以前的版本,该补丁对于几乎每个人都是足够的(其他人将下载完整的软件包)。 – Guillaume
你确定改变协议/工具会解决问题吗?你有没有对你的网络上要发布的内容进行真实的数学分析,比如你的硬件,网络带宽等等。对于这个问题,你是否检查过文件系统系统缓存(cf:http://blogs.technet。 COM/b/askperf /存档/ 2007/05/08 /慢大文件拷贝issues.aspx)? –
我真的不明白为什么你不能使用现成的客户端,你是否也在运行室内网页浏览器和文字处理器? – grapefrukt