一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

從架構(gòu)上詳解技術(shù)(SLB,Redis,Mysql,Kafka,Clickhouse)的各類熱點問題

 漢無為 2022-07-09 發(fā)布于湖北

這里我們要講的是技術(shù)的熱點問題,SLB的熱點問題,Redis的熱點問題,Mysql的熱點問題,分布式數(shù)據(jù)庫集群的熱點問題等,這類技術(shù)熱點問題并不是所謂的引人注目的問題而是服務(wù)請求過多,流量集中的問題。

圖片

SLB

定義:服務(wù)器負載均衡(Server Load Balancing),實現(xiàn)多個服務(wù)器之間的負載均衡。

主流軟件負載均衡有:1:LVS,2:Nginx,3:HAProxy

1

LVS

1:作在網(wǎng)絡(luò)4層,通過VRRP協(xié)議(僅作代理之用),具體的流量是由linux內(nèi)核來處理,因此沒有流量的產(chǎn)生。

2:抗負載能力強,性能高,能達到F5的60%,對內(nèi)存和CPU資源消耗比較低

3:穩(wěn)定,可靠性高,自身有完美的熱備方案(Keepalived+lvs)

4:支持8種負載均衡算法:rr(輪詢)、wrr(帶權(quán)輪詢)、lc(最小連接)、wlc(帶權(quán)最小連接)、 lblc(基于局部性的最少連接調(diào)度算法)、lblcr(復(fù)雜的基于局部性最少的連接算法)、dh(目標地址散列調(diào)度算法 )、sh(源地址散列調(diào)度算法 )

5:工作模式有4種:

(1) nat 地址轉(zhuǎn)換

(2) dr 直接路由

(3) tun 隧道

(4) full-nat 

2

Nginx

1:工作在網(wǎng)絡(luò)7層,可以針對http應(yīng)用做一些分流的策略,比如針對域名,目錄結(jié)構(gòu)

2:Nginx僅能支持http、https和Email協(xié)議,這樣就在適用范圍較小。

3:對后端服務(wù)器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測

4:可以承擔(dān)較高的負載壓力且穩(wěn)定,nginx是為解決c10k問題而誕生的

5:Nginx能做Web服務(wù)器即Cache功能。

3

HAProxy

1:支持兩種代理模式:TCP(四層)和HTTP(七層),支持虛擬主機

2:支持url檢測后端的服務(wù)器出問題的檢測會有很好的幫助。

3:支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權(quán)輪循)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據(jù)cookie)

4:支持負載均衡策略:動態(tài)加權(quán)輪循(Dynamic Round Robin),加權(quán)源地址哈希(Weighted Source Hash),加權(quán)URL哈希和加權(quán)參數(shù)哈希(Weighted Parameter Hash)

5:不能做Web服務(wù)器即Cache

現(xiàn)在基本所有的公司的業(yè)務(wù)最前端都是一個負載均衡服務(wù)器承載流量,然后分發(fā)到各個后端服務(wù)器,參照下圖,這樣的架構(gòu)應(yīng)該是大多數(shù)公司的架構(gòu)。從請求主要分三個層次。用戶->負載均衡,負載均衡->微服務(wù),微服務(wù)->后端服務(wù)。

圖片

關(guān)于負載均衡這一塊的熱點問題會出現(xiàn)在哪呢?從上面的分析看其實主要是在于散列調(diào)度算法,不管是源地址散列算法還是目標地址散列算法,可能會造成一個局域網(wǎng)的很多用戶同時請求同一服務(wù)而造成這個負載均衡服務(wù)器量很大,而造成負載均衡服務(wù)器出問題,這就是所說的熱點問題。在使用散列調(diào)度算法就容易遇到熱點問題,因為散列容易造成請求不平均,請求量大可能觸發(fā)到同一個負載均衡服務(wù)器。如果使用輪詢,負載請求會平均,不容易觸發(fā)熱點問題。當然啦,負載均衡實際基本不會出現(xiàn)問題,因為要是負載均衡出問題,要么業(yè)務(wù)量幾百萬倍幾千萬倍增長,那確實說明這個量很大很大。

