国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術(shù)干貨  > 如何設(shè)計一個秒殺系統(tǒng)?

            如何設(shè)計一個秒殺系統(tǒng)?

            來源:千鋒教育
            發(fā)布人:wjy
            時間: 2022-09-23 16:13:56 1663920836

              秒殺特點及思路?

              短時間內(nèi),大量用戶涌入,集中讀和寫有限的庫存。

              盡量將請求攔截在系統(tǒng)上游(越上游越好);讀多寫少的多使用緩存(緩存抗讀壓力);

              從分層角度理解?

              層層攔截,將請求盡量攔截在系統(tǒng)上游,避免將鎖沖落到數(shù)據(jù)庫上。

            如何設(shè)計一個秒殺系統(tǒng)?

              第一層:客戶端優(yōu)化

              產(chǎn)品層面,用戶點擊“查詢”或者“購票”后,按鈕置灰,禁止用戶重復提交請求;JS層面,限制用戶在x秒之內(nèi)只能提交一次請求,比如微信搖一搖搶紅包?;究梢詳r截80%的請求。

              第二層:站點層面的請求攔截(nginx層,寫流控模塊)

              怎么防止程序員寫for循環(huán)調(diào)用,有去重依據(jù)么? IP? cookie-id? …想復雜了,這類業(yè)務都需要登錄,用uid即可。在站點層面,對uid進行請求計數(shù)和去重,甚至不需要統(tǒng)一存儲計數(shù),直接站點層內(nèi)存存儲(這樣計數(shù)會不準,但最簡單,比如guava本地緩存)。一個uid,5秒只準透過1個請求,這樣又能攔住99%的for循環(huán)請求。對于5s內(nèi)的無效請求,統(tǒng)一返回錯誤提示或錯誤頁面。

              這個方式攔住了寫for循環(huán)發(fā)HTTP請求的程序員,有些高端程序員(黑客)控制了10w個肉雞,手里有10w個uid,同時發(fā)請求(先不考慮實名制的問題,小米搶手機不需要實名制),這下怎么辦,站點層按照uid限流攔不住了。

              第三層:服務層攔截

              方案一:寫請求放到隊列中,每次只透有限的寫請求到數(shù)據(jù)層,如果成功了再放下一批,直到庫存不夠,隊列里的寫請求全部返回“已售完”。

              方案二:或采用漏斗機制,只放一倍的流量進來,多余的返回“已售完”,把寫壓力轉(zhuǎn)換成讀壓力。讀請求,用cache,redis單機可以抗10W QPS,用異步線程定時更新緩存里的庫存值。 、

              還有提示“模糊化”,比如火車余票查詢,票剩了58張,還是26張,你真的關(guān)注么,其實我們只關(guān)心有票和無票。

              第四層:數(shù)據(jù)庫層

              瀏覽器攔截了80%,站點層攔截了99.9%并做了頁面緩存,服務層又做了寫請求隊列與數(shù)據(jù)緩存,每次透到數(shù)據(jù)庫層的請求都是可控的。 db基本就沒什么壓力了,通過自身鎖機制來控制,避免出現(xiàn)超賣。

              從架構(gòu)角度理解?

              高性能

              動靜分離 秒殺過程中你是不需要刷新整個頁面的,只有時間在不停跳動。這是因為一般都會對大流量的秒殺系統(tǒng)做系統(tǒng)的靜態(tài)化改造,即數(shù)據(jù)意義上的動靜分離。動靜分離三步走:

              數(shù)據(jù)拆分;靜態(tài)緩存;數(shù)據(jù)整合。

              熱點優(yōu)化 數(shù)據(jù)的熱點優(yōu)化與動靜分離是不一樣的,熱點優(yōu)化是基于二八原則對數(shù)據(jù)進行了縱向拆分,以便進行針對性地處理。熱點識別和隔離不僅對“秒殺”這個場景有意義,對其他的高性能分布式系統(tǒng)也非常有參考價值。

              系統(tǒng)優(yōu)化

              減少序列化:減少 Java 中的序列化操作可以很好的提升系統(tǒng)性能。序列化大部分是在 RPC 階段發(fā)生,因此應該盡量減少 RPC 調(diào)用,一種可行的方案是將多個關(guān)聯(lián)性較強的應用進行 “合并部署”,從而減少不同應用之間的 RPC 調(diào)用(微服務設(shè)計規(guī)范)

              直接輸出流數(shù)據(jù):只要涉及字符串的I/O操作,無論是磁盤 I/O 還是網(wǎng)絡 I/O,都比較耗費 CPU 資源,因為字符需要轉(zhuǎn)換成字節(jié),而這個轉(zhuǎn)換又必須查表編碼。所以對于常用數(shù)據(jù),比如靜態(tài)字符串,推薦提前編碼成字節(jié)并緩存,具體到代碼層面就是通過 OutputStream() 類函數(shù)從而減少數(shù)據(jù)的編碼轉(zhuǎn)換;另外,熱點方法toString()不要直接調(diào)用ReflectionToString實現(xiàn),推薦直接硬編碼,并且只打印DO的基礎(chǔ)要素和核心要素

              裁剪日志異常堆棧:無論是外部系統(tǒng)異常還是應用本身異常,都會有堆棧打出,超大流量下,頻繁的輸出完整堆棧,只會加劇系統(tǒng)當前負載??梢酝ㄟ^日志配置文件控制異常堆棧輸出的深度

              去組件框架:極致優(yōu)化要求下,可以去掉一些組件框架,比如去掉傳統(tǒng)的 MVC 框架,直接使用 Servlet 處理請求。這樣可以繞過一大堆復雜且用處不大的處理邏輯,節(jié)省毫秒級的時間,當然,需要合理評估你對框架的依賴程度

              高可用

              流量削峰

              答題:答題目前已經(jīng)使用的非常普遍了,本質(zhì)是通過在入口層削減流量,從而讓系統(tǒng)更好地支撐瞬時峰值。MQ: 最為常見的削峰方案是使用消息隊列,通過把同步的直接調(diào)用轉(zhuǎn)換成異步的間接推送緩沖瞬時流量。過濾

              Plan B: 為了保證系統(tǒng)的高可用,必須設(shè)計一個 Plan B 方案來進行兜底

            tags:
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
            免費領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學 138****2860 剛剛成功領(lǐng)取
            王同學 131****2015 剛剛成功領(lǐng)取
            張同學 133****4652 剛剛成功領(lǐng)取
            李同學 135****8607 剛剛成功領(lǐng)取
            楊同學 132****5667 剛剛成功領(lǐng)取
            岳同學 134****6652 剛剛成功領(lǐng)取
            梁同學 157****2950 剛剛成功領(lǐng)取
            劉同學 189****1015 剛剛成功領(lǐng)取
            張同學 155****4678 剛剛成功領(lǐng)取
            鄒同學 139****2907 剛剛成功領(lǐng)取
            董同學 138****2867 剛剛成功領(lǐng)取
            周同學 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            大數(shù)據(jù)測試工程師需要具備哪些技能?

            一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

            2023-10-14 23:43:03
            為什么SpringBoot的 jar 可以直接運行?

            一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

            2023-10-14 23:01:49
            站群服務器是什么?

            站群服務器的含義與用途站群服務器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

            2023-10-14 22:46:12
            自編碼器是什么?

            一、自編碼器原理自編碼器的設(shè)計靈感源于神經(jīng)科學中關(guān)于感知系統(tǒng)的認知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

            2023-10-14 22:41:10
            什么是云網(wǎng)融合?

            一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計算與網(wǎng)絡技術(shù)相結(jié)合,實現(xiàn)資源的共享、業(yè)務的協(xié)同,將網(wǎng)絡與云端服務深度融合,提供更靈活、高效、安全的...詳情>>

            2023-10-14 22:31:47