写点什么

独家 | 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:0013659
用户头像
赵钰莹 极客邦科技 总编辑

发布了 894 篇内容, 共 677.8 次阅读, 收获喜欢 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
回复
没有更多了
发现更多内容

架构训练营 - 第 13 周课后作业 - 学习总结

Pudding

架构师训练营 - 大作业一

Pudding

Linux的进程pid编号极限

程序员架构进阶

Linux 进程

案例展示自定义C函数的实现过程

华为云开发者联盟

数据库 数据 C语言 字符串

Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)

葡萄城技术团队

Vue SpreadJS vite

分布式身份:重新定义你的“身份”管理

华为云开发者联盟

区块链 数据 隐私保护 分布式身份标识

计算机专业必看!难道Android真的凉了?大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

全网最全原理讲解!如何试出一个Android开发者真正的水平?已开源

欢喜学安卓

android 程序员 面试 移动开发

亿级流量峰值没在怕,“缓存”技术来减压!

博文视点Broadview

如果腾讯、阿里是弱生态,那么谁是强生态?

ToB行业头条

深圳区块链交易所开发、数字货币交易平台开发

W13902449729

深圳区块链交易所开发 数字货币交易平台开发

Java并发编程:AQS的公平性

李尚智

Java Java 分布式 java 并发

滴普技术荟-云原生基座OpenKube开放容器实践(二):理解linux虚拟网络设备veth

Linux

万字长文聊缓存(下)- 应用级缓存

Silently9527

缓存 缓存击穿 Caffeine 缓存架构

架构师训练营 - 大作业二

Pudding

2020 — iOS 面试败北感悟

iOSer

ios 面试 iOS Document 底层知识

从根上理解高性能、高并发(三):深入操作系统,彻底理解I/O多路复用

JackJiang

网络编程 高并发 高性能 即时通讯

Appium的安装及简单的使用介绍

行者AI

人工智能

这些常用ETL任务调度框架组件,你都知道几个?

敏捷调度TASKCTL

大数据 kettle 海豚调度 调度引擎 调度式分布

花了19998买的学习教程!2021年Android技术下半场在哪?震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

IT2.0:中台构建还应从企业业务实际出发

华为云开发者联盟

区块链 分布式 安全 数据 身份安全

架构师训练营 - 第 13周课后作业(1 期)

Pudding

抽象照进现实

型火🔥

抽象 视觉化

anyRTC 2020年12月SDK更新

anyRTC开发者

uni-app android 音视频 WebRTC sdk

架构训练营 - 第12周课后作业 - 学习总结

Pudding

滴普技术荟-云原生基座OpenKube开放容器实践(一):如何理解Linux network namespace ?

Linux

入职阿里!全靠刷明白了这份Java面试合集(分布式+Dubbo+线程+Redis+数据库+JVM+并发)

Java架构之路

Java 程序员 架构 面试 编程语言

三年JAVA开发经验,字节四面成功拿下2-2Offer,入职就是30K16薪

Java架构之路

Java 程序员 架构 面试 编程语言

云原生2.0时代,华为云DevOps立体运维实践

华为云开发者联盟

DevOps 运维 云原生 华为云

测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

清菡软件测试

测试

同事临走时,给了我这份多线程and高并发(面试题+思维导图),借此我含泪拿下了阿里offer

Java架构之路

Java 程序员 架构 面试 编程语言

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