转载

双十一,我就这样静静地看你们剁手

前几天赶在双十一来临之前吐了个槽,然后就去公司开始值班去了。

双十一期间我也不幸剁手,给我那台位于新加坡的 ECS 一次性续费三年,花了将近三千大洋。嗯,这样一来,至少三年内我的博客都可以是高可用的!

今年是我第二次参加双十一了。号称「技术盛宴」的双十一,两次都因为准备太过充分,心中底气过分充足而毫无紧张感。

从 11 月 10 日中午到公司,然后和团队成员一起蹲守到 11 月 11 日凌晨三点。这个时间比较尴尬,我这几天都是做快车去上班,所以回家洗澡躺一躺都成了问题。还好嘀嘀出行能够通过提价来刺激需求,让我成功回家洗澡睡觉了。

出于对早上流量高峰的担忧,师兄让我明天尽量早点来,八点半九点到公司什么的,也只有两三个小时可睡了。

双十一当天的情况更是让人蛋碎,系统实际流量和我之前做稳定性的时候准备的系统容量,根本就是一个地下一个天上,差的老远了,所以这也是比较尴尬的,这么点流量,让我看啥好呢。再说了,我都已经把监控和告警搞得那是相当的完善,人肉去看系统还不如让监控系统自己看去。

其实当初业务方的同事给出双十一的总体业务目标的时候,我就算出了大概的集群流量峰值。我看当时的集群不仅完全能扛住,甚至能力上还有剩余,就想着今年双十一不加机器,优化优化系统就好了。然后在某个漆黑的夜晚,开发、运维和业务的几个老大出去聊了聊,回来给我说了一个峰值流量的业务目标。

当时我就吓尿了,这峰值流量是我估算的两倍,然后我们在系统上还得准备余量,那就得按照三倍来扩容了。扩容就扩容呗,不就加机器嘛,运维老大表示滋磁了就不愁没有应用服务器了。数据库也得扩容,我们的 MySQL 集群通过 sharding 的方式来实现某种意义上的「水平扩展」,只不过这种扩展有限制,机器数量只能以翻倍的形式来增加,所以数据库集群需要扩容四倍。

反正能加机器,我也就懒得去优化系统了。有的时候资源太丰富也不是好事,当你做的项目得到集团资源的倾斜,基本上在一定范围内,各种系统容量的问题都能通过加机器解决,开发者就失去了优化代码的动力。所以说有的时候硬件资源匮乏反而对开发者来说是件好事。

假如我的应用运行在公有云上,我需要为应用消耗的计算资源付费,那么我就会去权衡我优化应用所消耗的时间,以及优化之后带来的回报,来决定我要把应用优化到什么程度,而不是像现在这样「衣来伸手饭来张口」。

然后后面好长一段时间都是为了这个「峰值流量」的业务目标,还有系统上要准备的 0.5 倍的余量,各种压测,造数据,跟上游系统的稳定性负责人、DBA、PE 一起在凌晨搞压测。后来身体扛不住了就改到晚上去压,还多次因为压测数据造的热点太多不太合理而被 DBA 鄙视。

结果双十一当天的流量无情的表示,系统不扩容也是能抗住的。我的心好痛,就当做是为电子面单未来两三年的业务发展打下坚实的系统基础了。

双十一,我就这样静静地看你们剁手

六点多快七点的时候,日生成量过亿,菜鸟官微放出了消息。于是我也算是搞过一个日 PV 过亿的系统的开发者了。要是有人跟我在技术问题上撕起来,而我眼看就要撕不过的时候,就可以祭出@寒冬winter 菊苣的模板,「你做过 PV 过亿的系统再来跟我讨论这个问题」,哈哈哈。

由于看系统这种事过分无趣,我只好一边开着 ThinkPad 展现各种系统监控,一边在 Macbook 上研究 Ansible。幸好我机智把 Mac 背过去了,不然我得无聊死。

之前已经会用 Ansible 来批量执行命令了,双十一那天学会了怎么写一个简单的 playbook 来维护 Nginx 配置。由于我的 Nginx 配置不是全部写在一个 nginx.conf 里面,而是分散成一个 nginx.conf 和多个不同站点的配置,所以维护起来比一个 nginx.conf 包罗万象要麻烦一点。

澄晖菊苣看到我正在看 Ansible,就过来聊聊技术,一起吐槽集团的基础设施。他是知道我对 Docker 感兴趣的,所以对我为什么需要看 Ansible 感到好奇。我说了我用一个运行在 Docker 之外的 Nginx 为多个容器做反向代理之类的,当时就被鄙视了。

澄晖菊苣教育我,要从一而终,选择了 Docker 就要在 Docker 的技术体系下解决问题,不要一会用这个一会用那个的。他说的好有道理,像我这样东一榔头西一棒子的,怎么能成为细分领域的专家,多年之后地球上又多了一个面临中年危机的全干工程师罢了。

然后澄晖菊苣又开始安利我自己买一台比较好的台式机,虚拟出多台虚拟机,自己组建集群,然后想搞 Strom 或者 Spark 之类的都可以。听起来很有诱惑力,但是我现在住的地方已经不允许我再多放一台台式机 + 显示器了。我还不会在一台没有显示器的主机上安装系统,如果我掌握着这样的神技,或许真能搞一台来玩玩。8 核 32G 一虚十,听起来屌屌的!

快到 12 点的时候,我不知为何突然想起一个搞 CaaS 的云计算厂商 DaoCloud ,打算上去看看。于是我摸索着,折腾着,给我的博客给搞了一个容器化方案。别人在抢红包的时候我深深专注于调试 Dockerfile。我在 Mac 上借助 boot2docker 来使用 Docker,但是似乎在根据 Dockerfile 构建镜像的时候,使用 COPY 命令还复制目录的功能不太好使,我只好本地瞎写然后提交,在云端构建镜像,其中的麻烦自不必说。

和 CNPaaS 类似,DaoCloud 为每个用户可以免费拥有 2 个应用/容器。今天我花了 49 大洋买了一个专业版中最小的套餐,升级到了 8 个容器,然后再绑定微信又多弄了 1 个容器,于是我就有 9 个容器可用了。据说 DaoCloud 还会送一本书,好像是跟 Docker 源码相关的。

Docker 真的是会把 PaaS 干死的,有了 Docker 人人都是 DevOps。Docker 隐藏了云计算平台之间的差异,真的会把 IaaS 变成单纯卖机器的。我们生活在这样一个云计算风起云涌的时代,如果能够亲身参与其中,推进技术革命,解放生产力,是多么幸运的事情。

到了凌晨一点多两点,大部分人都散了,我也准备回家。习惯性地开始嘀嘀打车。好不容易叫到车,结果刚上车开了还没几米,就撞车了。

起步后司机想跟我聊天,问我坚持了几个小时。我用我那已经开始不太清醒的大脑努力回忆我啥时候到的公司,啥时候回去,还没开口,duang 的一声车子就和前面的车撞上了,撞在前车的右后轮上。还好刚起步车速慢,不然吾命休矣。

双十一,我就这样静静地看你们剁手

于是我连忙脚底抹油开溜,换了在瑟瑟寒风绵绵细雨中,继续嘀嘀叫车。这时候我才发现,把主动权掌握在自己手上,是一件多么幸福的事情,假如我自行车在公司的话,就可以骑车回家了。嘀嘀打车有一个不好,一旦行程开始,乘客就不能主动结束,只有等待司机结束订单,我才能重新叫车。

过了一会终于叫到车,安全回到家了。

我还活着,感觉真好。

正文到此结束
Loading...