BING
斯是陋室,唯吾芳馨
原创

我把服务从七牛云迁移到阿里云了

共 3,849 字,需阅读 10 分钟2019/11/10 下午11,686 次阅读

我这俩礼拜都在忙一件事,就是把 Blog 相关的资源服务 “从七牛云迁移到阿里云”。

我公司对接的 PM 是负责 kodo 产品(七牛云存储)的,在最近深度体验了 Aliyun 的 OSS 相关产品后,我深深感觉到了自家产品的不完美和止步不前;于是我决定把用了两年的 CDN + 存储业务从七牛云迁移到 Aliyun。

一开始只是想简单做个迁移,过后又顺带把之前未曾考虑过的 OSS 备份、机密文件备份、CDN 优化都实施了一遍;因为,在 Aliyun 的后台,你感觉做这些事太 “自然” 了。

#迁移

一开始迁移的诉求很简单:我期望我对一个系统的控制力是内聚的、低熵的、不要太分散,最好在一个页面、一个控制台就可以全部管理,而不是要跳去很多不同的平台、子系统,简单说就是 “全家桶” 用着确实很爽。

在许多产品的设计里,这种 “完美的界限感” 都体现为很普通、简单的设计:比如云存储与 CDN,从内部看,这是完全两个不相关的产品,仅仅是各自提供了 “可以与其他产品搭配使用” 的能力, 但对于用户来说,几乎没有用户拿平台分配域名单独使用云存储的,但也有我这种单独拿一个存储空间当私密网盘用的人... 这时候就很需要系统具有 “单独使用简单易用、搭配组合清晰明了” 的设计意识。

这种意识最适合的表达往往只是一个 Tips、一个按钮、一个 Link,千万不要复杂的 iFrame、复杂的页面说明、冗余的重复实现。

之前的博客云存储我分为三个模块:

  • Backup(低频),数据库等其他敏感数据的备份,纯私有,不可访问,仅管理员操作用于服务端备份数据
  • Gravatar(标准),gravatar.com 的镜像服务,用于解决 Wall 的问题
  • Static(标准),全站的用户数据,用于存储如文章内的图片、缩略图

Backup

上礼拜某天,我需要下载 Backup 内的某个压缩包文件,结果发现没有入口... 在和 PM 唇枪舌战了一上午后,得到这么个信息:由于用户没有为存储空间绑定自定义域名,故用户不可下载文件,用户仅可执行写、删操作; 之前七牛包括其他云厂商都是为每个 Bucket 配有系统分配域名的,现在 Aliyun 外的大部分厂商都下架了,原因是:“若存储资源涉及违法犯罪信息,则域名/服务提供商为第一负责人”。

如果这次我需要下载的数据是某个数据库的备份,需要紧急使用呢,等工单回复吗?深深的不安感...

其实这个问题不是不能解决,看阿里云是怎么干的:

目的是限制传播,那就每次仅可临时访问,没有永久链接的存在,再严格点,我们可以让每个临时链接只允许被访问(下载)一次,这样总可以吧。

资源合并

为某个很次要、单一的基础业务单独开一个子域名是一件比较奢侈的事情,还好我都是个人项目。 之所以有 https://gravatar.surmon.me 这个域名的存在,是因为我一直不知道一个 Bucket 完全有能力做到自定义(回源 + 存储)规则,更不知道 Aliyun OSS 是已经实现的。

在使用迁移工具完成 Static 的迁移后,我才发现,OSS 里的 Bucket 的镜像回源并不是与存储互斥的单一业务,你完全可以做到某个 Bucket 里存储一大堆资源,并限定 /xxx 目录映射为 xxx.com 的反代; 这很棒,所以现在, https://static.surmon.me 是 Static 的访问入口,当 Static 的数据有变动时会自动刷新/预热 CDN,而 https://static.surmon.me/avatar/ 是 gravatar.com 的镜像服务,且 Gravatar 相关的数据每 7 天会自动更新一次。

这个业务的合并,节省了一个域名资源,使消费和统计信息集中,CDN 和存储空间之间的关系也变得更加自动化了,主要得益于 Aliyun OSS 的 “自定义回源规则” 及 “Bucket 生命周期规则” 的灵活。

另外,虽然这一切都是要钱的,但是根据我对自己业务最近一年消费的回溯统计,阿里云计费的抹零机制会把这些消费都归零... 但我还是买了个 10 块钱的 CDN 大陆流量资源包,100G 轻松够用了(我的 CDN 开的是全球加速)。

#备份

很久前,在经历一次误操作失误后,我才意识到备份的重要性,我原有的备份系统大概如此:

  • ECS 低频每周备份,保留一个月,保证最少存在一个月内的两份快照
  • 数据库 超高频每天备份,备份存储一个月,也就是说没有意外的话,任何时候都有 30 份数据库备份同时存在

今天,我才突然意识到 OSS 里的数据也是 “用户数据” 的一部分... 如数据库般的存在。

一开始我想的是,把 OSS 作为云存储网关挂到 ECS 上,每周快照生成前,都把 OSS 里的东西拉一遍,让快照自己去打包就行了,这个方法就是有点不易操作、耗流量、费钱费事。 接着,很快我就发现了 Aliyun 有他自己的备份业务... 还支持的挺全面的,于是乎我的备份就又简单而清晰地变成了这样:

ECS 文件备份的意义是弱化 ECS 快照的重要性,这样如果我改错了什么配置文件,就不再需要回滚镜像了,恢复下几个重要文件的备份就可以。

