




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
架構(gòu)干貨:分布式系統(tǒng)的負(fù)載均衡
在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺機(jī)器供應(yīng)集中式服務(wù),但隨著業(yè)務(wù)量越來越大,無論性能還是穩(wěn)定性上都有了更大的挑戰(zhàn)。這時候我們就會想到通過擴(kuò)容的方式來供應(yīng)更好的服務(wù)。
一、什么是負(fù)載均衡?
什么是負(fù)載均衡?
記得第一次接觸Nginx是在試驗(yàn)室,那時候在服務(wù)器部署網(wǎng)站需要用Nginx。Nginx是一個服務(wù)組件,用來反向代理、負(fù)載平衡和HTTP緩存等。那么這里的負(fù)載均衡是什么?
負(fù)載均衡(LB,LoadBalance),是一種技術(shù)解決方案。用來在多個資源(一般是服務(wù)器)中安排負(fù)載,達(dá)到最優(yōu)化資源使用,避開過載。
資源,相當(dāng)于每個服務(wù)實(shí)例的執(zhí)行操作單元,負(fù)載均衡就是將大量的數(shù)據(jù)處理操作分?jǐn)偟蕉鄠€操作單元進(jìn)行執(zhí)行,用來解決互聯(lián)網(wǎng)分布式系統(tǒng)的大流量、高并發(fā)和高可用的問題。那什么是高可用呢?
二、什么是高可用?
首先了解什么是高可用?
這是CAP定理是分布式系統(tǒng)的基礎(chǔ),也是分布式系統(tǒng)的3個指標(biāo):
①Consistency(全都性)
②Availability(可用性)
③Partitiontolerance(分區(qū)容錯性)
那高可用(HighAvailability)是什么?高可用,簡稱HA,是系統(tǒng)一種特征或者指標(biāo),通常是指,供應(yīng)肯定性能上的服務(wù)運(yùn)行時間,高于平均正常時間段。反之,消退系統(tǒng)服務(wù)不行用的時間。
衡量系統(tǒng)是否滿意高可用,就是當(dāng)一臺或者多臺服務(wù)器宕機(jī)的時候,系統(tǒng)整體和服務(wù)依舊正??捎?。
舉個例子,一些知名的網(wǎng)站保證4個9以上的可用性,也就是可用性超過99.99%。那0.01%就是所謂故障時間的百分比。比如電商網(wǎng)站有贊,服務(wù)不行用會造成商家損失金錢和用戶。那么在提高可用性基礎(chǔ)上同時,對系統(tǒng)宕機(jī)和服務(wù)不行用會有補(bǔ)償。
比如下單服務(wù),可以使用帶有負(fù)載均衡的多個下單服務(wù)實(shí)例,代替單一的下單服務(wù)實(shí)例,即使用冗余的方式來提高牢靠性。
總而言之,負(fù)載均衡(LoadBalance)是分布式系統(tǒng)架構(gòu)設(shè)計中必需考慮的因素之一。一般通過負(fù)載均衡,冗余同一個服務(wù)實(shí)例的方式,解決分布式系統(tǒng)的大流量、高并發(fā)和高可用的問題。負(fù)載均衡核心關(guān)鍵:在于是否安排勻稱。
三、常見的負(fù)載均衡案例
場景1:微服務(wù)架構(gòu)中,網(wǎng)關(guān)路由到詳細(xì)的服務(wù)實(shí)例hello:
①兩個相同的服務(wù)實(shí)例helloservice,一個端口8000,另一個端口8082;
②通過Kong的負(fù)載均衡LB功能,讓懇求勻稱的分發(fā)到兩個hello服務(wù)實(shí)例;
③Kong的負(fù)載均衡策略算法許多:默認(rèn)weighted-round-robin算法,還有consumer:consumerid作為hash算法輸入值等;
場景2:微服務(wù)架構(gòu)中,A服務(wù)調(diào)用B服務(wù)的集群。通過了Ribbon客戶端負(fù)載均衡組件:
①負(fù)載均衡策略算法并不高級,最簡潔的是隨機(jī)選擇和輪循
四、互聯(lián)網(wǎng)分布式系統(tǒng)解決方案
常見的互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)分為幾層,一般如下:
①客戶端層:比如用戶掃瞄器、APP端
②反向代理層:技術(shù)選型Nignx或者F5等
③Web層:前后端分別場景下,Web端可以用NodeJS、RN、Vue
④業(yè)務(wù)服務(wù)層:用Java、Go,一般互聯(lián)網(wǎng)公司,技術(shù)方案選型就是SC或者SpringBoot+Dubbo服務(wù)化
⑤數(shù)據(jù)存儲層:DB選型MySQL,Cache選型Redis,搜尋選型ES等
一個懇求從第1層到第4層,層層訪問都需要負(fù)載均衡。即每個上游調(diào)用下游多個業(yè)務(wù)方的時候,需要勻稱調(diào)用。這樣整體系統(tǒng)來看,就比較負(fù)載均衡
第1層:客戶端層-反向代理層的負(fù)載均衡
客戶端層-反向代理層的負(fù)載均衡如何實(shí)現(xiàn)呢?
答案是:DNS的輪詢。DNS可以通過A(Address,返回域名指向的IP地址)設(shè)置多個IP地址。比如這里訪問bysocket.的DNS配置了ip1和ip2。為了反向代理層的高可用,至少會有兩條A記錄。這樣冗余的兩個ip對應(yīng)的nginx服務(wù)實(shí)例,防止單點(diǎn)故障。
每次懇求bysocket.域名的時候,通過DNS輪詢,返回對應(yīng)的ip地址,每個ip對應(yīng)的反向代理層的服務(wù)實(shí)例,也就是nginx的外網(wǎng)ip。這樣可以做到每一個反向代理層實(shí)例得到的懇求安排是均衡的。
第2層:反向代理層-Web層的負(fù)載均衡
反向代理層-Web層的負(fù)載均衡如何實(shí)現(xiàn)呢?
是通過反向代理層的負(fù)載均衡模塊處理。比如nginx有多種均衡方法:
①懇求輪詢。懇求按時間挨次,逐一安排到web層服務(wù),然后周而復(fù)始。假如web層服務(wù)down掉,自動剔除
②ip哈希。根據(jù)ip的哈希值,確定路由到對應(yīng)的web層。只要是用戶的ip是勻稱的,那么懇求到Web層也是勻稱的。
③還有個好處就是同一個ip的懇求會分發(fā)到相同的web層服務(wù)。這樣每個用戶固定訪問一個web層服務(wù),可以解決session的問題。
第3層:Web層-業(yè)務(wù)服務(wù)層的負(fù)載均衡
Web層-業(yè)務(wù)服務(wù)層的負(fù)載均衡如何實(shí)現(xiàn)呢?
比如Dubbo是一個服務(wù)治理方案,包括服務(wù)注冊、服務(wù)降級、訪問掌握、動態(tài)配置路由規(guī)章、權(quán)重調(diào)整、負(fù)載均衡。其中一個特性就是智能負(fù)載均衡:內(nèi)置多種負(fù)載均衡策略,智能感知下游節(jié)點(diǎn)健康狀況,顯著削減調(diào)用延遲,提高系統(tǒng)吞吐量。
為了避開避開單點(diǎn)故障和支持服務(wù)的橫向擴(kuò)容,一個服務(wù)通常會部署多個實(shí)例,即Dubbo集群部署。會將多個服務(wù)實(shí)例成為一個服務(wù)供應(yīng)方,然后依據(jù)配置的隨機(jī)負(fù)載均衡策略,在20個Provider中隨機(jī)選擇了一個來調(diào)用,假設(shè)隨機(jī)到了第7個Provider。LoadBalance組件從供應(yīng)者地址列表中,使用均衡策略,選擇選一個供應(yīng)者進(jìn)行調(diào)用,假如調(diào)用失敗,再選另一臺調(diào)用。
Dubbo內(nèi)置了4種負(fù)載均衡策略:
①RandomLoadBalance:隨機(jī)負(fù)載均衡。隨機(jī)的選擇一個。是Dubbo的默認(rèn)負(fù)載均衡策略。
②RoundRobinLoadBalance:輪詢負(fù)載均衡。輪詢選擇一個。
③LeastActiveLoadBalance:最少活躍調(diào)用數(shù),相同活躍數(shù)的隨機(jī)?;钴S數(shù)指調(diào)用前后計數(shù)差。使慢的Provider收到更少懇求,由于越慢的Provider的調(diào)用前后計數(shù)差會越大。
④ConsistentHashLoadBalance:全都性哈希負(fù)載均衡。相同參數(shù)的懇求總是落在同一臺機(jī)器上。
同樣,由于業(yè)務(wù)的需要,也可以實(shí)現(xiàn)自己的負(fù)載均衡策略
第4層:業(yè)務(wù)服務(wù)層-數(shù)據(jù)存儲層的負(fù)載均衡
數(shù)據(jù)存儲層的負(fù)載均衡,一般通過DBProxy實(shí)現(xiàn)。比如MySQL分庫分表。
當(dāng)單庫或者單表訪問太大,數(shù)據(jù)量太大的狀況下,需要進(jìn)行垂直拆分和水平拆分兩個維度。比如水平切分規(guī)章:
①Range、時間
②hash取模,訂單依據(jù)店鋪ID等
但伴隨著這塊的負(fù)載會消失下面的問題,需要解決:
①分布式事務(wù)
②跨庫join等
現(xiàn)狀分庫分表的產(chǎn)品方案許多:當(dāng)當(dāng)sharding-jdbc、阿里的Cobar等
五、小結(jié)
對外看來,負(fù)載均衡是一個系統(tǒng)或軟件的整體。對內(nèi)看來,層層上下游調(diào)用。只要存在調(diào)用,就需要考慮負(fù)載均衡這個因素。所以負(fù)載均衡(LoadBalance)是分布式系統(tǒng)架構(gòu)設(shè)計中必需考慮的因素之一??紤]主要是如何讓下游接收到的懇求是勻稱分布的:
第1層:客戶端層-反向代理層的負(fù)載均衡
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)用工廚師合同范本
- 東京美甲店轉(zhuǎn)租合同范本
- 分期售房合同范本
- 出售轉(zhuǎn)讓地板合同范本
- 包裝袋購銷合同范本版
- 中介買賣房屋合同范本
- 個人入股投資合同范本
- 包裝承攬合同范本
- 勞務(wù)派遣三方協(xié)議合同范本
- 勞務(wù)合同范本罰款
- 《勞動法常識(第3版)》中職全套教學(xué)課件
- 2025年勞動合同延期補(bǔ)充協(xié)議模板
- 2025年日歷表(含農(nóng)歷、節(jié)假日、記事、A4打印版)
- 北京體育職業(yè)學(xué)院《機(jī)器人操作系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025安徽雙鶴藥業(yè)限責(zé)任公司招聘30人易考易錯模擬試題(共500題)試卷后附參考答案
- 《反家庭暴力》課件
- 提高鋁合金外窗防滲漏施工一次合格率
- 2024春蘇教版《亮點(diǎn)給力大試卷》 數(shù)學(xué)四年級下冊(全冊有答案)
- 樸素貝葉斯分類器完整
- 教育系統(tǒng)績效工資分配方案(共6頁)
- 人教版數(shù)學(xué)三年級下冊第一單元《位置與方向(一)》單元測試卷[附答案]
評論
0/150
提交評論