写点什么

独家 | PHP 开发者福音:阿里上线 Composer 全量镜像

  • 2019-07-12
  • 本文字数:2184 字

    阅读完需:约 7 分钟

独家 | PHP开发者福音:阿里上线Composer全量镜像

InfoQ 独家获悉,阿里云今日宣布正式上线 Composer 全量镜像,这款工具几乎可以与 PHP Packagist 官方实时同步,每隔 30 秒刷新全国 CDN 缓存,这对于沉浸在 Laravel China 即将关闭消息中的开发者而言,可谓是一个好消息。


一周前,个人开发者 Summer 在博客上宣布:Laravel China 镜像将于两个月后停用,并给出了迁移新镜像的相关注意事项。对 PHP 开发者而言,Laravel China 镜像还是非常受欢迎的,此次宣布关闭确实是因为遇到了无法很好解决的问题。


7 月 12 日,InfoQ 独家获悉:阿里云正式上线PHP Composer全量镜像,所有 PHP 开发者均可使用。如今,PHP 开发离不开 Composer,但通过 Composer 安装第三方包时,代码数据一般从 Github 上下载,而安装包的元数据则从 Packagist 下载,速度通常较慢。因此,阿里云选择上线 PHP Composer 全量镜像。就此,InfoQ 对该项目相关技术专家进行了独家专访,了解这一项目背后的故事。

PHP Composer 全量镜像

据介绍,PHP Composer 全量镜像可以理解为一个镜像库,类似 Node.Js 的 NPM 镜像,该工具的最初研发灵感源自阿里内部一位 90 后工程师顾咏,由于其日常负责开发阿里云产品的 PHP SDK,在工作中经常遇到同一个问题:尽管已经根据 PHP 最新版本发布了新的 SDK,但由于镜像工具没有实时同步版本,导致用户安装不成功。



此外,阿里巴巴云效平台也提出同样诉求,目前有近 6 万家企业的开发者在云效平台上进行一站式企业协同研发,其中有相当一部分在构建 PHP 工程,镜像工具同样影响这部分开发者体验。因此,顾咏向主管朴灵提议:开发一款快速且稳定的镜像工具。


当时,业内也存在一些开源工具,但普遍缺乏有力支持,稳定性和速度无法满足需求。由于朴灵本人是 Node.js 布道者,NPM 中国镜像的前两代搭建者,因此对此类研发较为支持,而顾咏曾对镜像系统有过研究,因此整个研发过程相对顺利,相比同类工具研发可能节省了不少时间。


采访中,顾咏表示,国内镜像所做的是缓存所有安装包和元数据到自己的服务器,并通过国内 CDN 进行加速,实现 Composer require/install/update 的操作,并达到最快速度。阿里云开源的 PHP Composer 全量镜像能够实现与 PHP Packagist 官方实时同步,每隔 30 秒刷新全国 CDN 缓存。基于阿里云 OSS 和 CDN,研发同步系统,通过任务分发,实现快速和稳定的同步。

使用方式

全局配置(推荐)


所有项目都会使用该镜像地址:


composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
复制代码


取消配置:


composer config -g --unset repos.packagist
复制代码


项目配置


仅修改当前工程配置,仅当前工程可使用该镜像地址:


composer config repo.packagist composer https://mirrors.aliyun.com/composer/
复制代码


取消配置:


composer config --unset repos.packagist
复制代码


调试


composer 命令增加 -vvv 可输出详细的信息,命令如下:


composer -vvv require alibabacloud/sdk
复制代码

Laravel China 即将关停

如开篇所言,Laravel China 即将于两个月后关停。在这款 PHP Composer 全量镜像之前,Laravel-China 可能是众多 PHP 开发者最常用的镜像工具之一。简单来说,Laravel China 是一款 Composer 全量镜像,提供相同的功能,由个人开发者 Summer 和禅师在 2017 年开发推出,在 PHP 社区中受到开发者的热烈欢迎,但在稳定性和实时同步上都还存在一些问题。同时,随着使用量增加,也遇到了流量成本超标、恶意流量等情况。


7 月 3 日,阿里云开始小范围公测 PHP Composer 全量镜像,在没有任何官方推广的情况下,单日下载量甚至超过 30 万次,测试期间主要关注提高 CDN 的刷新速度。同时,Summer 接收到无数开发者的询问:Laravel China 镜像将何去何从。


根据 Summer 的个人博客:经过与禅师的讨论,Summer 做了一个艰难的决定:Laravel China 镜像将于两个月后停用。Summer 解释道:“我们的 CDN 资源是有限的,为了防止恶意流量消耗,本着牺牲少部分人的使用体验,让大部分人能正常使用的初衷,我们在后台做了诸多限制。例如说同一个 IP 下一分钟内只能下载多少次,最大允许下载的文件大小(后台观察到有超大的 zip 包)等。”


限制加上去后,恶意流量有所减少,对成本控制起到很好的效果。但是随之而来又出现了另一个问题:


