【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级
镜像下载、域名解析、时间同步请点击阿里云开源镜像站
前言
本文将包括两部分内容:
- 淘宝 npm 域名即将停止解析
- npmmirror 镜像站大重构升级
原淘宝 npm 域名即将停止解析
正如在《淘宝 NPM 镜像站喊你切换新域名啦》 中预告的那样:
http://npm.taobao.org 和 http://registry.npm.taobao.org 将在 2022.06.30 号正式下线和停止 DNS 解析。
域名切换规则:
- http://npm.taobao.org => http://npmmirror.com
- http://registry.npm.taobao.org => http://registry.npmmirror.com
因此,有强依赖老域名的各位开发者请尽快更新到新域名,可能受到的影响和处理方式:
- 企业用户需要联系 网管/IT/SRE 更新防火墙白名单。
- 存量应用的 lock 文件,开发者需要自行执行 sed 等指令去替换或重新生成。
- 本地 npmrc 里面的 registry 地址(如果有,则)需要开发者自行更新。
- 开发者自己的 CL 工具 或 平台应用 里面写死的地址,需开发者自己更新并部署。
- cnpm cli / nrm 等工具,对应的社区同学已经提 PR 更新,大家重新安装最新版本即可。(如发现遗漏麻烦知会下我们)
BTW:我们新的品牌名为: npmmirror 中国镜像站。
npmmirror 中国镜像站大重构升级
我们的 npmmirror 镜像站,自 2014 年正式对外服务以来,不知不觉已经 8 年,2021 年全年的包下载量高达 260 亿次(比 2020 年增长 1.5 倍)。
这些年来,Node.js 领域的技术在快速的迭代升级,我们原来的架构已经很难支撑当今如此大体量的前端生态,因此在 2021 年我们启动了技术升级,并于春节前已经切换完成。
同步逻辑优化
早期我们同步 npm 源站的方式,是没有补偿机制的,所以当因为不可抗力导致同步失败时,需要社区开发者手动执行 cnpm sync 同步下。
在本次优化中,我们实现了一个简单的任务系统,来提供更好的同步补偿机制。
非常感谢阿里云这么多年来的对中国 npmmirror 镜像服务的开源赞助,只能靠仅有的广告位和每年的感谢帖子来回报这份天价的云资源账单。
这一次重构之后,我们验证下来至少可以节省一半的云服务器资源,也算是让阿里云的开源赞助可以减轻一些成本负担。
完全重写的代码
第一点是框架升级,原有的代码 是基于 Koa 的,现基于 Egg 的 TypeScript 模式完全重构:cnpm/cnpmcore 。
@HTTPController()
export class DownloadController extends AbstractController {
@Inject()
private packageVersionDownloadRepository: PackageVersionDownloadRepository;
@HTTPMethod({
path: `/downloads/range/:range/:fullname(${FULLNAME_REG_STRING})`,
method: HTTPMethodEnum.GET,
})
async showPackageDownloads(@HTTPParam() fullname: string, @HTTPParam() range: string) {
// ...
}
}
同时,目录结构基于 DDD 领域驱动设计方式,https://www.yuque.com/liberty/rf322x
app
├── common
│ └── adapter # 外部服务调用
├── core
│ ├── entity # 核心模型,实现业务行为
│ ├── event # 异步事件定义,以及消费,串联业务
│ ├── service # 核心业务逻辑
│ └── util
├── repository
│ └── model # ORM 模型,数据定义
├── port
│ └── controller # HTTP Controller
├── schedule # 定时任务
└── test # 单测
同时,我们的监控体系也切换为基于 Egg 的 Easy-Monitor。
可能存在的问题
鉴于我们是全新架构大重构,尽管我们已经在春节前完成了老数据的全量迁移,但也引起了一些数据同步问题,在此给您带来的不便表示抱歉。
如果遇到 包版本
或 mirror 大包
同步缺漏问题,可以先手动 sync 一次。如还有问题,可以通过 cnpm issue 反馈,我们将在第一时间处理,请大家多体谅。
【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级的更多相关文章
- 淘宝 NPM 镜像站切换新域名啦
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 源起 淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前 ...
- 摆脱npm的网络问题: 淘宝npm镜像
在使用npm install的时候, 经常会因为网络问题, 各种安装不顺利, 一个字'烦躁'. 自从遇上淘宝npm之后,执行cnpm install之后, 怎一个'快'字了得. 闲话不多说, 直接上干 ...
- 怎样使用淘宝npm镜像
淘宝的 NPM 镜像是一个完整的npmjs.org镜像.你可以用此代替官方版本(只读),同步频率目前为 15分钟 一次以保证尽量与官方服务同步. 当前 registry.npm.taobao.org ...
- 淘宝NPM源的使用
npm作为国外的node仓库安装工具,自然会受到我大长城防火墙的干扰,国内用户在安装相关的资源的时候,会出现安装失败,以及速度很慢的情况.为了解决npm安装的问题,国内出现了很多npm的镜像网址,ta ...
- CentOS安装node.js-8.11.1+替换淘宝NPM镜像
注:以下所有操作均在CentOS 6.8 x86_64位系统下完成. #准备工作# 由于node.js-8.11.1在源码编译安装的时候需要gcc 4.9.4或clang++ 3.4.2以上版本的支持 ...
- npm太慢, 淘宝npm镜像使用方法
淘宝 npm 地址: http://npm.taobao.org/ 如何使用 有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法.以淘宝npm镜像举例: 1.临时使用 ...
- 使用淘宝npm镜像
我们都知道淘宝大量采用了Nodej技术,所以它的镜像还是值得肯定的!更多相关可查看:淘宝NPM镜像 npm的官方镜像在国内访问是比较慢的,所以替代方法是使用淘宝npm镜像! 淘宝 NPM 镜像是一个完 ...
- nodejs npm 使用淘宝 NPM 镜像
使用淘宝 NPM 镜像 大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像. 淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读), ...
- 淘宝npm镜像使用
淘宝NPM镜像使用 镜像使用方法 1.config命令 npm config set registry https://registry.npm.taobao.org npm info undersc ...
随机推荐
- Squid代理服务器应用
Squid代理服务器应用 目录 Squid代理服务器应用 一.Squid的脚本概念 1. Squid的作用 2. Web代理的工作机制 3. 代理服务器的概念 4. 代理服务器的作用 5. 代理的基本 ...
- linux_20
总结tomcat优化方法 java程序出现oom如何解决?什么场景下会出现oom? 简述redis特点及其应用场景 对比redis的RDB.AOF模式的优缺点 实现redis哨兵,模拟master故障 ...
- Hadoop完全分布式的配置
选取机器sam01作为主节点,并进行分布式文件的配置 1.进入Hadoop配置文件路径/usr/local/hadoop/etc/hadoop(这里我把Hadoop安装在/usr/local目录下) ...
- 4、架构--NFS实践、搭建web服务、文件共享
笔记 1.晨考 1.数据备份的方式有哪些 全量和增量 2.数据备份的命令有哪些,都有哪些优点缺点 cp : 本地,全量复制 scp :远程,全量复制 rsync :远程,增量复制 3.rsync的参数 ...
- opencv笔记-SimpleBlobDetector
通用的 Blob 检测方法包括:Laplacian of Gaussian(LoG), Difference of Gaussian(DoG), Derterminant of Hessian(DoH ...
- 如何通过pid定位是哪个容器
此时,我有一个pid为28117的进程,通过pdwx命令,无法找到他所在的目录,此时我判定他是docker容器 pwdx 28117 输出如下 28117: / 通过docker ps -q命令,获取 ...
- MYSQL数据表损坏的原因分析和修复方法小结
MYSQL数据表损坏的原因分析和修复方法小结 1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. ...
- .NET 6学习笔记(1)——通过FileStream实现不同进程对单一文件的同时读写
会写这篇纯属机缘巧合,虽然一直以来认为对单一文件的读.写操作是不冲突,可并行的,但实际并未实践过.正好有个UWP的程序要并行读取由Desktop Extension创建的文本,需要有个原型程序来验证, ...
- 实践GoF的23种设计模式:SOLID原则(上)
摘要:本文以我们日常开发中经常碰到的一些技术/问题/场景作为切入点,示范如何运用设计模式来完成相关的实现. 本文分享自华为云社区<实践GoF的23种设计模式:SOLID原则(上)>,作者: ...
- yaml语法及格式校验
基本语法 1.yml文件以缩进代表层级关系 2.缩进不允许使用tab只能使用空格 3.空格的个数不重要,只要相同层级的元素左对齐即可 4.大小写敏感 5.数据格式为,名称:(空格)值 也就是说,如果冒 ...