女人扒开屁股让男人桶,国产办公室沙发系列高清,欧美mv日韩mv国产网站,国产亚洲精品久久久久久快乐8

干貨分享 | 分布式系統(tǒng)的負(fù)載均衡

2019-08-08

1  了解負(fù)載均衡

      記得第一次接觸Nginx是在實(shí)驗(yàn)室,那時(shí)候在服務(wù)器部署網(wǎng)站需要用Nginx。Nginx是一個(gè)服務(wù)組件,用來反向代理、負(fù)載平衡和HTTP緩存等。那么這里的負(fù)載均衡是什么?

      負(fù)載均衡簡(jiǎn)稱LBLoad Balance),確切的說是一種技術(shù)解決方案,用于在多個(gè)資源(泛指服務(wù)器)中分配負(fù)載,達(dá)到最優(yōu)化資源使用,避免設(shè)備過載。

      資源等于每個(gè)服務(wù)實(shí)例的執(zhí)行操作單元,負(fù)載均衡就是將大量的數(shù)據(jù)處理操作分?jǐn)偟蕉鄠€(gè)操作單元進(jìn)行執(zhí)行,用來解決互聯(lián)網(wǎng)分布式系統(tǒng)的大流量、高并發(fā)和高可用的問題。

那么,什么是高可用呢?

2  高可用的含義

      首先讓我們了解一下什么是高可用?

      高可用是CAP定理是分布式系統(tǒng)的基礎(chǔ),也是分布式系統(tǒng)的3個(gè)指標(biāo):

High Availability-高可用是什么?

      高可用簡(jiǎn)稱HA,是系統(tǒng)一種特征或者指標(biāo),通常是指提供一定性能上的服務(wù)運(yùn)行時(shí)間,高于平均正常時(shí)間段。反之,消除系統(tǒng)服務(wù)不可用的時(shí)間。

      衡量系統(tǒng)是否滿足高可用,就是當(dāng)一臺(tái)或者多臺(tái)服務(wù)器宕機(jī)的時(shí)候,系統(tǒng)整體和服務(wù)依然正常可用。


      比如下單服務(wù),可以使用帶有負(fù)載均衡的多個(gè)下單服務(wù)實(shí)例,代替單一的下單服務(wù)實(shí)例,即使用冗余的方式來提高可靠性。

      總而言之,負(fù)載均衡(Load Balance)是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一。一般通過負(fù)載均衡,冗余同一個(gè)服務(wù)實(shí)例的方式,解決分布式系統(tǒng)的大流量、高并發(fā)和高可用的問題。負(fù)載均衡核心關(guān)鍵:在于是否分配均勻。


3 兩個(gè)負(fù)載均衡案例分享

案例1


      微服務(wù)架構(gòu)中,網(wǎng)關(guān)路由到具體的服務(wù)實(shí)例hello


案例2


      微服務(wù)架構(gòu)中,A服務(wù)調(diào)用B服務(wù)的集群。通過了Ribbon客戶端負(fù)載均衡組件:

 ● 負(fù)載均衡策略算法并不高級(jí),最簡(jiǎn)單的是隨機(jī)選擇和輪循。

4互聯(lián)網(wǎng)分布式系統(tǒng)解決方案


      常見的幾個(gè)互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)分層如下:


      一個(gè)請(qǐng)求從第1層到第4層,層層訪問都需要負(fù)載均衡。即每個(gè)上游調(diào)用下游多個(gè)業(yè)務(wù)方的時(shí)候,需要均勻調(diào)用。這樣整體系統(tǒng)來看,就比較負(fù)載均衡。

第 一 層

客戶端層 -> 反向代理層的負(fù)載均衡

      客戶端層 -> 反向代理層的負(fù)載均衡如何實(shí)現(xiàn)呢?

      答案是:DNS的輪詢。DNS可以通過AAddress,返回域名指向的IP地址)設(shè)置多個(gè)IP地址。比如這里訪問bysocket.comDNS配置了ip1ip2。為了反向代理層的高可用,至少會(huì)有兩條A記錄。這樣冗余的兩個(gè)ip對(duì)應(yīng)的nginx服務(wù)實(shí)例,防止單點(diǎn)故障。

      每次請(qǐng)求bysocket.com域名的時(shí)候,通過DNS輪詢,返回對(duì)應(yīng)的ip地址,每個(gè)ip對(duì)應(yīng)的反向代理層的服務(wù)實(shí)例,也就是nginx的外網(wǎng)ip。這樣可以做到每一個(gè)反向代理層實(shí)例得到的請(qǐng)求分配是均衡的。


第 二 層

