一台服务器集群部署性能会提高吗?
2023-04-03 · 百度认证:重庆猪八戒网络有限公司官方账号
本质上集群部署并没有提高性能,性能看起来提高只是附加属性。
集群的主要目的有两个:
避免单点问题
扩容
单点问题
假设没有集群部署,那么就是说只有一台Server对外提供服务,如果这个Server挂掉了,那么所有的客户端就没办法访问了。
如果进行了集群部署,假设两台,通过IPhash的方式进行负载均衡,那么当其中一台Server挂掉了,那么只有大概一半的客户端受到影响(如果所有客户端都恰巧hash到了挂掉的那个Server,那就没办法了)。
如果路由有故障转移机制,那么基本可以保证一台Server挂掉了,客户端没有影响。
扩容
再说扩容,一台Server能对外提供的最大负载是一定的。当客户端数量超过了Server的最大负载时,那么就可能导致Server挂掉,或者客户端响应缓慢甚至没有响应的问题。
通过集群部署,可以增加最大客户端数量。假设一台Server能同时支持1000个客户端访问,那两台Server理论就能支持2000个客户端同时访问。
性能
上面说了,集群部署并没有提高性能。集群只是多开通了通道。
举个例子,假如有个水池,原来一个水管向水池里注水,集群部署后就是多个水管向水池里注水。单个水管的速度并没有变化,但是流量变大了。
看起来性能提高的原因是,性能一般是通过TPS/QPS来定义的,也就是一秒内完成的请求数量。
集群后,因为流量大了,那么TPS肯定就高了。
但是,TPS/QPS计算的是系统的最大可运行负载。就是一个系统在这个负载下可以正常的长时间对外服务,超过了这个负载就可能导致响应变慢或没有响应、甚至导致服务器直接挂掉。而一般情况下都会做冗余,所以系统基本不会长时间运行在最大可运行负载下。
所以一般情况下集群对性能的影响有限,极端情况还可能降低性能。假设一台Server能支持1000个客户端,你部署了两台Server,而实际只有10个客户端进行访问,远达不到单台Server的负载,加上集群需要路由算法,可能性能上就比单台Server稍微慢了一点点。