请不要滥用 Composer 镜像资源

刚过去的周末为 Composer 中文镜像 / Packagist 中国全量镜像 操碎了心,周六早上又拍云后台查看余额时,发现欠费了:

财大气粗的阿里云,为什么要这样做?希望你能给个说法

又拍云是我们「Packagist 中国全量镜像」的赞助商,当然又拍云不是慈善机构,此次赞助是一次商业行为。我需要拿社区右边栏的一年的广告位,作价 1.5万 RMB 作为置换:

阿里云,请停止这种做法~

代金券发放:

阿里云,请停止这种做法~

下面是最近几个月 的花费情况,六月份的数据还没出来,不过肯定又是新高了:

阿里云,请停止这种做法~

以上罗列这些数据,是希望让大家知道镜像虽然是大家随意使用,但是并不是免费的,是有成本的。

阿里云,请停止这种做法~

一个阿里云镜像(阿里云提供的功能,非阿里云官方),一个晚上脱了 1个多 T 的流量。我想问:他们不知道,流量是需要钱的吗?

镜像流量大部分是正常增长,国内使用 Composer 的项目越来越多,代表大家对新技术越佳适应,这是好事。但是这些流量里,存在许多像「aliyun-oss-mirror」这种我们称之为「恶意流量」的,他们因为「墙」的原因,不从官方下载扩展包,而选择走捷径从国内下载。

在这里,我想对发起恶意请求的同学说一声:请自行想办法下载数据,我们资源有限,无法供你们如此挥霍。

一个正常的开发者,一次 composer install 一般不会超过 20MB,并且本地机器会做缓存,如上面这种恶意请求,一晚上消耗掉我们一个 TB 的数据,1T = 1024GB = 1048576MB,相当于 52428.8 位正常用户的下载,想想就心疼。

常见问题

关于镜像,朋友们都很关心,我把一些问题整理了放下面方便大家阅读。

