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

Redis Proxy特性說明

云數據庫 Tair(兼容 Redis)集群架構和讀寫分離架構中,代理服務器(Proxy)承擔著路由轉發、負載均衡和故障轉移等職責,可以幫助您簡化客戶端的邏輯,同時支持多數據庫(DB)、緩存熱點數據等高級功能。通過了解Proxy的路由轉發規則和特定命令的處理方式,有助于您設計更高效的業務系統。

Proxy介紹

圖 1. 集群和讀寫分離架構圖集群和讀寫分離架構圖

代理服務器(Proxy)是Redis實例中的一個組件(單節點架構),不會占用數據分片的資源,通過多個Proxy節點實現負載均衡及故障轉移。

Proxy能力

說明

集群版使用模式轉換

Proxy能夠實現架構轉換,幫助您如同在使用標準架構一樣地使用集群架構。Proxy支持對DELEXISTSMGETMSETSDIFFUNLINK等命令進行跨Slot的多Key操作,更多信息請參見代理模式(Proxy)支持的命令列表

當標準架構無法支撐業務發展時,您無需修改代碼即可將標準架構的數據遷移至帶有Proxy的集群架構,大幅度降低業務改造成本。

負載均衡和路由轉發

Proxy與后端的數據分片建立長連接,負責請求負載均衡和路由轉發操作,關于轉發規則的介紹,請參見Proxy的路由轉發規則

管理只讀節點流量

Proxy會實時探測只讀節點的狀態,當出現下述情況時,Proxy會執行流量管控動作:

  • 只讀節點處于異常狀態:Proxy會降低該節點的服務權重,如果多次無法連接該節點,Proxy會停止該節點的服務(即不再將流量轉發至該節點),待該異常被修復后重新啟用該節點。

  • 只讀節點處于全量同步狀態:Proxy會暫時停止該節點的服務,直到該節點完成全量同步。

緩存熱點Key信息

開啟代理查詢緩存功能(Proxy Query Cache)后,Proxy會緩存熱點Key對應的請求和返回信息,當在有效時間內收到同樣的請求時直接返回結果至客戶端,無需和后端的數據分片交互,可更好地改善對熱點Key的發起大量讀請求導致的訪問傾斜。更多信息,請參見通過Proxy Query Cache優化熱點Key問題

說明

Tair內存型、持久內存型實例支持該功能。

支持多數據庫(DB)

集群模式下,原生Redis和Cluster client均不支持多數據庫(DB)功能,只使用默認的0號數據庫,也不支持SELECT命令。但您可以通過Proxy訪問集群實例,支持多數據庫(DB)功能,支持使用SELECT命令,集群版實例默認為256個DB。

說明

若您使用StackExchange.Redis客戶端,請使用StackExchange.Redis 2.7.20及以上版本,否則會產生報錯,更多信息請參見StackExchange.Redis升級公告

說明

由于Proxy的演進,Proxy的個數并不完全代表Proxy處理能力,阿里云會保證集群規格中Proxy的配比符合規格說明的要求。

Proxy的路由轉發規則

說明

關于各類命令的介紹,請參見Redis命令概覽

架構

轉發規則

說明

集群架構

基礎轉發規則

  • 對于操作單個Key的命令,Proxy會根據Key所屬的Slot(槽)將請求發送給所屬的數據分片。

  • 對于操作多個Key的命令,如果這些Key是儲存在不同的數據分片,Proxy會將命令拆分成多個命令分別發送給對應的分片。

特定命令轉發規則

  • 發布訂閱類命令

    對于PUBLISHSUBSCRIBE等發布訂閱命令,Proxy會根據channel name進行Hash計算,并分片至對應數據分片。

    說明

    您可以在控制臺的性能監控頁面選擇數據節點,然后將自定義監控項設置為Pub/Sub監控組,即可查看各數據分片(默認展示第一個數據分片)中發布與訂閱(Pub/Sub)相關命令的監控信息。具體操作,請參見查看性能監控

  • 阿里云自研的命令

    使用阿里云自研的命令(例如IINFOISCAN等)時,如果通過idx參數指定了數據分片ID,Proxy會將這些命令發送到指定的數據分片。更多信息,請參見阿里云自研的Proxy命令

讀寫分離架構

基礎轉發規則

  • 寫請求:Proxy將其直接轉發到主節點(Master)。

  • 讀請求:Proxy將讀請求平均分配到主節點和只讀節點,暫不支持自定義控制。例如擁有3個只讀節點的實例,主節點和3個只讀的讀權重均為25%。

    說明

    SLOWLOGDBSIZE也屬于讀命令。

