(转载自)章文嵩博士和他背后的负载均衡帝国
目錄
一、什么是負(fù)載均衡,都是負(fù)載惹的禍
二、常用的負(fù)載均衡技術(shù)比較
三、健康檢測(cè),負(fù)載均衡的伴侶
四、為什么我們要做VIPServer?
五、VIPServer簡(jiǎn)介
六、為什么短短幾年VIPServer在阿里集團(tuán)發(fā)展的這么快?
七、VIPServer并不完美
阿里 Load Balance 之旅
什么是負(fù)載均衡(Load Balance)
“負(fù)載(load)”惹得禍
首先讓我們從原點(diǎn)出發(fā)。
某一天清晨起床,你突然有了一個(gè)美妙的想法,這個(gè)想法讓你興奮不已,因?yàn)槟惆l(fā)現(xiàn)了一個(gè)具有廣闊市場(chǎng)前景的處女地,這個(gè)處女地還完全沒(méi)有被開(kāi)墾,這是一項(xiàng)新業(yè)務(wù),這項(xiàng)業(yè)務(wù)能滿(mǎn)足世界上大部分人的某個(gè)方面他們自己都不知道的潛在的需求,更妙的是,到目前為止,它還沒(méi)有被任何人發(fā)現(xiàn)。
你簡(jiǎn)直被自己的天才驚呆了,被自己的天才想法感動(dòng)的內(nèi)牛滿(mǎn)面,你確信你的人生會(huì)因?yàn)檫@個(gè)想法而改變,宇宙也會(huì)因?yàn)槟氵@個(gè)想法而變的大不相同,你確定這個(gè)想法的實(shí)現(xiàn)將能幫助你走上人生巔峰,上上個(gè)時(shí)代是比爾蓋子,上個(gè)時(shí)代是拉里配齊,下個(gè)時(shí)代毫無(wú)疑問(wèn)將是你,你迫不及待的想要將這項(xiàng)業(yè)務(wù)通過(guò)一個(gè)系統(tǒng)來(lái)表達(dá)和實(shí)現(xiàn),于是你奮戰(zhàn)了好幾個(gè)通宵,有了下面這個(gè)能支撐這項(xiàng)新業(yè)務(wù)的非常牛逼的系統(tǒng):
是的,你的系統(tǒng)已經(jīng)有了第一個(gè)用戶(hù),這個(gè)用戶(hù)就是你自己。接下來(lái)你將你的系統(tǒng)通過(guò)X信朋友圈、釘釘、各大論壇廣邀各路親朋好友試試這個(gè)系統(tǒng),結(jié)果是,非常棒! 好評(píng)如潮,他們不停的拉自己的親朋好友開(kāi)始訪問(wèn)這個(gè)系統(tǒng),因此注冊(cè)、活躍用戶(hù)越來(lái)越多,此時(shí),你興奮不已,感覺(jué)自己馬上就要走上人生巔峰。
但等等,不知道哪里出了問(wèn)題,你的這個(gè)新系統(tǒng)居然上了ccav財(cái)經(jīng)頻道,而且被各路媒體小報(bào)紛紛報(bào)導(dǎo),瞬間所有人都想看看這個(gè)牛逼的系統(tǒng),于是乎,悲劇發(fā)生了:
怎么辦?怎么辦?很快你想到了3個(gè)解決方案。
縱向擴(kuò)展(Scale Up)
沒(méi)啥好說(shuō)的,也許只是服務(wù)器還不夠NB,買(mǎi)!買(mǎi)!買(mǎi)!宇宙最好的服務(wù)器來(lái)上一臺(tái),可惜,創(chuàng)業(yè)剛開(kāi)始,投資人的錢(qián)要花在刀刃上,比如廣泛營(yíng)銷(xiāo)上,比如路邊掃個(gè)碼啊,順便送個(gè)內(nèi)衣啊、牙刷啊什么的,服務(wù)器? 買(mǎi)不起! 而且看了一下宇宙上最好服務(wù)器的網(wǎng)卡配置,更泄氣,這就不是有錢(qián)買(mǎi)個(gè)NB服務(wù)器就能解決的事!
業(yè)務(wù)拆分
你仔細(xì)審視之后,發(fā)現(xiàn)其實(shí)你的系統(tǒng)的2個(gè)頁(yè)面是2個(gè)不同的業(yè)務(wù),用來(lái)滿(mǎn)足不同的需求的,于是啊,你就想,是不是能把這2個(gè)業(yè)務(wù)分開(kāi)到2個(gè)系統(tǒng)中去,這樣用戶(hù)們自然乖乖的被引導(dǎo)、分流到2個(gè)子系統(tǒng)去了,這樣每個(gè)系統(tǒng)的壓力就減少了啊。這就好比一個(gè)飯店,生意火爆,原先來(lái)吃火鍋和吃大餅卷牛排的都在一起,擠不下之后,現(xiàn)在分成了2個(gè)店,1個(gè)是火鍋店,1個(gè)是大餅卷牛排店。從某種角度來(lái)說(shuō),這種其實(shí)也是一種負(fù)載均衡,但怎么做業(yè)務(wù)拆分并且通過(guò)組織文化和人事架構(gòu)去保障和適應(yīng)這種業(yè)務(wù)拆分,是有很多的業(yè)務(wù)考量和業(yè)務(wù)屬性在里面的,每個(gè)老板和每個(gè)行業(yè)的答案可能都是不同的,此文討論的不在這個(gè)方向上。
橫向擴(kuò)展(Scale Out)和 副本(Replica)
做完上面的垂直拆分之后,可能你會(huì)發(fā)現(xiàn)還是不行啊,這世界上擁有獨(dú)特口味的人太多,吃大餅卷牛排的人還是太多了,怎么辦? 開(kāi)分店吧,每個(gè)上檔次的商場(chǎng)都開(kāi)一個(gè)大餅卷牛排店,這樣每個(gè)地域的人又被分流到了附近的店。這個(gè)提供一模一樣服務(wù)的“分店”就是系統(tǒng)的副本(Replica),分布式系統(tǒng)中的副本(Replica)除了滿(mǎn)足數(shù)據(jù)冗余,容災(zāi)的需要等之外,橫向擴(kuò)展,通過(guò)開(kāi)多個(gè)分店(Replica)分流的行為,就是負(fù)載均衡,做到多副本之間分流是一個(gè)重要的目的。而這個(gè)正是本文討論的范圍所在,如下簡(jiǎn)圖:
接下來(lái), 關(guān)于如何讓你的系統(tǒng)實(shí)現(xiàn)負(fù)載均衡,做到Scale Out, 你開(kāi)始走上選型之路,
常用的負(fù)載均衡技術(shù)比較
DNS 輪詢(xún)
DNS本身的機(jī)制不再贅述,這里主要看一看基于DNS的負(fù)載均衡,其大致原理很清楚,DNS系統(tǒng)本身支持同一個(gè)域名映射到多個(gè)ip (A記錄),例如
niubility.com. IN A 172.168.1.101
IN A 172.168.1.102
IN A 172.168.1.103
IN A 172.168.1.104
這樣每次向DNS系統(tǒng)詢(xún)問(wèn)該域名的ip地址時(shí)(Tell Me The IP Address of niubility.com.),DNS會(huì)輪詢(xún)(Round Robin)這個(gè)ip列表,每次給一個(gè)不同的ip,從而達(dá)到負(fù)載均衡的效果。
來(lái)看看這種負(fù)載均衡解決方案的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
易于實(shí)現(xiàn)
對(duì)于應(yīng)用系統(tǒng)本身幾乎沒(méi)有任何侵入,配置也很簡(jiǎn)單,在某個(gè)文本里多加幾行A記錄就可以。尤其對(duì)于一個(gè)基于Web的系統(tǒng)來(lái)說(shuō)更是如此,用戶(hù)在瀏覽器里輸入的URL host部分天然就是域名,所以在某個(gè)環(huán)節(jié)你必然有起碼一臺(tái)DNS服務(wù)器記錄著這個(gè)域名對(duì)應(yīng)的ip,所以可以說(shuō)是基于已有域名系統(tǒng)(資產(chǎn))就做到了負(fù)載均衡。
缺點(diǎn)
會(huì)話粘連 (Session Sticky)
客戶(hù)端與目標(biāo)系統(tǒng)之間一般存在會(huì)話的概念(不止是web系統(tǒng)的http session), 其本質(zhì)在于server端會(huì)或多或少的存一些客戶(hù)端整個(gè)會(huì)話期間交互的身份識(shí)別以及數(shù)據(jù)信息,為了防止server端每次都對(duì)同一個(gè)客戶(hù)端問(wèn)一下,你是誰(shuí)?系統(tǒng)會(huì)希望客戶(hù)端在一個(gè)會(huì)話期間粘連在某個(gè)特定的serer上,除非這個(gè)server失敗才failover到其它的server上,這種粘連特性對(duì)于server處理客戶(hù)端請(qǐng)求處理的性能和客戶(hù)端看到的數(shù)據(jù)一致性是有很大好處的。但是DNS負(fù)載均衡不能保證下一次請(qǐng)求會(huì)再次落在同一個(gè)server上。
DNS解析緩存和TTL帶來(lái)的麻煩
dns記錄的緩存以及緩存失效時(shí)間都是個(gè)問(wèn)題,在無(wú)線時(shí)代,通常來(lái)自手機(jī)的訪問(wèn)會(huì)經(jīng)過(guò)稱(chēng)為行業(yè)網(wǎng)關(guān)的代理服務(wù)器,由于代理服務(wù)器會(huì)將域名解析的結(jié)果緩存一段時(shí)間,所以所有經(jīng)由這個(gè)代理服務(wù)器的訪問(wèn)請(qǐng)求就全被解析到同一臺(tái)服務(wù)器上去了,因此就可能無(wú)法實(shí)現(xiàn)均等分配需要處理的請(qǐng)求了。另外在后端集群的拓?fù)浣Y(jié)構(gòu)(副本數(shù)、部署位置、健康狀態(tài)等)發(fā)生變化之后,dns配置的變化要等到網(wǎng)絡(luò)上所有節(jié)點(diǎn)的緩存失效才能反饋出來(lái),這帶來(lái)的問(wèn)題起碼有2個(gè),1是在等待失效過(guò)程中,完全不可控,沒(méi)有辦法加快這個(gè)進(jìn)程,中美切換要花10分鐘,因?yàn)橐染W(wǎng)絡(luò)所有幾點(diǎn)對(duì)某些域名的TTL失效,2是滯后,有時(shí)候這種滯后是致命的,比如仍然有部分流量打到已經(jīng)掛掉的那部分服務(wù)器上。
容錯(cuò)
一個(gè)大型數(shù)據(jù)中心,每天都有機(jī)器壞了是很正常的事情,尤其是在虛擬化大行其道的今天,更是如此,相信你對(duì)虛擬主機(jī)又崩潰了一個(gè),或者總是被同宿主機(jī)的豬一樣的隊(duì)友“擠”死這種情況一定不陌生。dns負(fù)載均衡的一大問(wèn)題就在于這種情況下的容災(zāi)很麻煩,一是需要人工干預(yù)或者其他軟件配合做健康監(jiān)測(cè),從dns配置中將無(wú)響應(yīng)的機(jī)器或者崩潰的機(jī)器的相應(yīng)的A記錄刪掉。一是刪掉之后也要等到所有網(wǎng)絡(luò)節(jié)點(diǎn)上的dns解析緩存失效,在這端時(shí)間內(nèi),很多訪問(wèn)系統(tǒng)的客戶(hù)會(huì)受到影響。
數(shù)據(jù)熱點(diǎn)
dns是在域名層面做負(fù)載均衡,如果從web系統(tǒng)的請(qǐng)求URL角度講,不同的URL對(duì)后端server的壓力強(qiáng)度不一樣,dns負(fù)載很可能會(huì)出現(xiàn)所有高強(qiáng)度的請(qǐng)求全都被打到小部分服務(wù)器甚至同一臺(tái)上去了的情況,這個(gè)問(wèn)題的可怕性不在于風(fēng)險(xiǎn),而在于風(fēng)險(xiǎn)完全不可控。
引入負(fù)載均衡器
如圖: 客戶(hù)端 -> LB -> replica1,replica2,replica3
LB負(fù)責(zé)客戶(hù)端流量到后端服務(wù)集群的分發(fā),一般LB也會(huì)負(fù)責(zé)后端所有server的健康監(jiān)測(cè),關(guān)于健康監(jiān)測(cè)這一塊我們?cè)谏院笠稽c(diǎn)再做具體分析。
優(yōu)點(diǎn)
可以在LB里面做集中的分發(fā)邏輯,可以有多種分發(fā)方式,例如最常見(jiàn)的Round Robin, Random Robin, Weight-Based Round Robin等。
缺點(diǎn)
LB是單點(diǎn), 這里其實(shí)是有2個(gè)問(wèn)題,下面具體分解一下。
問(wèn)題1:?所有流量(請(qǐng)求流、響應(yīng)流)都要經(jīng)過(guò)LB,量太大,LB這小身板扛不住啊,尤其是響應(yīng)流,一般遠(yuǎn)大于請(qǐng)求流,為什么? 我們想想一般一個(gè)http請(qǐng)求報(bào)文大小和響應(yīng)的報(bào)文大小的對(duì)比就明白了。
解決方案:
響應(yīng)流不走LB了!
問(wèn)題2:LB是單點(diǎn)啊,掛了,所有流量都損失了
解決方案之一(LB Active-Standby模式):
現(xiàn)在一些LB也會(huì)支持Active-Active模式,這里不再介紹。
四層LB vs 七層LB
四層LB的特點(diǎn)一般是在網(wǎng)絡(luò)和網(wǎng)絡(luò)傳輸層(TCP/IP)做負(fù)載均衡,而七層則是指在應(yīng)用層做負(fù)載均衡。2者的區(qū)別還是比較大的,各有優(yōu)缺點(diǎn),四層LB對(duì)于應(yīng)用侵入比較小,這一層的LB對(duì)應(yīng)用的感知較少,同時(shí)應(yīng)用接入基本不需要針對(duì)LB做任何的代碼改造。七層負(fù)載均衡一般對(duì)應(yīng)用本身的感知比較多,可以結(jié)合一些通用的業(yè)務(wù)流量負(fù)載邏輯和容災(zāi)邏輯做成很細(xì)致的負(fù)載均衡和流量導(dǎo)向方案,但是一般接入時(shí),應(yīng)用需要配合做相應(yīng)的改造。
互聯(lián)網(wǎng)時(shí)代因?yàn)榱髁烤褪清X(qián)啊,所以對(duì)于流量的調(diào)度的細(xì)致程度往往是四層LB難以滿(mǎn)足的,所以可以說(shuō)七層負(fù)載均衡的解決方案現(xiàn)在是百花齊放,百家爭(zhēng)鳴,中間層負(fù)載均衡(mid-tier load balancing)正當(dāng)其時(shí)。
健康檢測(cè),負(fù)載均衡的伴侶
對(duì)于LB或者一個(gè)LB解決方案來(lái)說(shuō),健康檢測(cè)是LB固有需要一起實(shí)現(xiàn)的需求之一,LB要能幫助業(yè)務(wù)實(shí)現(xiàn)業(yè)務(wù)、服務(wù)器、容器的優(yōu)雅上、下線,幫助業(yè)務(wù)實(shí)現(xiàn)透明的擴(kuò)容、縮容等一系列很現(xiàn)實(shí)的功能,如下簡(jiǎn)圖:
在云計(jì)算時(shí)代彈性計(jì)算(Elastic Compute Service),按需伸縮(On-Demand Allocation)大行其道的今天,對(duì)于LB健康檢測(cè)方案的靈敏度,準(zhǔn)確性,多層次等等都提出了非常高的要求,別看健康檢測(cè)這個(gè)功能貌似很簡(jiǎn)單,但是實(shí)現(xiàn)過(guò)程中如果有很多地方?jīng)]有想到,很容易就造成系統(tǒng)的重大的故障,我們的一些系統(tǒng)在心跳檢測(cè)上栽的跟頭并不少,踩過(guò)很多的坑。
為什么我們要做VIPServer
在有@正明(章文嵩博士的花名)這樣的技術(shù)大牛,LVS的原作者本尊坐鎮(zhèn)的阿里,為什么阿里會(huì)再做一個(gè)負(fù)載均衡產(chǎn)品?其實(shí)很簡(jiǎn)單,為了解決實(shí)際的業(yè)務(wù)問(wèn)題。
在集團(tuán),阿里技術(shù)團(tuán)隊(duì)常常面臨的都是世界級(jí)難題,中間件團(tuán)隊(duì)更是如此,我們不敢吹牛逼說(shuō)對(duì)這些問(wèn)題我們解得多好,但我們真的在踏實(shí)的認(rèn)真的解這些問(wèn)題,而且用我們自己特有的方式,而不是COPY國(guó)外技術(shù)棧的方式在解這些難題,其實(shí)我們很多時(shí)候也很想COPY啊,但是放眼全球相關(guān)領(lǐng)域確實(shí)是沒(méi)得抄。言歸正傳,上面我們過(guò)了一遍常見(jiàn)的負(fù)載均衡方案之后,我們可以發(fā)現(xiàn)傳統(tǒng)LB,如LVS的解決方案中并不是把所有的問(wèn)題都已經(jīng)解決了,我們檢視一下,起碼還遺留了6個(gè)問(wèn)題:
如果過(guò)LB的請(qǐng)求量就大到把LB給打掛了怎么辦?互聯(lián)網(wǎng)的流量,尤其是中國(guó)互聯(lián)網(wǎng)的流量,我們要有足夠的自信啊,而且參與過(guò)春節(jié)買(mǎi)票的,春晚修一修搶紅包的都能想象得到。
LB雖然可以有standby的方案或者有小規(guī)模集群能力,但如果active/standby同時(shí)掛了怎么辦? 1個(gè)蛋蛋很危險(xiǎn),但2個(gè)蛋蛋也未必就多安全。比如在active-standby方案中,既然active撐不住請(qǐng)求流量,那么作為其clone的standby身上當(dāng)然也不會(huì)出現(xiàn)任何奇跡,那么是不是LB前面還應(yīng)該再架一層LB呢?能不能LB集群全掛了的情況下,不影響正常的業(yè)務(wù)?
請(qǐng)求方和目標(biāo)機(jī)器之間總是要過(guò)一次LB,這在網(wǎng)絡(luò)鏈路上是多了1跳,我們都知道多一跳可不光是rt的損耗那么簡(jiǎn)單,鏈路上從1跳到2跳,鏈路和連接出故障的概率也翻了一倍,這要怎么解?
多機(jī)房,多區(qū)域的異地多活與容災(zāi),國(guó)際化戰(zhàn)略的跨國(guó)流量的容災(zāi)對(duì)于負(fù)載均衡提出的挑戰(zhàn)怎么解,在阿里集團(tuán)內(nèi)部,現(xiàn)在斷網(wǎng)、斷電、斷機(jī)房的演習(xí)如日常喝水、像辦公大樓消防演習(xí)一樣隨意,據(jù)說(shuō)要達(dá)到,馬老師半夜起來(lái)上個(gè)廁所,順便斷個(gè)電的能力,這些容災(zāi)場(chǎng)景下業(yè)務(wù)流量的負(fù)載均衡怎么解?
每次在一些如“秒殺”,“大促”等營(yíng)銷(xiāo)熱點(diǎn)場(chǎng)景下,業(yè)務(wù)為了應(yīng)對(duì)可以預(yù)期的流量洪峰,評(píng)估LB這一塊的容量夠不夠、要擴(kuò)多少的痛點(diǎn)又如何解決?LB的彈性在哪里?
成本。雖然LVS比一些傳統(tǒng)硬件LB的成本已經(jīng)有很大的優(yōu)勢(shì),但是在一個(gè)大型互聯(lián)網(wǎng)系統(tǒng)級(jí)別的流量和業(yè)務(wù)發(fā)展面前,LVS的使用成本還是太高了一點(diǎn)。
VIPServer就是為了解決這些實(shí)際問(wèn)題而生,所以上面介紹的這些我們耳熟能詳?shù)臋C(jī)制全都不是VIPServer解決問(wèn)題的思路。
VIPServer簡(jiǎn)介
VIPServer是阿里中間件團(tuán)隊(duì)開(kāi)發(fā)的一個(gè)中間層負(fù)載均衡(mid-tier load balancing)產(chǎn)品,VIPServer是基于P2P模式,是一個(gè)七層負(fù)載均衡產(chǎn)品。VIPServer提供動(dòng)態(tài)域名解析和負(fù)載均衡服務(wù),支持很多諸如多業(yè)務(wù)單元同單元優(yōu)先、同機(jī)房?jī)?yōu)先、同區(qū)域優(yōu)先等一系列流量智能調(diào)度和容災(zāi)策略,支持多種健康監(jiān)測(cè)協(xié)議,支持精細(xì)的權(quán)重控制,提供多級(jí)容災(zāi)體系、具有對(duì)稱(chēng)調(diào)用、健康閾值保護(hù)等保護(hù)功能的解決方案。是阿里負(fù)載均衡體系、域名服務(wù)體系的一個(gè)非常重要的組成部分。
目前阿里包括阿里媽媽、釘釘、搜索、AE、1688、阿里云、高德等幾乎所有的業(yè)務(wù)線均在使用VIPServer,在一些重大的項(xiàng)目例如歷年雙11,支付寶春晚紅包項(xiàng)目都發(fā)揮了重大的作用。
VIPServer的實(shí)現(xiàn)原理,限于篇幅,這里不做詳細(xì)介紹,具體可以參考我們發(fā)表的VIPServer的Paper:
VIPServer: A System for Dynamic Address Mapping and Environment Management
為什么VIPServer在阿里發(fā)展這么快?
講了這么多平實(shí)的技術(shù)的東西,讓我們接著上面的故事往下敘述,幫助您理解VIPServer為何在發(fā)揮越來(lái)越重要的作用。我們看看上面的故事中,隨著業(yè)務(wù)的發(fā)展還會(huì)發(fā)生一些什么事,遇到哪些挑戰(zhàn)。
現(xiàn)在你的公司已經(jīng)各方面都已經(jīng)走上正軌,馬上就要敲鐘上市了,在業(yè)內(nèi),世界范圍內(nèi)已經(jīng)有了廣泛的社會(huì)影響力,已經(jīng)成為一個(gè)新興行業(yè)的風(fēng)向標(biāo)之一,很多人都盯著你,你這個(gè)公司有任何的風(fēng)吹草動(dòng),新聞從業(yè)人員腎上腺激素都會(huì)往外狂飆,你的任何一個(gè)系統(tǒng)掛了都會(huì)影響幾億的用戶(hù),產(chǎn)生千萬(wàn)的資產(chǎn)損失,那么問(wèn)題來(lái)了,你的系統(tǒng)還敢隨意的掛掉么? 掛掉哪怕1分鐘都是給競(jìng)爭(zhēng)對(duì)手的一場(chǎng)狂歡,讓自己的公關(guān)團(tuán)隊(duì)夙夜難眠!
好,像這么牛逼的公司你覺(jué)得你開(kāi)始更多的需要考慮的是什么?1個(gè)機(jī)房,全在H城?那怎么可以?!!且不說(shuō)地球這么危險(xiǎn),地震、海嘯頻發(fā),錯(cuò)峰用電、火災(zāi)時(shí)有發(fā)生,有時(shí)候周?chē)幕S還會(huì)爆個(gè)炸啥的,有時(shí)候就是工地上的鏟車(chē)看起來(lái)都那么可怕,尤其是blueshi(r)t人開(kāi)的鏟車(chē)尤其的可怕。好吧,看來(lái)你需要在多個(gè)城市,多個(gè)國(guó)家,多個(gè)地球上建設(shè)很多個(gè)機(jī)房。有了多個(gè)機(jī)房萬(wàn)事就OK了么?不,事情其實(shí)要比你想象的復(fù)雜的多,你的公司的已有應(yīng)用都在一開(kāi)始就支持異地容災(zāi)能力了么,做架構(gòu)的都知道無(wú)狀態(tài)的應(yīng)用可能好一點(diǎn),但是那些有狀態(tài)的應(yīng)用在這一塊絕對(duì)是重災(zāi)區(qū)。
再?gòu)牧硪粋€(gè)視角來(lái)看這個(gè)問(wèn)題,你的公司再過(guò)去的幾年發(fā)展過(guò)程中會(huì)有各種的新需求,貴公司會(huì)有越來(lái)越多的新業(yè)務(wù)來(lái)滿(mǎn)足這些新需求,而針對(duì)這些新業(yè)務(wù)當(dāng)然會(huì)有更多的各種系統(tǒng)或者叫應(yīng)用來(lái)滿(mǎn)足和服務(wù)這些客戶(hù),但這些應(yīng)用就像我們的手指頭,并不是均衡的,并不是都一樣長(zhǎng),這些系統(tǒng),用戶(hù)數(shù)不均衡,流量不均衡,耗費(fèi)的計(jì)算資源不均衡,數(shù)據(jù)重要性、特征分布,容災(zāi)能力,跨地域部署能力等等全都不均衡。
某一天你好奇到底有多少個(gè)系統(tǒng),調(diào)用鏈路是怎樣的,他們的機(jī)房分布是怎樣的?想評(píng)估一下A地的機(jī)房全掛了會(huì)影響多少系統(tǒng),多少流量,產(chǎn)生多少資損? 于是梳理了一下,這下傻眼了,可能是這個(gè)樣子的:
如果更準(zhǔn)確一點(diǎn)的話,這個(gè)圖其實(shí)應(yīng)該是個(gè)動(dòng)態(tài)的jpeg,因?yàn)槊恐芏加邢到y(tǒng)在出生和消亡,有的應(yīng)用版圖在擴(kuò)大,有的應(yīng)用版圖在縮小,而且從一定程度上來(lái)講,這個(gè)圖的變化的速度一定程度上反應(yīng)了貴公司的整個(gè)系統(tǒng)跟隨業(yè)務(wù)快速變化的能力和業(yè)務(wù)的活力,除了應(yīng)用本身,數(shù)據(jù)中心每天都有物理機(jī)器在崩潰和修復(fù),虛擬化之后更明顯。
如果有這么一種負(fù)載均衡器,能在宏觀上,某個(gè)切面上讓所有的應(yīng)用之間的調(diào)用滿(mǎn)足如下的智能調(diào)度策略,將是一個(gè)多么美好的事情,而且最好是接入幾乎不用怎么讓已有的業(yè)務(wù)做代碼的改造,這種改造是多么蛋疼的事情,有經(jīng)驗(yàn)的平臺(tái)架構(gòu)師肯定身有體會(huì),無(wú)需贅述。
同機(jī)房?jī)?yōu)先 A應(yīng)用調(diào)用B應(yīng)用,負(fù)載均衡器負(fù)責(zé)調(diào)度,如果B應(yīng)用有跟A部署在同一個(gè)機(jī)房部署的話,就優(yōu)先路由到同機(jī)房的B。
流量打散的容災(zāi)需求 昨天同機(jī)房的A和B玩的還好好的,但同機(jī)房的B應(yīng)用說(shuō)沒(méi)有就沒(méi)有了,有時(shí)候是凌晨睡的正香的時(shí)候沒(méi)有了,手機(jī)上報(bào)警嘩嘩的,這時(shí)候你就想要是能流量自動(dòng)打散到最近的機(jī)房就好了。
貴公司要的是千里之外的容災(zāi),國(guó)際化的戰(zhàn)略,而用戶(hù)需要的是毫秒級(jí)的請(qǐng)求響應(yīng)速度,跟隨戰(zhàn)略,這網(wǎng)絡(luò)延遲蹭蹭的往上漲,網(wǎng)絡(luò)質(zhì)量蹭蹭的往下降,但另一個(gè)方面,現(xiàn)在用戶(hù)的時(shí)間碎片化這么嚴(yán)重,毫秒級(jí)的延遲就可能導(dǎo)致用戶(hù)失去耐心全去你的競(jìng)爭(zhēng)對(duì)手的網(wǎng)站上去了,所以如何去彌合所有已有應(yīng)用之間的跨機(jī)房、區(qū)域、國(guó)家的調(diào)用導(dǎo)致這2個(gè)方向上的裂隙?
你作為老板,想了一下,一個(gè)小小負(fù)載均衡器掛了,怎么可以影響到所有的業(yè)務(wù)呢?而作為有夢(mèng)想的程序猿啊,出來(lái)混,系統(tǒng)要”穩(wěn)“字當(dāng)頭,一個(gè)3天2頭宕機(jī)的系統(tǒng)即使有價(jià)值也有限的很,而且很快會(huì)被更穩(wěn)定的系統(tǒng)所替代,所以LB的server掛了還能保障業(yè)務(wù)繼續(xù)運(yùn)行的LB才是好的LB.
VIPServer并不完美
作為一個(gè)誕生剛幾年的家伙,雖然發(fā)展確實(shí)很快,但它還只是個(gè)孩子,我們想說(shuō)的是不光是用戶(hù)這樣看,其實(shí)在我們自己的眼里,它還有很多很多的不足甚至缺陷,但有@正明這樣的前輩在前面的孜孜不倦、追求卓越的身影,我們這些后輩怎么可以懈怠,尸位素餐,怎么可以不持續(xù)改進(jìn)自己的產(chǎn)品,在國(guó)內(nèi)技術(shù)領(lǐng)域的技術(shù)積累貢獻(xiàn)自己一點(diǎn)微薄的力量呢!《漢書(shū)·程序猿傳》有云:“今我輩程序猿,上不能匡主,下不能益民,皆可以稱(chēng)之為尸位素餐?!?/p>
轉(zhuǎn)載于:https://my.oschina.net/u/3361217/blog/869383
總結(jié)
以上是生活随笔為你收集整理的(转载自)章文嵩博士和他背后的负载均衡帝国的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Office LTSC 2021离线安装
- 下一篇: 【漫画科普】什么是POL?什么是全光?