2021-02-05 分類: 網(wǎng)站建設
業(yè)務增長到一定量級,單純的增加增加服務器的配置已經(jīng)不能滿足業(yè)務需求,這個時候集群模式就是出現(xiàn)了。在集群模式中,負載均衡是回避不了的。負載均衡就是將請求“均勻”的分攤給不同的服務器。
負載均衡
通過DNS來實現(xiàn)負載均衡。DNS是域名解析服務器,可以將域名轉(zhuǎn)換成IP。服務器可以將多個IP注冊到DNS,這樣DNS在解析的時候,可以以輪詢的方式返回這些IP中的一個,從而實現(xiàn)負載均衡。
這種實現(xiàn)方式的特點是,簡單。另外,這種方式還能夠根據(jù)客戶端的地理位置返回離客戶端較近的服務器的IP,加快與客戶端的交互。這種方式的弊端也非常明顯:1.小公司沒有能力構(gòu)建自己的DNS;2.DNS無法感知后端服務器的負載,只能實現(xiàn)簡單的輪詢處理;3.DNS的更新較慢。我們知道,域名會被緩存在本地和各級DNS中。當域名對應的IP更新的時候,客戶端要等到緩存過期才能使用新的IP。
LVS是四層負載均衡器,工作在內(nèi)核態(tài)。nginx是七層負載均衡器,當然現(xiàn)在nginx也推出了四層負載均衡器,但是是收費功能。什么是四層負載均衡器和七層負載均衡器呢?四層和七層是指負載均衡器工作在網(wǎng)絡協(xié)議的哪個層次。四層是IP層(網(wǎng)絡協(xié)議層),在這一層面的負載均衡器可以感知IP協(xié)議,也就是能夠知道客戶端的IP,可以根據(jù)客戶端的IP選擇將請求分發(fā)到哪個服務器上。請求的分發(fā)是通過修改目的IP的方式實現(xiàn)的,即將目的IP修改成后端服務器的IP。七層負載均衡器工作在應用層,對于http請求,負載均衡器可以知道請求的URL、session等。一般情況下,四層負載均衡器的性能要高于七層負載均衡器。
對于nginx來說,配置簡單,通過可以實現(xiàn)輪詢、隨機、加權(quán)輪詢和基于連接數(shù)的負載均衡等。
為了提高LVS的可用性,我們使用雙機對外提供服務??梢允褂胟eepalived+VIP的方式實現(xiàn)雙機。雙機中,一臺機器是主機,對外提供服務,另一臺為備機,不對外提供服務。二者通過keepalived軟件來判斷主機是否故障,自動完成VIP從主機切換到備機。主備機的切換對客戶端是無感知的。
這一層一般使用RPC框架來實現(xiàn),如DUBBO、SpringCloud等。
對于數(shù)據(jù)庫,有如下兩種常用的負載均衡方式:
1.讀寫分離。數(shù)據(jù)庫是一主多從,即一臺主服務器負責數(shù)據(jù)的寫操作,從庫對外提供讀服務,主庫完成寫操作后,將更新同步到從庫或者從庫監(jiān)控主庫的寫LOG,將寫LOG同步到從庫。這種模式很適合寫少讀多的情況。
2.分庫。當數(shù)據(jù)庫表大到一定規(guī)模后,就要考慮分庫了,即將一張表拆分到兩個數(shù)據(jù)庫中。常見的拆分規(guī)則有:
1)按照范圍拆分。比如對于用戶的ID,可以將小于5000的拆分到一個庫中,大于5000的拆分到另外一個庫。這種拆分比較簡單,但是可能會出現(xiàn)活躍的用戶僅在某一個段內(nèi),導致負載均衡效果不是很理想。
2)hash。比如根據(jù)用戶ID計算哈希值,然后對數(shù)據(jù)庫服務器個數(shù)取模,得到這個用戶應該存儲在哪個數(shù)據(jù)庫。這種方式可以很好的實現(xiàn)負載均衡,但是在增加服務器的情況下,數(shù)據(jù)的重新分布比較慢,而且可能移動的數(shù)據(jù)比較多?,F(xiàn)在一般使用一致性hash,更好的實現(xiàn)負載均衡并較少服務器變化時數(shù)據(jù)移動的數(shù)量。
網(wǎng)站名稱:負載均衡種類及實現(xiàn)
文章路徑:http://www.rwnh.cn/news47/99297.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站建設、服務器托管、品牌網(wǎng)站設計、商城網(wǎng)站、手機網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容