1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        面試題解答:?高并發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        共 1377字,需瀏覽 3分鐘

         ·

        2020-10-08 12:38

        高并發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)


        在開(kāi)發(fā)高并發(fā)系統(tǒng)時(shí)有三把利器用來(lái)保護(hù)系統(tǒng):緩存、降級(jí)和限流。
        • 緩存:緩存比較好理解,在大型高并發(fā)系統(tǒng)中,如果沒(méi)有緩存數(shù)據(jù)庫(kù)將分分鐘被爆,系統(tǒng)也會(huì)瞬間癱瘓。使用緩存不單單能夠提升系統(tǒng)訪問(wèn)速度、提高并發(fā)訪問(wèn)量,也是保護(hù)數(shù)據(jù)庫(kù)、保護(hù)系統(tǒng)的有效方式。大型網(wǎng)站一般主要是“讀”,緩存的使用很容易被想到。在大型“寫(xiě)”系統(tǒng)中,緩存也常常扮演者非常重要的角色。比如累積一些數(shù)據(jù)批量寫(xiě)入,內(nèi)存里面的緩存隊(duì)列(生產(chǎn)消費(fèi)),以及HBase寫(xiě)數(shù)據(jù)的機(jī)制等等也都是通過(guò)緩存提升系統(tǒng)的吞吐量或者實(shí)現(xiàn)系統(tǒng)的保護(hù)措施。甚至消息中間件,你也可以認(rèn)為是一種分布式的數(shù)據(jù)緩存。
        • 降級(jí):服務(wù)降級(jí)是當(dāng)服務(wù)器壓力劇增的情況下,根據(jù)當(dāng)前業(yè)務(wù)情況及流量對(duì)一些服務(wù)和頁(yè)面有策略的降級(jí),以此釋放服務(wù)器資源以保證核心任務(wù)的正常運(yùn)行。降級(jí)往往會(huì)指定不同的級(jí)別,面臨不同的異常等級(jí)執(zhí)行不同的處理。根據(jù)服務(wù)方式:可以拒接服務(wù),可以延遲服務(wù),也有時(shí)候可以隨機(jī)服務(wù)。根據(jù)服務(wù)范圍:可以砍掉某個(gè)功能,也可以砍掉某些模塊??傊?wù)降級(jí)需要根據(jù)不同的業(yè)務(wù)需求采用不同的降級(jí)策略。主要的目的就是服務(wù)雖然有損但是總比沒(méi)有好。
        • 限流:限流可以認(rèn)為服務(wù)降級(jí)的一種,限流就是限制系統(tǒng)的輸入和輸出流量已達(dá)到保護(hù)系統(tǒng)的目的。一般來(lái)說(shuō)系統(tǒng)的吞吐量是可以被測(cè)算的,為了保證系統(tǒng)的穩(wěn)定運(yùn)行,一旦達(dá)到的需要限制的閾值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延遲處理,拒絕處理,或者部分拒絕處理等等。

        國(guó)慶節(jié),倒計(jì)時(shí),限量秒殺

        1核2G,1年62元,3年200元,國(guó)慶秒殺

        1核2G,1年62元,3年200元,國(guó)慶秒殺

        1核2G,1年62元,3年200元,國(guó)慶秒殺


        負(fù)載均衡算法:

        1. 輪詢
        2. 加權(quán)輪詢
        3. 隨機(jī)算法
        4. 一致性Hash
        常見(jiàn)的限流算法:

        常見(jiàn)的限流算法有計(jì)數(shù)器、漏桶和令牌桶算法。漏桶算法在分布式環(huán)境中消息中間件或者Redis都是可選的方案。發(fā)放令牌的頻率增加可以提升整體數(shù)據(jù)處理的速度,而通過(guò)每次獲取令牌的個(gè)數(shù)增加或者放慢令牌的發(fā)放速度和降低整體數(shù)據(jù)處理速度。而漏桶不行,因?yàn)樗牧鞒鏊俾适枪潭ǖ?,程序處理速度也是固定的?/span>
        秒殺并發(fā)情況下庫(kù)存為負(fù)數(shù)問(wèn)題
        1. for update顯示加鎖
        2. 把update語(yǔ)句寫(xiě)在前邊,先把數(shù)量-1,之后select出庫(kù)存如果>-1就commit,否則rollback。
        update products set quantity = quantity-1 WHERE id=3;
        select quantity from products WHERE id=3 for update;
        1. update語(yǔ)句在更新的同時(shí)加上一個(gè)條件
        quantity = select quantity from products WHERE id=3;
        update products set quantity = ($quantity-1) WHERE id=3 and queantity = $quantity;

        推薦閱讀


        程序員內(nèi)推群!北京!上海!廣州!深圳!杭州!鄭州!武漢!南京!西安

        瀏覽 52
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲第一色在线 | 内射视频网站 | 久久99偷拍视频 | 中国大乳女人的hdmove | 中国老太卖婬视频播放 | 美女尻屄视频 | 免费看一级欧美黄片 | A级片黄色 | 操你小骚逼| 激情综合网激情五月天 |