PHP Composer

这半个月我们更换了镜像服务器、全面检查了所有文件、把同步间隔降到了一分钟

首先向各位使用 Packagist/Composer 中国全量镜像的小伙伴们致歉,镜像从 2 月 20 日起暂停了更新(镜像仍然是可用的,只是不继续缓存新增的 package 了),今天(3月6日)正式恢复了!

这半个月内咱们的 Packagist 中国镜像在发生了什么变化?下面一一道来:

一、更换镜像服务器

Packagist 中国镜像从一上线就是基于 又拍云 赞助的 CDN 和 UCloud 赞助的云服务器搭建的。在此感谢两家公司的无私赞助!

从 2013 年起我们就和 又拍云 合作了,最开始他们赞助的是我们的 BootCDN 服务,Packagist 中国镜像是他们赞助的我们的第二个公共免费项目,非常感谢 又拍云 一如既往的无限量赞助!

从 15 年起我们开始使用 UCloud 赞助的云服务器,Packagist 中国镜像与 packagist.org 和 github.com 的文件同步所使用的就是 UCloud 位于香港机房的服务器,从上线起一直稳定的运行,一直到今年 2 月赞助结束。

结束赞助其实是我们提出的,原因是:我们希望让同步服务更灵活、更快速。因此我们决定自己购买国外的服务器(主要选定 Linode 和 DigitalOcean),服务器购买资金我们希望小伙伴们一起赞助

同步服务器的配置和部署规划:

  1. 同步服务器按功能分为主、备两台服务器,分别从 Linode 和 DigitalOcean 购买。
  2. 备份服务器只在主服务器故障时才创建、部署并上线服务。因此这台服务器的费用并非一次性支付,而是需要时才按使用时间付款。
  3. 根据我们这两年对镜像运转情况的监测,选用 Linode 或 DigitalOcean 的 双核 服务器即可满足需求,其中 Linode 双核服务器是 4G 内存,DigitalOcean 的双核服务器是 2G 内存,两家都是提供 3TB 的传输流量。

费用:

Linode 和 DigitalOcean 的双核服务器的租金都是每月 20 美金,也就是一年 240 美金,大约 1654 元人民币。

赞助类别及回馈

所有赞助都限定资金赞助,不接受服务器赞助!

  1. 企业赞助:至少赞助一年的服务器费用。您的企业 logo 将会出现在我们网站首页的赞助商列表中。
  2. 个人赞助:赞助费用在 50 元以上,我们会将您的姓名或头像、个人网址展示到个人赞助者列表中。
  3. 大额赞助请发邮件联系我们协商回馈方式:packagist@bootcss.com

赞助通道:

支付宝: 支付宝赞助通道
微信支付: 微信支付赞助通道

二、为 Packagist 中国镜像做全面体检

新年新气象嘛,既然要迁移同步服务器,所以我们决定对镜像做一个全面体检,即对以前同步的文件做一次全面比对,主要是从 Github 同步过来的安装包(zip 文件)和从 packagist.org 同步过来的元数据(json)文件。

对于这两类文件我们采用不一样的策略:对于安装包我们是将存放在 又拍云 上的文件和 Github 上的原始文件做比对;对于元数据文件我们重新下载了一份并处理之后在 又拍云 上新建了一个仓库来存储。安装包大概不到 150 万个,元数据文件大概在 13 万左右。

那就开始干吧!对于安装包文件的检查我们重新 coding 实现了业务逻辑,对于元数据文件的检查是在以前的同步程序上修改的。然后我们在 Linode 和 DiginalOcean 上个各创建了一个服务器实例来对安装包和元数据文件分别做同步。

元数据文件不多,最耗时间的其实是安装包(zip)文件的检查。

再次抱歉停更了这么长时间!

三、降低同步间隔到一分钟

两台服务器在分别对安装包和元数据文件检查的同时,我们对支撑镜像运行的代码进行了重新梳理,优化了同步流程和中间数据的备份机制,并将每一次同步时所需要下载、上传的数据量降到最低,从而将同步时间压缩到最短。

今后你在 https://pkg.phpcomposer.com 首页看到的同步时间基本上每分钟都会有一次同步了。但是,这其中还有两种例外情况:

  1. 对于本次同步时未检测到变化的,我们选择不更新镜像的同步时间。
  2. 本次同步时检测到大量更新,例如新增加了一个 package 或者同时更新的 package 很多,这时需要同步的数据量就会变得很大,本次同步时间会变长。一般情况下每分钟需要同步的 package 不超过 10 个。

当然,还有第三种 “非人力所能控制” 的情况,例如:Github 或 packagist.org 遭遇大量攻击关机了、又拍云出故障了,或者蓝翔技校的挖掘机学员又毕业考试挖光缆什么的,我们都无能为力。

但是,只要 又拍云 是坚挺的,Packagist 中国镜像就一定能用!

四、其他

上面这三点是最主要的变化,其实还有很多细节的变化,我们会继续写文章一一道来。