首页 / wap.nmsgqn.cn / 正文

刷直播卡成PPT?你天天见的负载均衡根本不是你想的那样

上周六蹲某歌手的线上演唱会直播,点进去的瞬间我以为自己回到了2G时代——画面卡成逐帧动画,进度条转的圈数比我家猫追自己尾巴转的都多。我切了4次线路,第五次终于顺了,旁边瘫在沙发上啃西瓜的发小翻了个白眼,说这有啥好奇怪的,就是负载均衡当天没睡醒而已。

别拿超市收银台那套套它,真不是一回事

我第一次听人讲负载均衡,对方举的例子是超市开了好几个收银台,人多的时候就把顾客分流到不同的队伍里,避免一个窗口排太长的队。听着好像挺对。 细想根本不是那回事。 超市的分流是顾客自己选的,哪个队短往哪凑,没人管你买的是一整车的年货还是一根棒棒糖,到了哪个队就排哪个队。但互联网世界的负载均衡,是你作为普通用户根本看不见背后的调度逻辑的——你点下播放按钮的瞬间,你的请求被丢到一个看不见的调度中心,由它决定你这次的连接,会落到几十甚至上百台服务器里的哪一台。
直播间流量分发服务器集群拓扑图
真正的负载均衡从来不是“把人平均分开”这么简单。它要考虑的东西多了去了:这台服务器现在剩多少内存,CPU跑了多少,带宽还够不够,甚至要考虑你所在的城市离哪个机房最近,会不会因为跨运营商导致延迟变高。 很多人觉得这东西离自己远,其实你每天刷短视频、点外卖、抢演唱会门票,每一次操作背后都有它在跑。

那些年你以为的“服务器崩了”,其实是负载均衡打了个喷嚏

前阵子刷到好多人吐槽某连锁奶茶品牌的线上点单系统,大中午高峰期进去,页面直接白屏,点了半天提交不了订单,评论区全在骂“什么破技术团队,连个点单系统都做不好”。 我当时刚好有个朋友在那个品牌的技术部,聊起来才知道,根本不是服务器扛不住。 那天的问题出在负载均衡的配置上——负责上线的实习生图省事,把权重值设反了。原来的规则是3台高配的老服务器权重设为10,2台刚扩容的低配测试服务器权重设为1,结果他把数字填反了,导致80%的用户请求,刚进系统就被直接导到了那两台低配的测试机上。剩下的3台高配机闲的CPU使用率连15%都不到,两台低配机呢?CPU直接干到100%,连个静态图片都加载不出来。
云服务器负载权重配置后台截图
云服务器负载权重配置后台截图
权重值设反了这种低级错误,真的不是段子。我前几年跟一帮做运维的朋友混久了,见过太多离谱的配置:有人嫌动态分流太麻烦,直接把所有请求全导给一台最贵的主服务器,剩下的几十台全当冷备份,美其名曰“稳定可控”;还有人配规则的时候,把离用户最远的那个机房的权重拉到了最高,导致南方的用户看视频,要把请求绕到东北的机房转一圈,延迟直接飙到200多毫秒。 这些情况哪是服务器崩了。 这分明是管分流的那个调度员,脑抽了。

你以为的“智能分流”,有时候还不如楼下卖手抓饼的阿姨

你以为的“智能分流”,有时候还不如楼下卖手抓饼的阿姨
你以为的“智能分流”,有时候还不如楼下卖手抓饼的阿姨
我家楼下巷口有个卖手抓饼的阿姨,做了快十年了,摊前面从来没排过让人等超过10分钟的长队。为啥?因为阿姨门儿清。 你走过去说“阿姨我要个原味的,快点”,她直接把单递给旁边帮忙的学徒,三分钟就能做好递到你手里。要是你说“阿姨我要加肠加蛋加生菜,多刷甜辣酱,再放点火腿碎”,她就自己接过来,慢一点也没关系,反正不会把所有慢单都堆给自己,让旁边的学徒闲的站那玩手机。 你看,这就是最朴素的负载均衡逻辑——不搞平均主义,谁手上的活少,就多分担一点,谁手上的活已经堆成山了,就少塞一点。 但好多互联网公司现在用的分流规则,还不如阿姨聪明。 最常见的就是“轮询”规则:来一个请求,按顺序分给第一台服务器,下一个给第二台,再下一个给第三台,轮着来,不管这台服务器现在在干什么。这就跟阿姨不管顾客要的是快单还是慢单,来一个就往自己这塞,学徒闲的抠手,自己前面堆了七八个手抓饼,煎的都糊了,后面的顾客还在那等,这不纯纯浪费资源吗? 之前接触过一个做长视频的小平台,之前就是用的纯轮询规则,一到晚上黄金时段就卡。后来他们改了规则,换成了动态反馈式的分流:每次分请求之前,先问每台服务器一句“你现在还能接多少活”,谁的负载低就多塞点,谁的负载已经快满了就少分点。 改完之后他们算了笔账,同样的服务器数量,能扛的最大流量直接涨了快一倍。当时技术部的人看着监控面板,差点在群里发红包庆祝。 真的,不骗你。 我之前还见过更有意思的,有个做直播的小团队,为了省成本,把负载均衡的规则设成了“只要哪个服务器的温度低于60度,就多给它分点流量”——因为机房的散热是固定的,温度越低说明跑的负载越少,能多扛点。听着好像很野,实际上跑了大半年,一次大的故障都没出过。 哪有什么绝对正确的技术方案啊。 适合自己的,就是好的。 上次发小跟我聊完,又咬了一口西瓜,说你别觉得负载均衡是什么高大上的黑科技,本质上跟你平时上班排活是一个道理——要是领导每次派活,全堆给最能干的那个同事,剩下的人闲的刷淘宝,最后那个能干的同事迟早要 burnout,整个团队的效率也上不去。 哦对,上次我刷到那个演唱会的直播回放,弹幕里全在骂平台技术差,我盯着屏幕笑了半天。 说不定那天的负载均衡调度员,刚出去接了杯水,回来晚了半分钟,就把大家的请求全堆给同一台服务器了。 多大点事。