自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

負(fù)載均衡續(xù):萬(wàn)億流量場(chǎng)景下的負(fù)載均衡實(shí)踐

開(kāi)發(fā) 架構(gòu)
上篇基本把負(fù)載均衡涉及到的基礎(chǔ)都羅列了,那么到了實(shí)際場(chǎng)景下,特別是萬(wàn)億流量場(chǎng)景下,真實(shí)的負(fù)載均衡方案又是怎么做的呢。本篇分別就淘寶雙11、春運(yùn)12306、微信紅包和抖音春晚紅包等場(chǎng)景在負(fù)載均衡方面的運(yùn)用進(jìn)行一些介紹和討論。

[[394760]]

在實(shí)際場(chǎng)景下,特別是萬(wàn)億流量場(chǎng)景下,真實(shí)的負(fù)載均衡方案又是怎么做的呢。

本篇分別就淘寶雙11、春運(yùn)12306、微信紅包和抖音春晚紅包等場(chǎng)景在負(fù)載均衡方面的運(yùn)用進(jìn)行一些介紹和討論。

阿里雙11流量下的負(fù)載均衡[1]

雙十一流量特點(diǎn)請(qǐng)求量巨大,脈沖式的。是對(duì)阿里生態(tài)鏈路上所有服務(wù)的考驗(yàn)對(duì)負(fù)載均衡器的要求:

  • 性能優(yōu)良:應(yīng)對(duì)雙11當(dāng)晚脈沖式的流量沖擊
  • 服務(wù)穩(wěn)定:可用性高,以應(yīng)對(duì)設(shè)備和網(wǎng)絡(luò)的抖動(dòng)
  • 業(yè)務(wù)無(wú)感:順滑的自身升級(jí)和容災(zāi)切換 

實(shí)現(xiàn)原理

1)優(yōu)良性能依賴(lài)DPDK

阿里的新一代負(fù)載均衡器是基于DPDK[3]

正是由于這些專(zhuān)門(mén)針對(duì)數(shù)據(jù)包的高性能支持,才得以實(shí)現(xiàn)性能優(yōu)良的負(fù)載均衡器來(lái)支撐多年雙11場(chǎng)景下的脈沖流量的壓力。

2)應(yīng)對(duì)ECMP重選導(dǎo)致的連接中斷

ECPM(Equal-CostMultipathRouting) 是一種最大限度利用最短路徑的等價(jià)多路徑路由算法。 

 

如上圖,SLB采用水平擴(kuò)展的集群部署,多臺(tái)服務(wù)器發(fā)布相同路由,在交換機(jī)處形成ECPM路由。以達(dá)到高可用的目的。,在連接沒(méi)有同步之前,遇到服務(wù)器硬件或網(wǎng)絡(luò)異常,會(huì)使該服務(wù)器不可用,ECPM重選路由,會(huì)使連接到達(dá)其他服務(wù)器,導(dǎo)致已有連接中斷,造成用戶(hù)訪問(wèn)異常。SLB使用了會(huì)話同步的機(jī)制來(lái)解決了升級(jí)與容災(zāi)場(chǎng)景下長(zhǎng)連接中斷的問(wèn)題。用組播技術(shù)解決會(huì)話同步機(jī)制中的機(jī)器上下線問(wèn)題。詳細(xì)解釋參見(jiàn)文獻(xiàn)[1]。 

鐵路12306的負(fù)載均衡[4]

12306大名鼎鼎,無(wú)需多介紹。其中很多的場(chǎng)景和技術(shù)都可以給我們做一些很好的參考。但只找到了16年發(fā)表的論文,沒(méi)有能了解到最新的架構(gòu)部署。

12306的業(yè)務(wù)難點(diǎn)

  • 動(dòng)態(tài)庫(kù)存,余票可以按站點(diǎn)拆分
  • 事務(wù)強(qiáng)一致,下單交易性質(zhì)
  • 多維度數(shù)據(jù)一致性,線上線下售票渠道
  • 流量洪峰,遇節(jié)假日有流量洪峰

這里對(duì)前幾個(gè)問(wèn)題就暫不討論,單說(shuō)負(fù)載均衡在應(yīng)對(duì)流量洪峰時(shí)的作用。

12306架構(gòu)的發(fā)展歷程如下: 

  

 

 

 

 

 

 

 

 

 

由上圖可以看到,第一次優(yōu)化之前,幾乎全鏈路服務(wù)都出現(xiàn)了性能瓶頸,因?yàn)椴l(fā)查詢(xún)導(dǎo)致查詢(xún)系統(tǒng)負(fù)載過(guò)高,用戶(hù)重試引發(fā)AS過(guò)載;AS阻塞導(dǎo)致響應(yīng)增加,引發(fā)WEB負(fù)載問(wèn)題,線上壓力導(dǎo)致整個(gè)票務(wù)系統(tǒng)異常,進(jìn)而影響了線下購(gòu)票渠道正常運(yùn)轉(zhuǎn),直至鏈路雪崩。

