武汉的开发者们注意啦!AI技术战略、框架以及最佳实战尽在Azure OpenAI Day 了解详情
写点什么

独家 | 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:0013358
用户头像
赵钰莹 InfoQ 主编

发布了 870 篇内容, 共 598.1 次阅读, 收获喜欢 2669 次。

关注

评论 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
回复
没有更多了
发现更多内容

数仓中长跳转问题复现及解决方案

华为云开发者联盟

寄存器 GaussDB(DWS) 长跳转 编译器O2

IOS技术分享| anyLive 开源项目

anyRTC开发者

ios 音视频 移动开发 视频直播 开源demo

java培训:MyBatis的架构与原理分析

@零度

mybatis JAVA开发

Web 键盘输入法应用开发指南 (3) —— 输入法事件

天择

JavaScript 键盘 输入法 3月月更

Ember 速度最快、性能最高的渲染技术框架之一

devpoint

前端框架 ember.js

为什么需要线程池?什么是池化技术?

王磊

面试

PostmangRPC功能使用介绍

蜜糖的代码注释

gRPC 调试 Postman 3月月更

云原生多云应用利器 -- Karmada 调度器

Daocloud 道客

Kubernetes 云原生 开源软件 Karmada

上手体验!如何借助龙蜥实验室快速部署 Web 应用?

OpenAnolis小助手

开源 国产操作系统 web服务器

会声会影2022脸部索引功能详解

懒得勤快

2022年1月娱乐直播行业用户洞察:行业格局稳定,内容运营精细化

易观分析

iOS防截屏|担心App内容被截屏泄露吗?这个开源库就是你要的

LabLawliet

ios

聊聊redo log是什么

程序猿阿星

Redo Log MySQL InnoDB

为什么需要线程池?什么是池化技术?

CRMEB

DM 中 relay log 性能优化实践丨TiDB 工具分享

PingCAP

web前端培训:Vue3 调度系统的深度剖析

@零度

Vue 前端开发

始于信任 忠于专业|DataPipeline收到一封来自山东城商行联盟的感谢信

DataPipeline数见科技

Hoo虎符研究院|2022年三月值得关注的赛道

区块链前沿News

Web NFT 元宇宙 虎符交易所

Kafka中指定副本为Leader的三种实现方式

石臻臻的杂货铺

kafka 运维

EMQ 正式成为 OASIS 最高级别成员,主导推进物联网协议标准化应用

EMQ映云科技

开源 物联网 ibm mqtt OASIS

检测图片中是否有二维码

逆锋起笔

android 二维码 Android端 3月月更

2022,你的团队距离持续部署还有多远?| 研发效能提升36计

阿里云云效

阿里云 云原生 持续部署 研发团队 研发

如何获取 Docker 容器的 IP 地址

AlwaysBeta

Docker 容器

智汇华云 | Kubernetes多集群管理方案kubefed原理解析

华云数据

云计算 华云数据 虚拟云

一文全面掌握大数据关联与汇聚

云智慧AIOps社区

redis Clickhouse flink sql 大数据开发

通过简书网学习 ActionChains,selenium webdriver 学习第3篇

梦想橡皮擦

Python 3月月更

李凌:6 年,我如何从开源小白成为 Apache 顶级项目 PMC

腾源会

开源 腾源会

Redis现网那些坑:用个缓存,还要为磁盘故障买单?

华为云开发者联盟

redis 缓存 SSD 磁盘故障 缓存Redis

云原生网络利器--Cilium 总览

Daocloud 道客

ebpf cilium 云原生网络 容器网络方案

首发|Clusterpedia 0.1.0 四大重要功能

Daocloud 道客

开源项目 多云管理 K8s 多集群管理 多云资源复杂检索

高性能图计算系统 Plato 在 Nebula Graph 中的实践

NebulaGraph

图数据库 图计算 分布式图数据库

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