如果淘宝双十一架构用. Net Core,如何“擒住”高并发、高可用、低延迟?
電商的秒殺和搶購,對(duì)我們來說,都不是一個(gè)陌生的東西。然而,從技術(shù)的角度來說,這對(duì)于Web系統(tǒng)是一個(gè)巨大的考驗(yàn)。當(dāng)一個(gè)Web系統(tǒng),在一秒鐘內(nèi)收到數(shù)以萬計(jì)甚至更多請(qǐng)求時(shí),系統(tǒng)的優(yōu)化和穩(wěn)定至關(guān)重要。
緩存技術(shù)是項(xiàng)目中最常見的一種應(yīng)用技術(shù)。然而,行業(yè)里很多朋友對(duì)緩存技術(shù)的了解與掌握,僅僅停留在掌握redis等緩存技術(shù)的基礎(chǔ)使用,最多了解一些集群相關(guān)的知識(shí),大部分人都可以對(duì)緩存技術(shù)掌握到這個(gè)程度。然而,僅僅對(duì)緩存相關(guān)的技術(shù)掌握到這種程度,無論是對(duì)于開發(fā)復(fù)雜的高并發(fā)系統(tǒng),或者是在往.NET高級(jí)工程師、.NET資深工程師、.NET架構(gòu)師這些高階的職位發(fā)展的過程中,都是完全不夠用的。技術(shù)成長出現(xiàn)瓶頸,在自己公司的項(xiàng)目中,沒有任何高并發(fā)與高可用的挑戰(zhàn)性項(xiàng)目,自己不知道如何成長,自己也不知道如何讓自己的技術(shù)更上一層樓。這成為了很多同學(xué)的職業(yè)發(fā)展的困惑。
一
高并發(fā)的處理指標(biāo)
高并發(fā)意味著大流量,需要運(yùn)用技術(shù)手段抵抗流量的沖擊,這些手段好比操作流量,能讓流量更平穩(wěn)地被系統(tǒng)所處理,帶給用戶更好的體驗(yàn)。我們常見的高并發(fā)場景有:淘寶的雙 11、春運(yùn)時(shí)的搶票、微博大 V 的熱點(diǎn)新聞等。
除了這些典型事情,每秒幾十萬請(qǐng)求的秒殺系統(tǒng)、每天千萬級(jí)的訂單系統(tǒng)、每天億級(jí)日活的信息流系統(tǒng)等,都可以歸為高并發(fā)。很顯然,上面談到的高并發(fā)場景,并發(fā)量各不相同,那到底多大并發(fā)才算高并發(fā)呢?
①不能只看數(shù)字,要看具體的業(yè)務(wù)場景。不能說 10W QPS 的秒殺是高并發(fā),而 1W QPS 的信息流就不是高并發(fā)。
信息流場景涉及復(fù)雜的推薦模型和各種人工策略,它的業(yè)務(wù)邏輯可能比秒殺場景復(fù)雜 10 倍不止。因此,不在同一個(gè)維度,沒有任何比較意義。
②業(yè)務(wù)都是從 0 到 1 做起來的,并發(fā)量和 QPS 只是參考指標(biāo),最重要的是:在業(yè)務(wù)量逐漸變成原來的 10 倍、100 倍的過程中,你是否用到了高并發(fā)的處理方法去演進(jìn)你的系統(tǒng)。
從架構(gòu)設(shè)計(jì)、編碼實(shí)現(xiàn)、甚至產(chǎn)品方案等維度去預(yù)防和解決高并發(fā)引起的問題?而不是一味的升級(jí)硬件、加機(jī)器做水平擴(kuò)展。
此外,各個(gè)高并發(fā)場景的業(yè)務(wù)特點(diǎn)完全不同:有讀多寫少的信息流場景、有讀多寫多的交易場景,那是否有通用的技術(shù)方案解決不同場景的高并發(fā)問題呢?
我覺得大的思路可以借鑒,別人的方案也可以參考,但是真正落地過程中,細(xì)節(jié)上還會(huì)有無數(shù)的坑。
另外,由于軟硬件環(huán)境、技術(shù)棧、以及產(chǎn)品邏輯都沒法做到完全一致,這些都會(huì)導(dǎo)致同樣的業(yè)務(wù)場景,就算用相同的技術(shù)方案也會(huì)面臨不同的問題,這些坑還得一個(gè)個(gè)趟。
一
如何提升系統(tǒng)的并發(fā)能力
互聯(lián)網(wǎng)分布式架構(gòu)設(shè)計(jì),提高系統(tǒng)并發(fā)能力的方式,方法論上主要有兩種:垂直擴(kuò)展(Scale Up)與水平擴(kuò)展(Scale Out)。
垂直擴(kuò)展:提升單機(jī)處理能力。垂直擴(kuò)展的方式又有兩種:
硬件方向,很好理解,花錢升級(jí)機(jī)器,更多核更高主頻更大存儲(chǔ)空間更多帶寬。
軟件方向,包括用各快的數(shù)據(jù)結(jié)構(gòu),改進(jìn)架構(gòu),應(yīng)用多線程、協(xié)程,以及上性能優(yōu)化各種手段,但這玩意兒天花板低,就像提升個(gè)人產(chǎn)出一樣,996、007、最多24 X 7。
水平擴(kuò)展:分布式集群
為了解決分布式系統(tǒng)的復(fù)雜性問題,一般會(huì)用到架構(gòu)分層和服務(wù)拆分,通過分層做隔離,通過微服務(wù)解耦。
這個(gè)理論上沒有上限,只要做好層次和服務(wù)劃分,加機(jī)器擴(kuò)容就能滿足需求,但實(shí)際上并非如此,一方面分布式會(huì)增加系統(tǒng)復(fù)雜性,另一方面集群規(guī)模上去之后,也會(huì)引入一堆AIOps、服務(wù)發(fā)現(xiàn)、服務(wù)治理的新問題。
因?yàn)榇怪毕虻南拗?#xff0c;所以,我們通常更關(guān)注水平擴(kuò)展,高并發(fā)系統(tǒng)的實(shí)施也主要圍繞水平方向展開。
一
.NET Core高可用/高并發(fā)實(shí)戰(zhàn)
很多人面試的時(shí)候被問到一個(gè)讓人特別手足無措的問題:你的系統(tǒng)如何支撐高并發(fā)?大多數(shù)同學(xué)被問到這個(gè)問題壓根兒沒什么思路去回答,不知道從什么地方說起,其實(shí)本質(zhì)就是沒經(jīng)歷過一些真正有高并發(fā)系統(tǒng)的錘煉罷了。
因?yàn)闆]有過相關(guān)的項(xiàng)目經(jīng)歷,所以就沒法從真實(shí)的自身體會(huì)和經(jīng)驗(yàn)中提煉出一套回答,然后系統(tǒng)地闡述出來自己復(fù)雜過的系統(tǒng)如何支撐高并發(fā)的。下面給大家準(zhǔn)備了為期3天的《.NET Core高可用/高并發(fā)實(shí)戰(zhàn)》專題訓(xùn)練營,10月21日至24日,晚上八點(diǎn)到九點(diǎn)半直播授課,掃碼免費(fèi)學(xué)習(xí),全網(wǎng)首發(fā),10天匠心打造,讓你三天搞定高可用/高并發(fā)實(shí)戰(zhàn)!
長按掃碼,入群學(xué)習(xí)
微信號(hào):estherzry
還有超級(jí)福利等你領(lǐng)取
課程安排
高可用利器——負(fù)載均衡與反向代理
1.1、upstream配置
1.2、負(fù)載均衡算法
1.3、失敗重試
1.4、監(jiān)控檢查
1.5、Http反向代理
高并發(fā)利器——多級(jí)緩存
2.1、多級(jí)緩存介紹
2.2、如何緩存數(shù)據(jù)
2.3、分布式緩存與應(yīng)用負(fù)載均衡
2.4、熱點(diǎn)數(shù)據(jù)與更新緩存
2.5、更新緩存與原子性
2.6、緩存崩潰與恢復(fù)
高并發(fā)利器——擴(kuò)容
3.1、單體應(yīng)用垂直擴(kuò)容
3.2、單體應(yīng)用水平擴(kuò)容
3.3、應(yīng)用拆分
3.4、數(shù)據(jù)庫拆分
3.5、數(shù)據(jù)庫分庫分表
一
超多資料,免費(fèi)領(lǐng)取
僅限前100名免費(fèi)領(lǐng)取!
送完恢復(fù)原價(jià)!
前端就業(yè)班全套視頻
掃碼免費(fèi)獲取上述資料
本資料僅限粉絲免費(fèi)領(lǐng)取
僅限100份,送完恢復(fù)原價(jià)!
總結(jié)
以上是生活随笔為你收集整理的如果淘宝双十一架构用. Net Core,如何“擒住”高并发、高可用、低延迟?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从CLR GC到CoreCLR GC看.
- 下一篇: 多重继承和菱形问题