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>

        核心接口隔離,要做哪些事情?

        共 1734字,需瀏覽 4分鐘

         ·

        2021-12-24 23:23

        點(diǎn)擊上方藍(lán)字“設(shè)為星標(biāo)”


        大家好,我是架構(gòu)擺渡人。這是實(shí)踐經(jīng)驗(yàn)系列的第五篇文章,這個(gè)系列會(huì)給大家分享很多在實(shí)際工作中有用的經(jīng)驗(yàn),如果有收獲,還請(qǐng)分享給更多的朋友。
        ?
        今天跟大家聊聊隔離這個(gè)話(huà)題,對(duì)于高流量的業(yè)務(wù)場(chǎng)景,以電商業(yè)務(wù)舉例,一定要做好核心接口的隔離,否則真的就是牽一發(fā)而動(dòng)全身。
        ?
        以前的工作中有遇到過(guò)因?yàn)橐粋€(gè)賣(mài)家的后臺(tái)查詢(xún),產(chǎn)生了慢SQL,導(dǎo)致單量直線(xiàn)下跌,用戶(hù)無(wú)法下單了,都是系統(tǒng)異常,超時(shí)報(bào)錯(cuò)。
        ?
        要解決好這些問(wèn)題,隔壁必須要做,雖然成本比較大,但是帶來(lái)的收益是你想象不到的穩(wěn)定。具體怎么做,有哪些步驟,各位看官請(qǐng)繼續(xù)閱讀下去。

        ?


        資源隔離



        首先需要做的就是將資源進(jìn)行隔離,這里的資源指的是數(shù)據(jù)庫(kù),緩存,MQ等程序依賴(lài)的資源。就像開(kāi)頭說(shuō)的慢SQL影響了整個(gè)服務(wù),問(wèn)題就在于數(shù)據(jù)庫(kù)沒(méi)做隔離。像電商這種場(chǎng)景,買(mǎi)家和賣(mài)家的庫(kù)要拆分出兩套,這樣賣(mài)家查詢(xún)即使產(chǎn)生慢SQL也不會(huì)影響買(mǎi)家這邊的下單操作,因?yàn)閿?shù)據(jù)庫(kù)是兩個(gè)不同的實(shí)例。

        ?

        ?

        ?

        緩存也是一樣的問(wèn)題,如果共用一個(gè)實(shí)例,當(dāng)Redis出現(xiàn)問(wèn)題,比如大Key導(dǎo)致帶寬滿(mǎn)了,其他的Redis操作都會(huì)阻塞,這樣就影響到了其他業(yè)務(wù)。


        BC端隔離



        資源隔離之后,我們的服務(wù)也要進(jìn)行隔離。將買(mǎi)家和賣(mài)家的業(yè)務(wù)獨(dú)立出兩個(gè)服務(wù),每個(gè)服務(wù)連自己的數(shù)據(jù)庫(kù)和緩存,互不影響。
        ?
        這樣隔離還有一個(gè)好處就是在后續(xù)做多活的時(shí)候,賣(mài)家場(chǎng)景是不需要做多活保障的,而買(mǎi)家場(chǎng)景是必須要做多活。所以在多活的時(shí)候只需要將買(mǎi)家的服務(wù)進(jìn)行多活改造和多機(jī)房部署即可。

        ?

        ?


        核心代碼隔離



        核心代碼隔離的就細(xì)粒度了,前面我們做了BC端隔離,將買(mǎi)家和賣(mài)家的業(yè)務(wù)進(jìn)行了隔離。但是還有個(gè)問(wèn)題是就算全部是買(mǎi)家的業(yè)務(wù),它也是分級(jí)別的,比如核心的下單,確認(rèn)訂單,訂單詳情,訂單列表就屬于P0級(jí)別,其他的就是P1,P2這種級(jí)別。
        ?
        如果一個(gè)P2級(jí)別的接口出了問(wèn)題,影響了P0的接口,那就相當(dāng)于隔離失效了,所以核心代碼一定要單獨(dú)提取出來(lái)作為獨(dú)立的服務(wù),這樣才能達(dá)到隔離的效果。
        ?
        還有個(gè)好處就是核心接口的訪問(wèn)量都是大于其他接口的,在大促的時(shí)候,擴(kuò)容只需要擴(kuò)核心接口的服務(wù),其他的不需要擴(kuò)容,對(duì)于成本來(lái)說(shuō)也是控制的比較好。

        ?

        ?


        部署隔離



        前面的步驟都完成后,必然會(huì)有一個(gè)選項(xiàng)就是部署隔離。因?yàn)槟惴?wù)都獨(dú)立出來(lái)了,部署肯定也是獨(dú)立的,一個(gè)服務(wù)一個(gè)容器或者一臺(tái)ECS。大家可能有疑惑了,不都是一個(gè)程序部署一臺(tái)服務(wù)器么?這個(gè)其實(shí)在很多小公司為了節(jié)約成本,或者說(shuō)流量不高的場(chǎng)景下,都會(huì)一臺(tái)服務(wù)器部署好幾個(gè)應(yīng)用,數(shù)據(jù)庫(kù)也有可能就是跟應(yīng)用在一個(gè)服務(wù)器上。
        ?
        隔離部署后,這樣某個(gè)服務(wù)出問(wèn)題,比如CPU 100%,其實(shí)不影響其他服務(wù),這就是獨(dú)立部署的好處。

        ?

        ?

        ?


        編碼思路隔離



        最后一點(diǎn)就是在編碼的過(guò)程中,我們一定要分清楚哪些是核心,哪些非核心。比如訂單列表的接口,需要顯示一個(gè)其他的什么信息,這個(gè)信息是其他服務(wù)提供的,正常的邏輯那就是對(duì)每個(gè)訂單進(jìn)行一次內(nèi)部RPC調(diào)用,組裝數(shù)據(jù)返回給客戶(hù)端。
        ?
        如果這個(gè)時(shí)候依賴(lài)的那個(gè)RPC不穩(wěn)定或者說(shuō)出問(wèn)題了,直接報(bào)錯(cuò)了,那么此時(shí)訂單列表就顯示不出來(lái)了。像這種場(chǎng)景,在編碼的時(shí)候就需要考慮這個(gè)外部依賴(lài)是否核心邏輯,是否能夠降級(jí)。
        ?
        如果非核心,需要進(jìn)行異常處理,或者增加降級(jí)開(kāi)關(guān),在大促的時(shí)候進(jìn)行關(guān)閉。這樣即使調(diào)用報(bào)錯(cuò)了,只是這部分信息不顯示而已,訂單列表還是可以顯示,這也是一種隔離方式,但是是在編碼層面提現(xiàn)的隔離。

        ?


        總結(jié)



        聊了這么多隔離,不知道大家在工作中有實(shí)現(xiàn)過(guò)哪些隔離呢?反正我是都經(jīng)歷過(guò)這些問(wèn)題,經(jīng)歷過(guò)共用數(shù)據(jù)庫(kù)導(dǎo)致的故障依賴(lài)問(wèn)題,后面一步步將應(yīng)用,資源,核心接口拆分獨(dú)立出去,穩(wěn)定性慢慢就上升了。沒(méi)有故障,哪來(lái)少年你的成長(zhǎng)。

        ?

        大家好,我是從古代穿越過(guò)來(lái)的美男子:架構(gòu)擺渡人。我將把我的武功秘籍全部傳授與你們,覺(jué)得有用請(qǐng)分享給身邊的朋友。來(lái)個(gè)三連吧,感謝各位!另外我還在B站錄制《真實(shí)訂單業(yè)務(wù),億級(jí)數(shù)據(jù)帶你實(shí)戰(zhàn)分庫(kù)分表》的實(shí)戰(zhàn)課程,記得去學(xué)習(xí)哦!


        瀏覽 47
        點(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>
            激情小说激情图片 | 国产伦理aaa | 可以免费看黄的网站 | 成人A片在线观看 | 黄片免费试看 | 国产人妻AV | 婷婷国产v亚洲v欧美久久 | 欧美一区二区三区久久久久久桃花 | 国产成人精品一区二区色戒 | 亚洲成人黄色网 |