日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

實現(xiàn)多地容災(zāi)的會話管理

會話(session)管理是互聯(lián)網(wǎng)應(yīng)用的重要功能,當(dāng)業(yè)務(wù)在多地部署時,會話管理就有了就近訪問和多地容災(zāi)的需求,云數(shù)據(jù)庫 Tair(兼容 Redis)可以幫助業(yè)務(wù)實現(xiàn)高效的會話管理。

背景信息

隨著業(yè)務(wù)規(guī)模不斷擴大,應(yīng)用的使用者可能需要在不同的地域使用服務(wù),此時通常需要采用多地容災(zāi)架構(gòu)來部署應(yīng)用,這樣既可以實現(xiàn)就近服務(wù),從而提高用戶的訪問速度,又能在服務(wù)發(fā)生單地故障時,通過異地容災(zāi)快速恢復(fù)正常服務(wù),提高可用性和可靠性。

為了使用戶獲得較好的跨地域使用體驗,應(yīng)用的會話管理功能同樣需要具備多地容災(zāi)能力,以下兩個場景展示了具有多地容災(zāi)會話管理功能的應(yīng)用給用戶帶來的優(yōu)質(zhì)體驗。

  • 用戶場景一

    用戶A在上海注冊并登錄某應(yīng)用后,出差到了北京。因為該應(yīng)用的會話管理功能是異地容災(zāi)部署的,用戶A在北京嘗試使用其服務(wù)時,不需要重新登錄。

  • 用戶場景二

    上海用戶B最近經(jīng)常使用某應(yīng)用,感覺一直很穩(wěn)定。實際上,該應(yīng)用在上海地域的會話管理服務(wù)器曾在幾天前出現(xiàn)過一次故障,期間,應(yīng)用從北京地域的服務(wù)器獲取到了其會話信息,因此用戶B的使用體驗沒有受到影響。

下文基于一個案例對如何使用Tair實現(xiàn)多地容災(zāi)的會話管理進行了詳細說明。

業(yè)務(wù)案例

  • 需求

    • 因用戶遍布全國,部署應(yīng)用服務(wù)的地域需要間隔稍遠,盡量使全國各地用戶在訪問業(yè)務(wù)時都能獲得較理想的訪問速度。

    • 如果應(yīng)用服務(wù)發(fā)生單地故障,盡量不要影響用戶的會話,因此需要在多地間同步數(shù)據(jù),保持全局會話信息一致。

結(jié)合以上需求分析結(jié)果制定的業(yè)務(wù)方案如下:

  • 地域選擇

    選擇上海、北京、河源三個阿里云服務(wù)地域,分別覆蓋華東區(qū)域、華北區(qū)域和華南區(qū)域,這樣也能較好地兼顧其它區(qū)域。在這三個地域分別創(chuàng)建實例。

  • 數(shù)據(jù)同步

    在業(yè)務(wù)層實現(xiàn)地域間的數(shù)據(jù)同步,其優(yōu)勢如下:

    • 靈活性強,可以根據(jù)業(yè)務(wù)中數(shù)據(jù)的時效性決定采用同步還是異步的方式同步數(shù)據(jù)。

    • 在進行讀操作時,可以通過補償回寫機制避免額外的寫同步操作,詳情請參見下文的寫操作說明。

    具體實現(xiàn)方案請參見下方的寫操作和讀操作說明。

  • 寫操作

    當(dāng)用戶在某地創(chuàng)建會話時,應(yīng)用異步地將數(shù)據(jù)推送到其它兩個地域,架構(gòu)圖如下。

    會話容災(zāi)服務(wù)架構(gòu)1

  • 讀操作

    如果用戶獲取會話信息的請求因某種原因被發(fā)送到了異地的Tair實例,例如上海用戶的請求發(fā)送到了北京,則優(yōu)先從當(dāng)?shù)兀ū本┑?span id="ade7b45f82p5s" outputclass="productName" data-tag="ph" data-ref-searchable="yes" data-reuse-tag="productSimpleName" data-type="productSimpleName" data-product-code="kvstore" docid="3761080" data-source="reuse_library" class="ph productName">Tair實例讀取數(shù)據(jù)。如果在北京的Tair實例中沒有查詢到所請求的數(shù)據(jù),則返回源地域(上海)的Tair實例中讀取數(shù)據(jù),然后再將該數(shù)據(jù)寫回到北京的實例,架構(gòu)圖如下。

    會話容災(zāi)服務(wù)架構(gòu)2

  • 會話信息結(jié)構(gòu)

    為了區(qū)分用戶寫入會話的區(qū)域,sessionid生成后,應(yīng)用會替換其第一個字符。例如,從上海寫入的sessionid,其首字母會被替換為s,北京則為b,河源則為h。通過這種方法,應(yīng)用就能夠判斷會話源自于哪個地域。

    在sessionid的有效期內(nèi),如果上海(源地域)的用戶在北京發(fā)起了請求,應(yīng)用會將更新的數(shù)據(jù)同步地寫入用戶當(dāng)前所在地域(北京)和源地域(上海)的Tair實例,再異步寫入其它地域(河源)的Redis實例,以這樣的方式保證sessionid與其對應(yīng)信息的一致性。

案例總結(jié)

本文介紹的使用Tair實現(xiàn)多地容災(zāi)會話管理的方案,不依賴于Tair產(chǎn)品的異地數(shù)據(jù)同步功能,而是通過業(yè)務(wù)層實現(xiàn),具備更好的靈活性,可以滿足更多大規(guī)模應(yīng)用的服務(wù)需求。