反向代理層 -> Web層的負(fù)載均衡

      反向代理層 -> Web層的負(fù)載均衡如何實(shí)現(xiàn)呢?

      是通過反向代理層的負(fù)載均衡模塊處理。比如nginx有多種均衡方法:

1請(qǐng)求輪詢

      請(qǐng)求按時(shí)間順序,逐一分配到web層服務(wù),然后周而復(fù)始。如果web層服務(wù)down掉,自動(dòng)剔除。



2ip 哈希

      按照ip的哈希值,確定路由到對(duì)應(yīng)的web層。只要是用戶的ip是均勻的,那么請(qǐng)求到Web層也是均勻的。
還有個(gè)好處就是同一個(gè)ip的請(qǐng)求會(huì)分發(fā)到相同的web層服務(wù)。這樣每個(gè)用戶固定訪問一個(gè)web層服務(wù),可以解決session的問題。


3weight權(quán)重、fair、url_hash


第 三 層

Web -> 業(yè)務(wù)服務(wù)層的負(fù)載均衡

      Web 層 -> 業(yè)務(wù)服務(wù)層的負(fù)載均衡如何實(shí)現(xiàn)呢?

      比如Dubbo是一個(gè)服務(wù)治理方案,包括服務(wù)注冊(cè)、服務(wù)降級(jí)、訪問控制、動(dòng)態(tài)配置路由規(guī)則、權(quán)重調(diào)節(jié)、負(fù)載均衡。其中一個(gè)特性就是智能負(fù)載均衡:內(nèi)置多種負(fù)載均衡策略,智能感知下游節(jié)點(diǎn)健康狀況,顯著減少調(diào)用延遲,提高系統(tǒng)吞吐量。

      為了避免單點(diǎn)故障和支持服務(wù)的橫向擴(kuò)容,一個(gè)服務(wù)通常會(huì)部署多個(gè)實(shí)例,即Dubbo集群部署。會(huì)將多個(gè)服務(wù)實(shí)例成為一個(gè)服務(wù)提供方,然后根據(jù)配置的隨機(jī)負(fù)載均衡策略,在20個(gè)Provider中隨機(jī)選擇了一個(gè)來調(diào)用,假設(shè)隨機(jī)到了第7個(gè)Provider。LoadBalance組件從提供者地址列表中,使用均衡策略,選擇選一個(gè)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。


Dubbo內(nèi)置了4種負(fù)載均衡策略:

 ● RandomLoadBalance:隨機(jī)負(fù)載均衡。隨機(jī)的選擇一個(gè)。是Dubbo的默認(rèn)負(fù)載均衡策略。

 ● RoundRobinLoadBalance:輪詢負(fù)載均衡。輪詢選擇一個(gè)。

 ● LeastActiveLoadBalance:最少活躍調(diào)用數(shù),相同活躍數(shù)的隨機(jī)?;钴S數(shù)指調(diào)用前后計(jì)數(shù)差。使慢的Provider收到更少請(qǐng)求,因?yàn)樵铰?/span>Provider的調(diào)用前后計(jì)數(shù)差會(huì)越大。

 ● ConsistentHashLoadBalance:一致性哈希負(fù)載均衡。相同參數(shù)的請(qǐng)求總是落在同一臺(tái)機(jī)器上。

同樣,因?yàn)闃I(yè)務(wù)的需要,也可以實(shí)現(xiàn)自己的負(fù)載均衡策略。


第 四 層

業(yè)務(wù)服務(wù)層 -> 數(shù)據(jù)存儲(chǔ)層的負(fù)載均衡

      數(shù)據(jù)存儲(chǔ)層的負(fù)載均衡,一般通過DBProxy實(shí)現(xiàn)。比如MySQL分庫分表。

      當(dāng)單庫或者單表訪問太大,數(shù)據(jù)量太大的情況下,需要進(jìn)行垂直拆分和水平拆分兩個(gè)維度。比如水平切分規(guī)則:


      但伴隨著這塊的負(fù)載會(huì)出現(xiàn)下面的問題,需要解決:


      現(xiàn)狀分庫分表的產(chǎn)品方案很多,包括阿里的Cobar、當(dāng)當(dāng)sharding-jdbc等都是。

5小結(jié)

      對(duì)外看來,負(fù)載均衡是一個(gè)系統(tǒng)或軟件的整體。對(duì)內(nèi)看來,層層上下游調(diào)用。只要存在調(diào)用,就需要考慮負(fù)載均衡這個(gè)因素。所以負(fù)載均衡(Load Balance)是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一??紤]主要是如何讓下游接收到的請(qǐng)求是均勻分布的:



文章來源于泥瓦匠:https://mp.weixin.qq.com/s/AdCtiXBLTJrWfcNV9LO2wA