关于负载均衡的奇怪想法

以下以java为基础讨论。

一般负载均衡,都是1个nginx 带N个tomcat。

更进一步,为了避免这个nginx挂掉,可能就用SLB(最近听到的阿里的项目)来带N个nginx。

于是疑惑开始,是否,更进一步,为了避免这个SLB挂掉,我们还需要在它之上再使用某些项目,来带N个SLB?

这样好像金字塔式的布局,最顶的那一个服务为了避免挂掉,又会要求上层继续有更高层的保障措施,不就无穷无尽了吗?

阅读 2.6k
4 个回答

不会,因为需求是无限的,但预算是有限的……
╮(╯▽╰)╭
理论上无解的问题,到了现实中往往换个思路就好了。比如tomcat比较吃资源,那么就把它独立出来专职跑计算嘛;SLB倒是需要热备~但钞票都交了,干嘛不把问题丢阿里呢;还有运营上有没有办法提前做分流?架构有没有手段进一步优化?……办法总比困难多嘛。

并不是完成是这样的,设备和软件集群要解决两个问题: 负载均衡(load balance),高可用(failover)

前端负载均衡:并行的设备越多承载力一般越强.但也不是线性的.
高可用:至少要消除单点故障的可能性.

消除单点故障要在网络的每一层做工作.
如:异地双活. 每个机房要至少双线接入, 电源要双路, 磁盘要raid1, 机器网多网卡, DNS可以解析出多个IP,
双路由, 双防火墙,双交换机等等.

这些双活设备需要仅需要交叉接入即可. 并不需要在同一层堆叠很多. 总之横向扩展并不需层的累积. 对于中心网站前端负载均衡设备一般只需双机热备就好.

附个不是很恰当的图, 表达一下

图片描述

层层堆叠并没有什么用,到最后还是一个入口。这个只能是通过测试什么的使无障碍时间比例提高。
我是这么想的。

不会无穷无尽,因为任何对外提供的服务都是有一个交互的起点。
以访问一个网站的主页为例,其起点就是请求DNS,DNS服务器由ISP或大型专业服务公司提供,一般都可以认为这个是100%可靠的。
当DNS返回一个地址给用户后,用户请求这个地址,这个地址的可靠性由网站保障,网站可以通过负载均衡技术让多个服务器(或多个层级的服务器)共同为这个地址的请求提供服务。
这种情况下,只要用户到达这个地址的网络路径是通的就没问题,如果路径上存在问题,例如核心交换机故障、机房断电、光纤被挖等等,这种情况下,这个地址在网络层面就不可靠了。
那么如果想进一步提高可靠性,就需要配置多个地址,一个地址挂了后,让DNS解析到另外一个地址,另外一个地址可以在不同的机房、城市、省份甚至国家。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题