ASF 的系统下载镜像在 25 年间经历了有机发展,随后又进行了系统化改进。它依赖于志愿者们投入的大量时间以及支持免费和开源软件理念的组织的慷慨捐助,从而实现了 Apache 项目软件在全球范围内的分发。
2021 年,ASF 转向了内容分发网络 (CDN),退役了下载镜像系统。以下是它的故事。
Apache 集团(ASF 的前身)一获得 Apache 服务器的可用版本,就希望将其广泛共享。这需要有一个下载站点,供感兴趣的各方获取软件的最新版本。
单个下载站点可以同时处理少量请求,但随着需求的快速增长,下载请求的数量超过了单个站点所能处理的范围。此外,请求来源越远,下载时间就越长,丢失连接并因此需要重新开始的可能性也越大。由于请求很快来自世界各地,这成为了一个严重的挑战。Apache 需要下载镜像来帮助处理负载。
下载镜像站点顾名思义,是主下载站点的副本。镜像每天多次检查主站点,以查看是否有新的或更新的工件需要添加到其提供的资源中。镜像有时可能与主站点相差 24 小时,但大多数时候能够提供主站点提供的所有内容。与主站点相比,物理上更靠近镜像的请求者可以更快地从其本地镜像下载软件。
镜像需要大量的内存、互联网上的可见性、带宽、维护和电力。Apache 依靠组织通过赞助镜像站点来贡献这些资源。第一个镜像站点于 1995 年 4 月上线。第一个镜像提供商之一是 SunSite,“一个提供信息、软件和其他公共可用资源档案的互联网服务器网络”。
1997 年 4 月,Brian Behlendorf 向 66 位托管 Apache 镜像的接收者发送了一封电子邮件,邀请他们加入 Apache 的“mirror@”邮件列表。电子邮件中指出,“镜像站点之间存在不同程度的质量,因此我想建立一个论坛来讨论如何提高这种质量,以及如何展望比 FTP 更好的镜像协议”。
当年 6 月,Brian 写信给该小组,“Apache 服务器 1.2.0 版本的发布导致我们的网站流量空前增加;以至于www.apache.org的带宽提供商开始抱怨。为了解决这个问题,我们采取了一些措施来提高网站支持镜像的有效性。” 其中包括更改:“‘下载’链接已变成一个 CGI 脚本,该脚本根据请求代理的国家/地区代码从镜像列表中选择最适合您的域名的镜像。” Brian、Joshua Slive 和 Eric Abele 是主要系统维护人员。
2000 年,该系统从 CGI 迁移到 MySQL 数据库。但是,在几周内,许多功能停止工作。系统很快又回到了 CGI。
2002 年,Henk P. Penning 首次出现在邮件列表中,他将对镜像系统以及 Apache 的许多其他方面做出重大贡献。那一年,一个下载镜像不得不分配 10 GB 的空间来处理所有可供下载的工件。当时,这似乎是巨大的!
2003 年,Henk 开始生成有关镜像网络的统计数据,为镜像主机提供了一种方法来检查其系统及其与 Apache 连接的健康状况。当年 12 月,备份(回退)站点加入了该系统。Henk 现在是基础设施团队的成员,他规范了 Apache 镜像的监控。
从 2004 年到 2015 年,镜像系统稳步发展,以满足全球对访问 Apache 项目软件的需求。
2007 年,Gavin McDonald (gmcdonald) 加入基础设施团队。他首先关注的是处理大量的积压工单,其中许多是镜像提供商请求加入官方镜像的请求。
当时,管理镜像是一项手动任务,包括访问每个潜在提供商的镜像站点并执行检查(它们是否是最新的,是否至少每天同步两次,是否使用 Apache Web 服务器来提供镜像软件等)。对于许多现有的官方镜像,Gavin 定期执行检查并发送电子邮件提醒镜像提供商其职责,如果镜像已过时。几个月后,Gavin 请求 Henk 创建一个 nag 检查工具,该工具可以检测过时的镜像并自动向提供商发送电子邮件。这节省了大量时间!
Gavin 继续维护镜像系统几年,然后其他志愿者接替了他的工作。最终,基础设施团队接管了这一角色。
2015 年 8 月,部署基于 mod_lua 的系统显著提高了响应时间。
到 2021 年,下载镜像必须为所有可供下载的 Apache 项目分配至少 180 GB 的空间。
下载镜像系统启动时,支持下载的带宽非常昂贵。镜像站点除了为附近的请求者提供更快的下载时间外,还有助于分摊带宽成本。多年来,超过一千个组织托管了 ASF 下载镜像站点,有些组织托管了很长时间。这种贡献对于 ASF 的使命以及整个开源软件世界都非常重要。
技术已经发展,带宽成本已经下降。现在是时候将 ASF 的下载分发转移到拥有专业支持的服务上,以便更好地适应基金会及其项目在当今世界中的地位。ASF 是开源技术领域的主要参与者,我们的下载选项应该支持并反映这种地位。
2021 年第三季度,是转向新的 CDN 的最佳时机。
新的 CDN 是由业界领先企业运营的全球内容分发网络。它提供
项目不应该遇到任何工作流程的更改。他们最终需要从他们的站点中删除有关选择下载镜像的指南。他们将获得关于谁在下载(并可能正在使用)其软件的见解,如上所述。
用户应该体验到更快、更可靠的下载,以及在软件版本可用后立即访问可下载的软件版本,而无需等待镜像站点赶上 ASF 主下载站点。
任何曾经托管 Apache 下载镜像站点的组织,如果发现它对自身有用,都可以继续托管该镜像站点。其他组织可能需要考虑如何重新部署支持其镜像站点的资源,以其他方式帮助 ASF 和开源软件社区。
例如,Apache 软件基金会始终希望扩展我们的 CI 容量。任何希望捐赠计算资源(虚拟机或裸机服务器)的提供商,都非常欢迎联系 builds 团队([email protected]
),以讨论他们如何帮助改善我们的 CI 环境。