问:接下来的 Laravel China 镜像何去何从?
答: 我和 [@扣丁禅师](https://learnku.com/users/12063) 接下来会做一些限流措施,减少恶意流量的消耗。我会尽力将我能控制的资源拿出来置换又拍云的代金券,但是如果接济不过来的话,可能会采取一些更加激进的限流措施。

问:要不搞个众筹或者捐赠?
答: 很多朋友跟我提起这个,首先要感谢大家的热心,但是这种事情最好有一个合适的商业模式在里面,才能保持长久维护。做这个事情,钱不应该让个人来出,应该让公司来出,并且公司也能从中得到好处(例如品牌得以推广等),创造双赢的模式。例如 packagist.org 官方的流量更大,那是全世界开发者的流量,但是他们公司就是靠这块服务赚钱的,请见 https://packagist.com/pricing 。在国内,「大厂维护镜像」这种模式也是存在的,阿里、腾讯、华为各大云平台,每年都有以亿为单位的市场推广费用,他们维护的镜像,大家在推广的时候,都会说「华为云 Composer 镜像」、「阿里云 Composer 镜像」等,这是非常高效的广告定点投放,并且相比硬广告,这种广告更加深入人心。中国有句老话,「吃人口软,拿人手短」,开发者后面后相关需求,也会偏向于使用你的服务。

问:如果 Laravel China 镜像资源不够用了怎么办?
答: 我们周末已经开始联系一些大厂,来说服他们提供可用性较高的镜像,我们提供 全量镜像同步的源码 和安装指导,目前已经有几个知名的云平台表示有兴趣,另外在 [@TimJuly](https://learnku.com/users/5161) 的帮助下,也联系了一些有做镜像的高校。我们的目的是让中国拥有更多的 全量加速镜像 ,这样大家有更多的选项,当一个不稳定了,可以使用另一个。也分流了压力,Composer 全量镜像,在接下来几年里,随着新技术的普及,将承受中国几十万甚至上百万的开发者流量,分流压力很有必要。如果你有决心要来构建一个全量镜像,或者你发现了优质的全量镜像,烦请联系我,我将会帮你在各个加速文档里更新你的链接,让更多人受惠于你的劳动。

结语

两年前,中国只有一个 Composer 全量镜像 pkg.phpcomposer.com ,两年后的现在,我们有了更多的选择,现在托 [@扣丁禅师](https://learnku.com/users/12063) 的福,我们有了 全量镜像同步的源码 ,希望以后有更多的全量镜像供我们选择。

本作品采用《CC 协议》,转载必须注明作者和本文链接
摈弃世俗浮躁,追求技术精湛
附言 1  ·  6年前

乌龙了啊,昨天那波流量,是有同学在做测试,已经打电话过来确认了。aliyun-oss-mirror 不是阿里云,是阿里云平台上的一个镜像功能,此功能还支持自动切换 IP ,这也解释了为何后台有 500 个阿里云 IP 的情况。实在抱歉,误会了阿里云老哥。

附言 2  ·  6年前
附言 3  ·  6年前

这次乌龙,已经给阿里云写了 致歉信 。另外,措辞比较强烈的评论,为了不造成更多伤害,我就冒昧屏蔽了哈。

本帖由系统于 6年前 自动加精
Summer
讨论数量: 31
m01i0ng

无意中发现上海交大提供了 Packagist 镜像 https://mirrors.sjtug.sjtu.edu.cn/packagis...,可以作为分流

6年前 评论
Summer (楼主) 6年前
m01i0ng (作者) 6年前
hainuo 6年前
Egfly

这波操作太恶心了

6年前 评论

耍流氓

6年前 评论

对了,顺便问一下,我用composer-mirror自己搭建的时候出现一些问题。
上传composer.phar文件到又拍云报错

{"msg":"need bucket name","code":40000003,"id":"79b4a04008ff050cc28530bb5112fff9"}

配置文件是配置了bucket参数

'cloudDisk' => (object)[
        'adapter' => 'ZenCodex\\Support\\Flysystem\\Adapter\\UpyunAdapter',
        'config' => [
            'operator' => 'tegic',
            'password' => 'password',
            'bucket' => 'bucket ',
            'uploadType' => 'BLOCK',
        ],
        'bucketMap' => [
            'json' => 'mirror-json',
            'zip' => 'mirror-dist',
        ]
    ]

麻烦 @扣丁禅师 解答一下呢。谢谢。

6年前 评论
扣丁禅师 6年前
mysql (作者) 6年前
扣丁禅师 6年前
mysql (作者) 6年前
# php getcomposer.php
已解析版本路径: /download/1.8.6/composer.phar
https://getcomposer.org/download/1.8.6/composer.phar => 准备上传到CDN
Client error: `PUT http://v0.api.upyun.com//composer.phar` resulted in a `400 Bad Request` response:
{"msg":"need bucket name","code":40000003,"id":"79b4a04008ff050cc28530bb5112fff9"}
6年前 评论
梦之马

真恶心,一般人就用几十m,他直接按 G作为单位计算了

6年前 评论

有点奇怪, 他们这么大的厂 为什么不从官方拉? 别告诉我他们不会科学上网, 还是说嫌官方的慢?

6年前 评论
Summer (楼主) 6年前
cnguu

声援一波

6年前 评论
耐小心

@Summer 在OSS中有个回源功能 如果OSSbucket中不存在这个文件 就会回源获取 没记错的话 就是这个UA

file

** - 39.107.223.152  - - - - [24/Jun/2019:12:28:32 +0800] "GET /test HTTP/1.1" 404 166 "-" "aliyun-oss-mirror"  --------"-" "-" "-" "0.000"
6年前 评论
ShiKi

这波操作有点骚啊~

6年前 评论

相关人员知道这个帖子后,会说:“我以为又拍云是不限量让社区用的,所以才直接下载,不好意思啊”。

6年前 评论
Summer (楼主) 6年前
老财

已经转发,不过有几处错别字,龙哥修改下,更掷地有声

6年前 评论
巴啦啦

这波操作的负责人,做法有点毒

6年前 评论
QiFengLe_

旧的问题解决了,新的问题来了。特别好奇那位同学在做什么测试,会用到这么多的流量,方便分享一下吗。 :blush:

6年前 评论

那位做测试的同学到底用来测试什么

6年前 评论

Summer , 真不好意思哈,我也跟着出名了。。

6年前 评论
QiFengLe_

博客:对用阿里云 OSS 把 LC 作为回源表示很抱歉 想知道那个哥们干嘛的戳一下小链接就进去了。

6年前 评论
AloneUtopia

峰回路转 :joy:

6年前 评论

剧情神反转。。。。

6年前 评论

官方不应该也发个道歉申明?

6年前 评论

心疼一下,下一步应该考虑如何对一些恶意操作做一些限制

6年前 评论

?????

6年前 评论
m01i0ng

无意中发现上海交大提供了 Packagist 镜像 https://mirrors.sjtug.sjtu.edu.cn/packagis...,可以作为分流

6年前 评论
Summer (楼主) 6年前
m01i0ng (作者) 6年前
hainuo 6年前
阿麦

过分了啊 咱们本来就白嫖镜像了 给人添乱卡油就过分了

6年前 评论
6年前 评论
Hachiko 6年前
LeoYao 6年前

为什么腾讯云上面用不了laravel社区镜像了?说是要username

6年前 评论

楼主 现在使用 是不是要输入用户名和密码验证?

6年前 评论

难道不是用的固定带宽?按量收费?

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!