这里简单复盘一下本轮扩容的过程。先说一句:佬友们真是太热情了。
自开年的工作日以来,L站的访问量直接大幅创新高,高居不下且还有攀升迹象。这给服务器造成了极大的压力,我们紧急采购服务器并完成了扩容,但是效果并不及预期。
现在的服务器太贵了,机器要加可不能无脑加,这种情况显然就不对劲了。调查之下,我们发现很多访问异常,于是我们立刻着手建立风控服务。风控服务的效果还是不错的,把服务器从随时爆炸,拉到了崩溃的边缘,高峰期可以不炸,但是很慢。
这显然是不理想的,这种崩溃边缘没有余量,遇到攻击直接就会被压垮。由于尝到自建风控的甜头,我们寻思是不是可以自建新的服务替代 discourse 原有的?
分析了一下,当场决定改造 discourse message-bus 服务。虽然 discourse 现在默认服务切到了 pitchfork 但这只是 unicorn 的一个分支,还是进程模型的 web server 对于 message-bus 这种 long polling 是极其吃力的。
一番调研之后,直接用 rust 搓了一个 rust-bus,把之前扩容的服务器腾空,给它部署上去,当作一个独立的服务。并启用独立的子域名 ping.linux.do。
![]()
果不其然,分拆之后,discourse 服务负载大大降低,并且 message-bus 拉取信息的性能和成功率大幅提升。我猜这两天各位佬友有所感受,熟悉的 查看 xxx 个新的或更新的话题 横幅它又回来了。
今天上午其实已经能看到部分成果了,下午的一些抖动是我们迁移造成的。当前已经全部调试迁移完毕,我相信各位佬友能体会到此刻的丝滑 ![]()
至于脚本风控,我们仍然要做,并且还要继续完善。因为这些扩充的资源,是给当前以及未来的佬友准备,不是为脚本预留,还请理解。
至此,本轮扩容圆满完成,各位接着奏乐接着舞~