Redis的架構(gòu)

關(guān)于Redis的部署架構(gòu)主要有單機模式,主從模式,哨兵模式,redis cluser模式。其實嚴格意義上來說部署只有三種,哨兵模式其實基于對主從模式的穩(wěn)定性優(yōu)化,切主節(jié)點能實現(xiàn)自動化。

1

單機模式

優(yōu)點:1、部署簡單。2、數(shù)據(jù)一致性高

缺點:1、可靠性無法保證。2、處理能力有限

2

模式(如下圖)

優(yōu)點:1、可靠性得到一定保障,當節(jié)點出問題,可由其他節(jié)點來提供。2、提升了讀能力,分散主節(jié)點的讀壓力

缺點:1、主節(jié)點的寫能力和存儲能力受單機限制。2、主節(jié)點宕機,切換從節(jié)點需要業(yè)務(wù)方手動切換,進行人工干預(yù)。

圖片

3

兵模式(如下圖)

優(yōu)點:1、基于主從模式,主從可以自動切換。

缺點:1、節(jié)點的承載能力有限,寫能力和存儲能力都有限。

圖片

4

redis cluser模式(如下圖)

優(yōu)點:高可用、可擴展性、分布式、支持容錯。redis cluster接受客戶端請求,會首先通過對key進行CRC16校驗并對16384取模(CRC16(key)%16383)計算出key所在的槽,確定槽所在的節(jié)點,然后再到對應(yīng)的節(jié)點上進行取數(shù)據(jù)或者存數(shù)據(jù),這樣就實現(xiàn)了數(shù)據(jù)的訪問更新。

缺點:無

圖片

關(guān)于redis的三種架構(gòu)模式,redis的集群架構(gòu)的熱點問題就明顯了,主從模式,寫請求是很明顯的熱點問題,讀請求在讀節(jié)點中輪詢讀取,則不會出現(xiàn)熱點問題,但是如果讀節(jié)點是通過散列方式,則也會出現(xiàn)熱點問題。關(guān)于redis cluster架構(gòu)是多主,多從的架構(gòu),理論上是能很好的解決熱點問題,寫請求隨機到不同的主從集群不同的主節(jié)點中,讀請求會到不同的主從集群的從節(jié)點中,這樣就很好的分散了請求,做到這一點其實至少要保證每個主節(jié)點都有一個主備。如果只有一個主節(jié)點,那其實和主從模式?jīng)]有區(qū)別了,這樣的話寫的熱點問題和讀的熱點問題就容易出現(xiàn)了,尤其是redis的大key讀取問題,當然不管是哪種模式下都會存在大key讀取的熱點問題,要解決大key熱點問題,redis的值設(shè)計是很有講究的,不建議值超過128KB。基礎(chǔ)知識了解之后,關(guān)于如何選架構(gòu)成為解決熱點問題,提升服務(wù)穩(wěn)定性的關(guān)鍵點。

Mysql的架構(gòu)