#CDN 优化

CDN 部分纯粹是业务的优越性了,Aliyun 的 CDN 业务真的很精细,支持 quic(HTTP3)、自定状态码处理、Heade 头、特定路由(可正则)处理、缓存、TLS 版本、资源优化、IPv6、带宽限制... 基本上满足了绝大部分对原生 WebServer 的控制需求。

而我能用到的最直观的效果就是,我可以控制 https://cdn.surmon.me 永远只能访问静态资源了,以前我是没有做到的。

#广告

Aliyun 的业务专业度让我觉得这家公司真是人多钱也多... 自家精简又裁员的业务可能要被慢慢吞噬消灭了...

除了 “老用户与狗不得入内”,每年打折季对新用户都还算良心,其实我自己的机器就是两年前的双十一下单的,2核 4G 的共享型,当时买了三年花了 1.5k 不到,现在续费要 2k... 每家都一样,吃准了你的迁移成本,疯狂捞用户。

明年到期时,我准备把机器降级了,这个机器对于一个 Blog + 一堆垃圾小程序来说,算高配了;还有一个原因是,CDN、存储、云数据库... 等这些业务已经很明显地降低了主站的运行成本,我也过了那个 “无脑升配置” 的阶段啦。

好了,点下面的图片!!如果你也只是想跑一个像我这样的自建 Blog,就买那个86元/一年的就够了,真有其他业务需求再升配就好了,但一定要多买几年啊!!!续费很贵!!!


刚才给同事推荐了一把,才发现,原来更划算的是这款!!真的,就是我去年买 ¥1600 买的续费要 ¥2000 起的,现在只要 ¥799.00/3年。。。还是 3M 带宽! 我 TM。。。


11-12 更新:双十一已经结束,谁想到这阿里云鸡儿贼地像天猫某男装品牌一样又返场了。。。

所以,我强烈建议作为新用户的你一定要先领红包(官方发的),再下单!点击下面图片就可以了~


领取限量红包!!



祝折腾愉快

署名 - 非商业性使用 4.0 国际 https://surmon.me/article/162
27 / 27 条看法
访客身份
在下有一拙见,不知...
  • George Avosa
    George avosa🇰🇪KENairobiLinuxChrome

    sure

  • 111
    111🇨🇳CNBeijingWindowsChrome

    这就能回复了?

  • Superficial
    Superficial🇨🇳CNWuhanAndroidChrome

    大佬,你太强了,向你学习,目前正在学习大佬的源码 😜

  • 菜鸟
    菜鸟🇨🇳CNShenzhenWindowsFirefox

    太强了

  • 独书先生
    独书先生🇨🇳CNShanghaiWindowsChrome

    😃跟大佬学习

    • 发范德萨
      发范德萨🇨🇳CNShenzhenMac OSChrome

      回复

      跟大佬学习 !

  • siyu
    Siyu🇨🇳CNXiamenWindowsChrome

    用了大佬的三段代码部署,    感觉不适用其他人= =

  • rui tang
    Rui tang🇨🇳CNShanghaiWindowsChrome

    6

    • SuperficialL
      Superficiall🇨🇳CNWulipuWindowsChrome

      回复

      -.-

    • Superficial
      Superficial🇨🇳CNWuhanWindowsChrome

      回复

      回复!

  • 卢
    🇨🇳CNHangzhouWindowsChrome

    高手,问你个事,你的数据库是自己在服务器上架设的还是用的阿里云的,我用阿里云的MYSQL数据库,网站速度慢,所以自己在服务器上架设的数据库。

    • Surmon
      Surmon🇨🇳CNBeijingMac OSChrome

      回复

      自建

    • 卢
      🇨🇳CNHangzhouWindowsChrome

      回复

      你的网站速度真快,自建的数据库,你备份怎么做的,我用的是navicat软件备份,备份时,网站会卡。

    • Surmon
      Surmon🇨🇳CNBeijingMac OSChrome

      回复

      数据库的备份没有使用工具,是自己写有脚本,把所有数据 dump 出来后打包传到 OSS,代码在 nodepress 项目的 services 中。

    • 卢
      🇨🇳CNHangzhouWindowsChrome

      回复

      谢谢。

  • LAW
    Law🇨🇳CNBeijingWindowsChrome

    感谢

    • Surmon
      Surmon🇨🇳CNBeijingMac OSChrome

      回复

      广告有什么好谢的

  • 123
    123🇨🇳CNGuiyangWindowsChrome

    👍

  • mzxssg
    Mzxssg🇨🇳CNDongguanWindowsWeChat
  • ?
    ?🇨🇳CNYueyangMac OSChrome

    interesting

  • 萝卜头
    萝卜头🇨🇳CNShanghaiWindowsChrome

    have a try^_^

    • 0211
      0211🇨🇳CNShenzhenMac OSChrome

      回复

      看起来不错

  • Frank
    Frank🇨🇳CNZhujiMac OSChrome

    左侧菜单栏在高度不够的情况下无法滚动,还有的你网站好卡,风扇都开始响了

  • 重庆崽儿Brand
    重庆崽儿brand🇨🇳CNHangzhouMac OSChrome

    最后面的图片访问不了咯~🌚

    • Surmon
      Surmon🇨🇳CNShanghaiMac OSChrome

      回复

      已更

    • 11
      11🇨🇳CNQingdaoWindowsChrome

      回复

      厉害了

  • 夏夏
    夏夏🇨🇳CNSuzhouiOSMobile Safari

    谢谢分享