前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PassJava 小破站生产级事故,请放弃这个 CDN 吧!

PassJava 小破站生产级事故,请放弃这个 CDN 吧!

作者头像
悟空聊架构
发布2022-07-01 15:05:24
6310
发布2022-07-01 15:05:24
举报

你好,我是悟空。

本文主要内容如下:

昨天读者群里反馈我的网站 passjava.cn 崩了,上去一看果然崩了。

原因就是我的网站引用了这个站点 cdn.jsdelivr.net 的静态文件,而这个站点崩了!

它是一个国际的免费的 CDN 站点,很多公开的 npm 包、Github 仓库,都可以使用它来作为静态资源服务器,而且很多国内和国外的知名网站都用了。

有些同学可能对 CDN 不了解,这里做个说明:

内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。

这个 CDN 是免费的、速度又快,白嫖它谁说不香呢?是真的吗?

墨菲定律

我们生产环境前几个月爆过一次雷,客户反馈后台管理系统崩了,也是因为引用这个站点的 JS 脚本文件加载不出来的问题。

恰巧前天晚上我其实也发现了这个站点访问不了,但过了一个小时后就恢复访问了。

但昨天下午读者又反馈长时间不能访问,那这个就是生产级 T0 的事故了。

这就是墨菲定律啊!如果事情有变坏的可能,不管这种可能性有多小,它总会发生。

报错截图如下所示:

遇到这种情况怎么办?

关于修复方案

  • 先安抚读者情绪。
  • 将问题原因用能听懂的话描述出来。
  • 提供一个修复方案。
  • 提供修复完成的时间。

晚上回家后,我就赶紧开始修复了,其实修复方案也挺简单,就是把所有引用这个 CDN 的静态文件替换成一个可以访问的链接就可以了。具体修复方案如下:

  • 先将 cdn.jsdelivr.net 的静态文件一个一个全部下载下来(浏览器直接输入这个文件链接,然后保存下来)。我的网站上引用了 javascript 脚本、css 文件、json 文件。
  • 然后将这些下载的静态文件全部都放到自己的服务器或者 CDN 上。
  • 替换自己的网站里面的链接。

这里有个问题:这个网站 cdn.jsdelivr.net 已经崩了,如何能下载上面的静态文件?

方案一:等网站恢复后再下载,不断重试,有几率一直访问不了。

方案二:我已经把我用到的静态文件上传到 GitHub 仓库了,如果你用的也是 docsify 框架搭建的网站,可以直接访问这个 Github 仓库下载。

https://github.com/Jackson0714/static-files

关于 CDN

我个人是买了七牛云 CDN 服务和对象存储的,网站流量不大,所以资费不贵。首先把文件都丢到七牛云的对象存储里面,然后拿到文件对应的 CDN 地址,替换到自己的网站中。

注意:有些 js 脚本的代码中也引用了 cdn.jsdelivr.net 的文件,所以还需要改 js 脚本代码,比如我引用的 github 上的 autoload.js 文件里面就有。

如果没有自己购买 CDN 服务,直接上传到大厂商的对象存储也行,比如七牛云、阿里、腾讯的对象存储,这几家都提供了免费的空间。上传到自己的公开的对象存储上之后,就可以拿到静态文件的公有链接了。

如下图所示,我上传到了七牛云上面的对象存储上了,同时七牛云会提供一个 CDN 的链接给我。

另外需要注意的是如果覆盖上传了文件到自己的对象存储后,则需要刷新下 CDN,不然网站加载的文件还是之前上传的,导致网站上看不到改动的效果。如下图所示的刷新界面,填入刷新的目录,点击刷新就可以了,不过有刷新限制,不要频繁刷新。

网站恢复

好了,经过 2 个小时的紧急修复:下载文件、修改 js 脚本、上传文件、刷新 CDN、替换链接等一系列操作,我的小破站终于恢复正常了。赶紧在群里给读者反馈网站恢复了。但问题是读者们把我的这个月的绩效扣没了。。。

最后再说一句,我的小破站买的最低配的服务器,别给我的网站压测了😂,在此蟹蟹了🙏。

电脑端访问:www.passjava.cn。

我是悟空,期待与你一起打怪升级变强,我们下期见!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悟空聊架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 墨菲定律
  • 关于修复方案
  • 关于 CDN
  • 网站恢复
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档