鍍金池/ 問答/Java  Linux/ 關(guān)于負(fù)載均衡的奇怪想法

關(guān)于負(fù)載均衡的奇怪想法

以下以java為基礎(chǔ)討論。

一般負(fù)載均衡,都是1個nginx 帶N個tomcat。

更進(jìn)一步,為了避免這個nginx掛掉,可能就用SLB(最近聽到的阿里的項(xiàng)目)來帶N個nginx。

于是疑惑開始,是否,更進(jìn)一步,為了避免這個SLB掛掉,我們還需要在它之上再使用某些項(xiàng)目,來帶N個SLB?

這樣好像金字塔式的布局,最頂?shù)哪且粋€服務(wù)為了避免掛掉,又會要求上層繼續(xù)有更高層的保障措施,不就無窮無盡了嗎?

回答
編輯回答
凹凸曼

不會無窮無盡,因?yàn)槿魏螌ν馓峁┑姆?wù)都是有一個交互的起點(diǎn)。
以訪問一個網(wǎng)站的主頁為例,其起點(diǎn)就是請求DNS,DNS服務(wù)器由ISP或大型專業(yè)服務(wù)公司提供,一般都可以認(rèn)為這個是100%可靠的。
當(dāng)DNS返回一個地址給用戶后,用戶請求這個地址,這個地址的可靠性由網(wǎng)站保障,網(wǎng)站可以通過負(fù)載均衡技術(shù)讓多個服務(wù)器(或多個層級的服務(wù)器)共同為這個地址的請求提供服務(wù)。
這種情況下,只要用戶到達(dá)這個地址的網(wǎng)絡(luò)路徑是通的就沒問題,如果路徑上存在問題,例如核心交換機(jī)故障、機(jī)房斷電、光纖被挖等等,這種情況下,這個地址在網(wǎng)絡(luò)層面就不可靠了。
那么如果想進(jìn)一步提高可靠性,就需要配置多個地址,一個地址掛了后,讓DNS解析到另外一個地址,另外一個地址可以在不同的機(jī)房、城市、省份甚至國家。

2017年1月21日 16:11
編輯回答
薄荷糖

不會,因?yàn)樾枨笫菬o限的,但預(yù)算是有限的……
╮(╯▽╰)╭
理論上無解的問題,到了現(xiàn)實(shí)中往往換個思路就好了。比如tomcat比較吃資源,那么就把它獨(dú)立出來專職跑計(jì)算嘛;SLB倒是需要熱備~但鈔票都交了,干嘛不把問題丟阿里呢;還有運(yùn)營上有沒有辦法提前做分流?架構(gòu)有沒有手段進(jìn)一步優(yōu)化?……辦法總比困難多嘛。

2017年12月12日 10:49
編輯回答
不歸路

層層堆疊并沒有什么用,到最后還是一個入口。這個只能是通過測試什么的使無障礙時(shí)間比例提高。
我是這么想的。

2018年5月7日 02:29
編輯回答
憶當(dāng)年

并不是完成是這樣的,設(shè)備和軟件集群要解決兩個問題: 負(fù)載均衡(load balance),高可用(failover)

前端負(fù)載均衡:并行的設(shè)備越多承載力一般越強(qiáng).但也不是線性的.
高可用:至少要消除單點(diǎn)故障的可能性.

消除單點(diǎn)故障要在網(wǎng)絡(luò)的每一層做工作.
如:異地雙活. 每個機(jī)房要至少雙線接入, 電源要雙路, 磁盤要raid1, 機(jī)器網(wǎng)多網(wǎng)卡, DNS可以解析出多個IP,
雙路由, 雙防火墻,雙交換機(jī)等等.

這些雙活設(shè)備需要僅需要交叉接入即可. 并不需要在同一層堆疊很多. 總之橫向擴(kuò)展并不需層的累積. 對于中心網(wǎng)站前端負(fù)載均衡設(shè)備一般只需雙機(jī)熱備就好.

附個不是很恰當(dāng)?shù)膱D, 表達(dá)一下

圖片描述

2018年9月16日 03:28