第一次優(yōu)化后,引入排隊(duì)系統(tǒng),不同車(chē)次使用不同隊(duì)列,已達(dá)到請(qǐng)求分流;且排隊(duì)系統(tǒng)采用了動(dòng)態(tài)流量控制,根據(jù)各鐵路局客票中心處理速度,進(jìn)行控速請(qǐng)求下發(fā);并進(jìn)行了客票網(wǎng)服務(wù)拆分,根據(jù)不同規(guī)則,使流量負(fù)載均衡。此次優(yōu)化讓12306順利度過(guò)了13年春運(yùn)。但隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)上訂票人數(shù)不斷增加,目前的架構(gòu)已經(jīng)達(dá)到了帶寬、性能、穩(wěn)定性的瓶頸。因此第二次優(yōu)化如下:

本篇重點(diǎn)還是看負(fù)載均衡在業(yè)務(wù)場(chǎng)景下的實(shí)際作用,因此,其他優(yōu)化點(diǎn)就不做討論了。正是因?yàn)槎嗑S度,多層次的負(fù)載均衡,才使得12306能夠承載更高的流量沖擊(如果哪些同學(xué)有12306最新的部署架構(gòu),希望能私信交流學(xué)習(xí)~)

微信紅包背后的負(fù)載均衡[5]

2017年正月,微信公布用戶(hù)在除夕當(dāng)天收發(fā)微信紅包的數(shù)量——142億個(gè),收發(fā)峰值已達(dá)到76萬(wàn)每秒。

百億紅包業(yè)務(wù)特點(diǎn):

  • 不同于普通電商場(chǎng)景,一個(gè)群紅包就相當(dāng)于一個(gè)秒殺活動(dòng),并發(fā)要求更高
  • 金融屬性,不允許數(shù)據(jù)出現(xiàn)一致性,安全級(jí)別要求更高。

那么微信的紅包方案是怎么設(shè)計(jì)的

垂直SET化,分而治之

如果采用普通的服務(wù)拆分和部署方式,由于需要鎖庫(kù)存來(lái)防止超發(fā),海量的鎖競(jìng)爭(zhēng)將對(duì)DB造成不可估量的壓力。及時(shí)是使用外部存儲(chǔ)的分布式鎖進(jìn)行前置壓力緩解,只是對(duì)壓力的轉(zhuǎn)移,而無(wú)法減少。

采用SET化部署的好處,就是同一個(gè)紅包只會(huì)被路由到同一個(gè)的SET內(nèi),相當(dāng)于對(duì)龐大的洪流,進(jìn)行了reduce似的細(xì)小拆分,不同的SET之間互不影響,極大的減少了不同SET之間的資源壓力。(其實(shí)和阿里的RGCzone單元化部署原理差不多)

server層請(qǐng)求排隊(duì)

產(chǎn)生并發(fā)搶鎖的原因,是因?yàn)榈竭_(dá)DB的請(qǐng)求可能是并發(fā),如果可以保證到達(dá)DB的請(qǐng)求穿行,那就不存在并發(fā)了。 

首先,通過(guò)IDhash確保同一紅包的請(qǐng)求被分配到同一臺(tái)Server,然后再進(jìn)行單機(jī)紅包排隊(duì),這樣,就可以保證同一紅包的請(qǐng)求順序的達(dá)到DB,從而減少DB搶鎖并發(fā)。

雙維度庫(kù)表設(shè)計(jì)

因?yàn)榧t包數(shù)量巨大,單表數(shù)據(jù)達(dá)到一定程度就會(huì)出現(xiàn)性能問(wèn)題;因此除了按紅包ID分庫(kù)分表,還按天進(jìn)行冷熱數(shù)據(jù)拆分,在保障數(shù)據(jù)可以?xún)?yōu)雅遷移的前提下,保證了當(dāng)天的DB性能。而在查詢(xún)時(shí),通過(guò)數(shù)據(jù)庫(kù)中間件,進(jìn)行庫(kù)表路由。

總結(jié)

從負(fù)載均衡的角度看紅包的架構(gòu)設(shè)計(jì),可以看到,整個(gè)架構(gòu)設(shè)計(jì)可以理解為使用了三層負(fù)載均衡,首先是入口層,將流量進(jìn)行set拆分,達(dá)到整體SET集群的負(fù)載均衡;然后是server層,對(duì)紅包ID進(jìn)行業(yè)務(wù)邏輯Hash ,ID穿行的同時(shí),達(dá)到server集群內(nèi)部的負(fù)載均衡;再有是DB層,通過(guò)雙維度庫(kù)表設(shè)計(jì),在保障DB性能的同時(shí)達(dá)到數(shù)據(jù)訪問(wèn)的負(fù)載均衡。 

抖音春晚紅包背后的負(fù)載均衡[6][7]

前幾部分分別從網(wǎng)絡(luò)層、架構(gòu)層、內(nèi)部設(shè)計(jì)等角度闡述了負(fù)載均衡的實(shí)際運(yùn)用。而這里會(huì)著重介紹下抖音架構(gòu)中涉及到的下一代微服務(wù)技術(shù)Service Mesh在負(fù)載均衡上的優(yōu)勢(shì)。