關(guān)于Mysql的架構(gòu)(如下圖,其實只有主從模式,在業(yè)務(wù)中我們處理量大的問題通常使用讀寫分離,mysql是做數(shù)據(jù)持久化存儲,讀寫分離也是有通過中間件來實現(xiàn)。關(guān)于Mysql的讀和寫熱點問題,其實還是比較明顯,不管是讀和寫,量達到一定程度,都會存在的。在我們很大的業(yè)務(wù)流量下,我們Mysql的前端都會有Redis或者中間件的來量。

圖片

Kafka的架構(gòu)

關(guān)于Kafka的架構(gòu)(如下圖)是一個分布式多分區(qū),多副本,多訂閱者的高可用,高性能,高并發(fā)的MQ系統(tǒng)。Kafka寫數(shù)據(jù)是從Producer生成,需指定Topic,最終是寫入到某一個Partition(某個Leader副本的Partition)。Kafka的消費數(shù)據(jù)則是從Leader副本的某個Partition讀數(shù)據(jù)去消費。好了我們來看下寫入和讀取的熱點問題,如果客戶端一直請求同一個topic,同一個partition,等這個量達到集群的承載量就容易出現(xiàn)熱點問題了。所以要避免這樣的問題我們盡量讓partition能夠多一些,讓數(shù)據(jù)隨機平均到不同的partition上,這樣承載量會更大,熱點問題就不容易出現(xiàn)。再者kafka是號稱百萬qps的(這個涉及到kafka的底層實現(xiàn),順序io,零拷貝等機制),熱點問題相對來說是很難出現(xiàn)的。關(guān)于讀數(shù)據(jù)這個就基本不會出現(xiàn)熱點問題了,因為消費者是根據(jù)partition的個數(shù)來確定的,一個partition只能對應(yīng)一個消費組的一個消費者。當然會存在多個消費者的情況,一般情況不可能達到服務(wù)器讀的承載量。

圖片

Clickhouse的架構(gòu)

clickhouse的架構(gòu)(如下圖)是Multi-Master多主架構(gòu),客戶端訪問任意一個節(jié)點都能得到相同的結(jié)果。clickhouse是一個大數(shù)據(jù)存儲數(shù)據(jù)庫,本身節(jié)點就有qps限制。其本身的熱點問題是比較明顯的,寫入不允許高并發(fā),讀取也有高并發(fā)限制。我們看下clickhouse這種多主架構(gòu)的一個請求的執(zhí)行流程,如下圖,client發(fā)起Request1請求發(fā)到節(jié)點Clickhouse A 這個請求會轉(zhuǎn)發(fā)到Request B,Request C,Request D,等B,C,D節(jié)點返回結(jié)果之后會給節(jié)點A,然后由節(jié)點返回總的數(shù)據(jù)給Client。

圖片

總結(jié)
圖片

1:關(guān)于熱點問題要從讀和寫的方面去考慮,實現(xiàn)讀或者寫的分散就是解決熱點問題的關(guān)鍵。

2:實現(xiàn)產(chǎn)品好的技術(shù)架構(gòu)設(shè)計,熱點問題是我們首要考慮的問題,架構(gòu)的了解對我們解決熱點問題是非常至關(guān)重要的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲欧美国产中文色妇| 国产情侣激情在线对白| 日韩av生活片一区二区三区| 亚洲av又爽又色又色| 色婷婷丁香激情五月天| 高清一区二区三区四区五区| 久久天堂夜夜一本婷婷| 亚洲一区二区三区四区性色av| 国产精品免费自拍视频| 日系韩系还是欧美久久| 国产精品色热综合在线| 中文字幕一二区在线观看| 日韩中文字幕视频在线高清版 | 欧美不卡高清一区二区三区| 国产三级视频不卡在线观看| 精品日韩视频在线观看| 婷婷伊人综合中文字幕| 少妇福利视频一区二区| 亚洲熟女一区二区三四区| 日韩欧美国产三级在线观看| 国产肥女老熟女激情视频一区| 国产精品免费福利在线| 黄色片国产一区二区三区| 又色又爽又无遮挡的视频| 精品日韩视频在线观看| 日韩精品一级片免费看| 91精品日本在线视频| 日韩成人动画在线观看| 亚洲综合激情另类专区老铁性| 国产一区二区三区精品免费| 国产精品免费无遮挡不卡视频| 99秋霞在线观看视频| 东京热男人的天堂社区| 丰满人妻一二三区av| 黄色片一区二区在线观看| 欧美91精品国产自产| 成人午夜爽爽爽免费视频| 亚洲中文字幕剧情在线播放| 丁香七月啪啪激情综合| 日本免费一级黄色录像| 日本加勒比系列在线播放|