误杀率较高,分析了下原因,有可能是带宽速度过快,触发「分钟内下载频率限制」,或多人共用一个 IP,这种常见于同一个公司有多名使用者,出口 IP 是同一个的情况。

我们陷入一个两难的境地:基于 CDN 平台上提供的机制,实难分辨上面的这些请求。解开限制,又会出现流量成本超标的情况。误杀情况无法避免,可预知的,接下来还会出现更多的反馈「Composer 要求用户名」的帖子。


最终,Summer 认为:与其维护一个残缺的镜像,还不如让贤,推广其他稳定、可用性高、流量不限制的大厂镜像。



作为个人开发者,Summer 与禅师牺牲了很多时间用于项目维护,这是非常值得肯定的。在众多可替代项目出现之后,Laravel China 镜像选择在这个时候停用,也算是不辱使命,功成身退。

结束语

如今,阿里云正式开放下载PHP Composer全量镜像,虽然这会带来 ECS、CDN 方面的资源成本,但可以给广大 PHP 开发者带来实际价值,这也体现出个人开发者维护开源项目的不易。现在,国内全量镜像有了更多选项,众多大厂均参与其中,再加上 镜像源码 开放,降低了构建镜像的成本,相信未来还会有更多选项可供选择。


项目地址:https://developer.aliyun.com/composer


2019-07-12 11:0013668
用户头像
赵钰莹 极客邦科技 总编辑

发布了 894 篇内容, 共 680.1 次阅读, 收获喜欢 2694 次。

关注

评论 5 条评论

发布
用户头像
phper的福音。
2019-07-12 15:27
回复
可以关注下项目动态,期待您的反馈和建议~
2019-07-12 16:20
回复
强的一塌糊涂
2019-07-12 18:37
回复
用户头像
牛逼
2019-07-12 13:57
回复
用户头像
对志愿维护开源项目的个人开发者致敬,也肯定现在众多大厂的开源精神
2019-07-12 11:44
回复
没有更多了
发现更多内容

【HZERO微服务平台3】源码分析之oauth服务token生成、校验、获取信息、传递

qiaoxingxing

签约计划第二季

如何优雅地在Vue页面中引入img图片

CRMEB

英特尔技术发力:着眼10倍封装密度提升,30%~50%晶体管密度提升,布局非硅基半导体

科技新消息

百度开源一款基于 Git 的多仓库管理工具:MGit

百度开发者中心

git 开源

3天后,浪潮云有大动作!

【HZERO微服务平台2】源码分析之网关

qiaoxingxing

签约计划第二季

XML数字签名原理篇

RingCentral铃盛

Hoo虎符研究院 | 区块链简报 20211213期

区块链前沿News

区块链 Hoo 虎符交易所

恒源云(GPUSHARE)_CV领域之几何变化

恒源云

深度学习 CV

降低成本对技术组织意味着什么?

田晓亮

云计算 serverles

区块链产业规模约达50亿元,已成为数字经济发展重要引擎

CECBC

OAuth2.0面面观

RingCentral铃盛

2021阿里云弹性计算年度峰会将于12月21日开启线上直播,五大看点不容错过

阿里云弹性计算

弹性计算 年度峰会 线上直播

Hoo虎符研究院 | 币圈后浪 ——DVD

区块链前沿News

Hoo 币圈后浪 项目分析

CSS之选择器(五)

Augus

CSS 12月日更

火遍全网的「蚂蚁呀嘿」教程开源了!

百度开发者中心

开源

值得收藏!2021百度开源技术干货大汇总

百度开发者中心

开源 2021 内容合集 技术专题合集 百度开源

【HZERO微服务平台5】JHipster接入HZERO

qiaoxingxing

签约计划第二季

XML数字签名实践篇

RingCentral铃盛

深入研究【HZERO微服务平台】开源免费的企业级PaaS平台

qiaoxingxing

内容合集 签约计划第二季

TDengine在同花顺组合管理业务中的优化实践

TDengine

数据库 tdengine 时序数据库

首个国产元宇宙“希壤”来临,百度成了先锋!

CECBC

实体链接在小布助手和OGraph的实践应用

安第斯智能云

人工智能 深度学习 算法 nlp 知识图谱

java实现数据导出

卢卡多多

28天写作 数据导出 12月日更

ZooKeeper 分布式锁 Curator 源码 05:分布式读写锁和联锁

程序员小航

Java 分布式锁 curator

如何在建木CI中使用Vault管理密钥

Jianmu

DevOps CI/CD 开源软件

简单3步,OpenHarmony上跑起ArkUI分布式小游戏

HarmonyOS开发者

OpenHarmony

【HZERO微服务平台1】开源免费的企业级PaaS平台

qiaoxingxing

签约计划第二季

跨平台多主机键鼠共享

Arch

【HZERO微服务平台4】源码分析之admin服务刷新路由、权限、swagger的过程

qiaoxingxing

签约计划第二季

全新“支付方式”来了,数字货币六大行公开支持,安全且转账免费

CECBC

独家 | PHP开发者福音:阿里上线Composer全量镜像_文化 & 方法_赵钰莹_InfoQ精选文章