什么是Service Mesh[8]

為了解決端到端的字節(jié)碼通信問(wèn)題,TCP協(xié)議誕生,讓多機(jī)通信變得簡(jiǎn)單可靠;微服務(wù)時(shí)代,Service Mesh誕生,屏蔽了分布式系統(tǒng)的諸多復(fù)雜性,讓開(kāi)發(fā)者可以回歸業(yè)務(wù)。 

  

Service Mesh下Istio的負(fù)載均衡[9]

Istio 服務(wù)網(wǎng)格在邏輯上分為控制平面和數(shù)據(jù)平面兩部分。其中,數(shù)據(jù)平面由一組以Sidecar方式部署的智能代理(Envoy)組成,這些代理可以調(diào)節(jié)和控制微服務(wù)及Mixer之間所有的網(wǎng)絡(luò)通信。

Envoy 代理可以發(fā)出很多指標(biāo)和遙測(cè)數(shù)據(jù),這些遙測(cè)數(shù)據(jù)發(fā)送到何處,取決于 Envoy 的配置.

Envoy作為代理,在網(wǎng)絡(luò)體系中扮演著中介的角色,可以為網(wǎng)絡(luò)中的流量管理添加額外的功能,包括提供安全性、隱私保護(hù)或負(fù)載策略等。在服務(wù)間調(diào)用的場(chǎng)景中,代理可以為客戶(hù)端隱藏服務(wù)后端的拓?fù)浼?xì)節(jié),簡(jiǎn)化交互的復(fù)雜性,并保護(hù)后端服務(wù)不會(huì)過(guò)載。并能發(fā)現(xiàn)集群中的所有成員,然后通過(guò)主動(dòng)健康檢查來(lái)確定集群成員的健康狀態(tài),并根據(jù)健康狀態(tài),通過(guò)負(fù)載均衡策略決定將請(qǐng)求路由到哪個(gè)集群成員。

結(jié)束語(yǔ)

本篇從實(shí)踐的角度出發(fā),挑選了四個(gè)最典型的案例,分別從網(wǎng)絡(luò)層、架構(gòu)層、微服務(wù)發(fā)展等方面闡述了負(fù)載均衡的實(shí)際運(yùn)用,希望能對(duì)大家的工作和學(xué)醫(yī)有所幫助~ 

Reference

 

 

[1]

支撐雙十一的高性能負(fù)載均衡: http://www.aliyunhn.com/Home/Article/detail/id/1643.html

[2]

一文讀懂DPDK: https://cloud.tencent.com/developer/article/1198333

[3]

DPDK技術(shù)簡(jiǎn)介: https://www.jianshu.com/p/86af81a10195

[4]

12306互聯(lián)網(wǎng)售票系統(tǒng)的架構(gòu)優(yōu)化及演進(jìn): 鐵路計(jì)算機(jī)應(yīng)用期刊

[5]

百億級(jí)微信紅包系統(tǒng)設(shè)計(jì)方案: https://www.infoq.cn/article/2017hongbao-weixin

[6]

抖音春晚幕后: https://www.volcengine.cn/docs/6360/67383

[7]

抖音春晚紅包百億互動(dòng)量級(jí)背后: https://www.163.com/dy/article/G5N0AFOF0511FQO9.html

[8]

什么是Service Mesh: https://zhuanlan.zhihu.com/p/61901608

[9]

Service Mesh Istio架構(gòu)解析: https://developer.aliyun.com/article/759790

 

 

 

責(zé)任編輯:龐桂玉 來(lái)源: Coder的技術(shù)之路
相關(guān)推薦

2010-05-10 14:48:01

流量負(fù)載均衡

2019-10-25 09:28:12

算法設(shè)計(jì)操作系統(tǒng)

2017-07-03 08:08:25

負(fù)載均衡分類(lèi)

2024-11-11 16:29:54

負(fù)載均衡器系統(tǒng)

2010-04-23 11:05:16

流量負(fù)載均衡

2010-05-10 14:00:21

流量負(fù)載均衡

2010-04-26 10:41:13

多重連接負(fù)載均衡

2011-12-02 22:51:46

Nginx負(fù)載均衡

2018-11-07 10:12:37

2022-06-01 09:04:58

Kafka運(yùn)維副本遷移

2023-10-27 12:36:37

gRPCKubernetes

2018-12-03 08:31:40

負(fù)載均衡解密Web 服務(wù)器

2018-12-03 13:50:03

流量網(wǎng)絡(luò)負(fù)載均衡

2019-03-18 10:44:41

負(fù)載均衡DNSUDP

2022-12-27 07:42:12

2023-10-30 00:11:48

微服務(wù)負(fù)載均衡場(chǎng)景

2010-05-10 15:58:14

porxy負(fù)載均衡

2010-04-20 12:16:05

NAT負(fù)載均衡

2010-04-20 12:07:17

DNS負(fù)載均衡

2010-04-21 11:08:57

MySQL負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)