特定命令轉發規則

  • SCAN類命令

    當您執行HSCANSSCANZSCAN命令時,Proxy會先計算Key所屬的Slot,并對主節點和所有只讀節點進行取模計算,將請求發送至對應節點。

  • 阿里云自研的命令

    使用阿里云自研的命令(例如RIINFORIMONITOR等)時,可通過ro_slave_idx參數指定該命令要轉發到的只讀節點,通過idx參數指定該命令要轉發到的數據分片。更多信息,請參見阿里云自研的Proxy命令

  • 其他命令

    Proxy會將事務命令(MULTIEXEC)、Lua腳本命令 (EVALEVALSHA)、SCANINFO、發布訂閱命令(PUBLISHSUBSCRIBE等)轉發至主節點。

連接數使用說明

通常情況下,Proxy通過與數據分片建立長連接來處理請求。當請求中包含以下命令時,Proxy會根據命令的處理需求在相應的數據分片上創建額外的連接,此時連接無法聚合,實例的最大連接數和每秒新建連接數都會受到數據節點單個分片的限制(單個分片的限制請參見具體的實例規格)。您需要合理使用下述命令,避免連接數超限。

說明

代理模式下,Redis社區版實例每個數據分片的連接數上限為10,000,Tair(企業版)實例每個數據分片的連接數上限為30,000。

  • 阻塞類命令:BRPOPBRPOPLPUSHBLPOPBZPOPMAXBZPOPMINBLMOVEBLMPOPBZMPOP

  • 事務類命令:MULTIEXECWATCH

  • MONITOR類命令:MONITORIMONITORRIMONITOR

  • 訂閱命令:SUBSCRIBEUNSUBSCRIBEPSUBSCRIBEPUNSUBSCRIBESSUBSCRIBESUNSUBSCRIBE

常見問題

  • Q:是否支持將只進行讀操作的Lua腳本轉發至只讀節點嗎?

    A:支持,但需要滿足以下條件。

    • 使用只讀賬號,更多信息請參見創建與管理賬號

    • 將實例的readonly_lua_route_ronode_enable參數的值設置為1,即僅包含讀操作的Lua腳本會被轉發到只讀副本處理。具體操作,請參見設置實例參數

  • Q:代理(Proxy)模式和直連模式有什么區別,推薦使用什么模式?

    A:推薦使用代理模式,介紹與區別如下:

    • 代理模式:客戶端的請求由代理節點轉發至數據分片,可享受代理節點帶來的負載均衡、讀寫分離、故障轉移、代理查詢緩存、長連接等特性能力。

    • 直連模式:可通過直連地址繞過代理,直接訪問后端的數據分片(類似連接原生Redis集群)。相比代理模式,直連模式節約了通過代理處理請求的時間,可以在一定程度上提高Redis服務的響應速度。

  • Q:如果后端的某個數據分片出現異常,對數據讀寫有什么影響?

    A:如果您的實例為集群版-單副本,由于僅具有主節點,無法保障數據可用性和服務連續性。推薦選擇集群版-雙副本,數據分片均采用主備高可用架構,當主節點發生故障后,系統會自動進行主備切換保證服務高可用。在某些極端場景下某個數據分片出現異常后,對數據的影響及優化方案如下。

    場景

    影響與優化方案

    圖 2. 多Key命令場景多Key命令場景

    • 影響:

      客戶端通過4個連接發送4個請求,當數據分片2處于異常狀態時,僅有請求1(GET Key1可正常讀取到數據),其他請求會訪問到數據分片2會返回超時。

    • 優化方案:

      • 降低多Key命令(例如MGET)的使用頻率,或降低一次請求中包含的Key的數量,避免因單個數據分片異常導致該請求全部返回失敗。

      • 降低事務類命令的使用頻率或降低事務大小,避免因某個子事務失敗導致整個事務失敗。

    圖 3. 單連接場景單連接場景

    • 影響:

      客戶端通過1個連接分別發送2個請求,當數據分片2處于異常狀態時,請求2(GET Key2)將返回超時,同時由于請求1(GET Key1)和請求2共用同一連接,導致請求1也無法正常返回。

    • 優化方案:

      • 避免或降低對pipeline的使用。

      • 避免使用單連接的客戶端,推薦使用連接池的客戶端,例如客戶端程序連接Redis(需設置合理的超時時間和連接池大小)。