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