集群的主要目的有兩個:
避免單點問題
擴(kuò)容
單點問題
假設(shè)沒有集群部署,那么就是說只有一臺Server對外提供服務(wù),如果這個Server掛掉了,那么所有的客戶端就沒辦法訪問了。
如果進(jìn)行了集群部署,假設(shè)兩臺,通過IPhash的方式進(jìn)行負(fù)載均衡,那么當(dāng)其中一臺Server掛掉了,那么只有大概一半的客戶端受到影響(如果所有客戶端都恰巧hash到了掛掉的那個Server,那就沒辦法了)。
如果路由有故障轉(zhuǎn)移機制,那么基本可以保證一臺Server掛掉了,客戶端沒有影響。
擴(kuò)容
再說擴(kuò)容,一臺Server能對外提供的最大負(fù)載是一定的。當(dāng)客戶端數(shù)量超過了Server的最大負(fù)載時,那么就可能導(dǎo)致Server掛掉,或者客戶端響應(yīng)緩慢甚至沒有響應(yīng)的問題。
通過集群部署,可以增加最大客戶端數(shù)量。假設(shè)一臺Server能同時支持1000個客戶端訪問,那兩臺Server理論就能支持2000個客戶端同時訪問。
性能
上面說了,集群部署并沒有提高性能。集群只是多開通了通道。
舉個例子,假如有個水池,原來一個水管向水池里注水,集群部署后就是多個水管向水池里注水。單個水管的速度并沒有變化,但是流量變大了。
看起來性能提高的原因是,性能一般是通過TPS/QPS來定義的,也就是一秒內(nèi)完成的請求數(shù)量。
集群后,因為流量大了,那么TPS肯定就高了。
但是,
所以一般情況下集群對性能的影響有限,極端情況還可能降低性能。假設(shè)一臺Server能支持1000個客戶端,你部署了兩臺Server,而實際只有10個客戶端進(jìn)行訪問,遠(yuǎn)達(dá)不到單臺Server的負(fù)載,加上集群需要路由算法,可能性能上就比單臺Server稍微慢了一點點。