高并发要达到什么级别算高并发,有哪些不同的高并发方案?
作者:卡卷网发布时间:2025-01-11 16:40浏览数量:78次评论数量:0次
高并发最初的问题是c10k,然后nginx出现了,解决了c10k的问题。
那c100k呢?假定一个nginx只能承载10k的qps。最简单的方式就是启动10个nginx,然后用一个域名解析到10个机器。这个方式的好处是可以无限扩展,不好处就是某个节点异常,dns可感知不到,只能人工切。那这个方式就不能生产用了吗?还能用!如机房级别容灾,整个机房挂了的话,手动切dns耗费的时间,已经可以忽略不计了。
有没有谱的办法呢?有!可以用四层负载均衡nginx,假定lvs能承载c100k的qps。那如果是c1000k,c10000k呢?又用dns的方案?
其实,还是解决方案。七层负载均衡不行,我能可以用4层,4层负载均衡不行,那我们可不可以用3层负载均衡呢?
是不是都没听过3层负载均衡?哈哈哈,我也没听过,我发明的词。其实是一个叫做ECMP的东西,就是等价路由。就是在网络协议层面,到达一个目的地的路有多条,我们就可以均衡的走这多条路。
这玩意儿和负载均衡有啥关系呢?常言道条条大路通罗马,罗马只是一个地方,到罗路有很多。但是在网络世界中呢?一个ip就代表一个机器吗?不是这样的。
好了,扯了这么多,来说说可以无限扩展的架构吧!首先有n台,每台上启动一个lvs,然后在每个lvs上设置一个四层的负载均衡,如设置为:vip:10.0.0.1:80,目标为:127.0.0.1:8080
假如8080端口启动的是nginx。现在的情况是,有n台机器,每个机器上有一个10.0.0.1的ip,然后把这个ip通过gp或支持ECMP的协议发布到网络中。通过动态路由,就会发现有n条路径可以通向10.0.0.1,然后就把通向10.0.0.1的请求,均匀的分布在这n跳路径上,这样就实现了网络协议层面的负载均衡。
网络天然就是一个分布式的东西,你觉得网络这个东西能不能承载c10k,c100k,c10000k的请求?
这就是所谓的高并发方案:各种负载均衡。
再点,把这个vip分布在世界各地的机房,每个地方的用户访问距离最近的的vip。有没有感觉有点像cdn?这种方案的好处是,把瞬间的流量,从源头拆分到世界各地,不在局限于单个机房的带宽。
有的公司会使用类似cdn的方案,有的公司会使用域名解析的方案。一般自建机房就是ECMP+lvs+nginx。
这就是负载均衡的全貌了。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