大白话高并发(二)

背景

这是三高专题的第二篇,我想了很久应该怎么去串联这个专题,后来我觉得就按照流量的方向来聊吧,从用户请求到服务端再到用户。

突然间来了200万个请求

我们一台服务器能承受住200万个请求么?答,可以,但是有条件只能是三次握手后的空链接,我们知道linux中一切皆文件,因此一个请求对一个linux来说也是一个文件fd,那只要我的linux文件数量足够大就可以接收200万个请求,一个请求默认为4k,200w * 4k 不过8M左右的内存是没有问题的,但是前提这些都是空链接,如果客户端发送了大量的数据到服务端,服务端又需要通过做cpu做大量的计算,处理后又将大量的数据返回给客户端,那样别说2000万,1000都是费劲的。

对于我们秒杀这种场景来说,单台机器不可能承受200万个请求,因此需要引入负载均衡。将请求路由到多个地方。

NGINX

首先我想到了nginx,nginx是7层的负载均衡,并发量大概在5w左右,如果想支撑200万并发,需要有40个nginx才行。

LVS 或者 F5服务器

一台nginx 5万并发,因此需要在nginx上面再来一层4层负载均衡,都说lvs并发在几十万,假设为20万,需要10台lvs。

DNS负载均衡

一台lvs看样子还是不能承受200万并发,看来在他的上面还需要一层,这一层就是DNS,通过ip来做负载均衡,一个lvs一个ip。

总结

上亿的并发也是这个套路,一层不够就再加一层,ip不够就再加几个ip,机房不够就再加几个机房。

参考

淘宝双十一

你可能感兴趣的:(三高,linux,服务器,网络)