1. 程式人生 > >Redis從入門到高可用,分散式實踐 四(Redis Cluster)

Redis從入門到高可用,分散式實踐 四(Redis Cluster)

Redis Cluster

呼喚叢集

  • redis最高可以達到10萬/s,如果業務需要100萬/s呢?
  • 單機器記憶體太小,無法滿足需求

資料分佈

這裡寫圖片描述
這裡寫圖片描述

  1. 順序分割槽的資料量不可確定性導致傾斜,不支援批量操作

這裡寫圖片描述

雜湊分佈

節點取餘分割槽 hash(key)%nodes

如果要增加分割槽,資料遷移量在80%左右
資料遷移第一次是無法從資料中取到的,資料庫需要進行回寫到新節點
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

一致性雜湊分割槽

比較適合節點多的情況
這裡寫圖片描述
這裡寫圖片描述

虛擬槽分割槽

共享訊息模式

這裡寫圖片描述
這裡寫圖片描述

搭建叢集

  1. 複製,高可用,切片
  2. 節點之間通過meet來相互通訊
  3. 給節點指派槽,這樣節點可以正常的讀寫
  4. 每個主節點有複製一個從節點
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述

安裝

  1. 原生命令安裝
    • 配置開啟節點
    • meet
    • 指派槽
    • 主從
    • cluster replicate node-id
  2. 官方工具安裝
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述

Ruby環境

  1. 下載,編譯,安裝Ruby
  2. 安裝rubygem redis
  3. 安裝redis-trib.rb
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述

叢集伸縮

伸縮原理

這裡寫圖片描述

擴容叢集

  1. 準備新節點
  2. 加入叢集
    - 作用
    - 為其遷移槽和資料實現擴容
    - 作為從節點負責故障轉移
  3. 遷移槽和資料
    這裡寫圖片描述

客戶端實現

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

第二種方式

優點:會做一個孤立節點的檢測

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

叢集擴容

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

pipeline

這裡寫圖片描述

收縮叢集

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

客戶端路由

這裡寫圖片描述

moved重定向

這裡寫圖片描述
這裡寫圖片描述
客戶端不會自己找到異常節點,需要自己寫邏輯
這裡寫圖片描述

ask重定向

這裡寫圖片描述

smart客戶端工作原理

這裡寫圖片描述

JedisCluster基本使用

這裡寫圖片描述
這裡寫圖片描述

整合spring

這裡寫圖片描述

多節點命令實現

這裡寫圖片描述

四種批量操作實現(mget,mset必須在一個槽)

這裡寫圖片描述
這裡寫圖片描述

故障轉移

故障發現

這裡寫圖片描述

故障恢復

這裡寫圖片描述

常見問題

這裡寫圖片描述
這裡寫圖片描述

叢集完整性

這裡寫圖片描述

頻寬消耗

這裡寫圖片描述

Pub/Sub廣播(釋出一條訊息,每個節點都會接收到,加重頻寬消耗)

這裡寫圖片描述

資料傾斜

分兩種,資料傾斜和請求傾斜
這裡寫圖片描述

讀寫分離

這裡寫圖片描述

資料遷移

這裡寫圖片描述
這裡寫圖片描述

叢集VS單機

這裡寫圖片描述

快取設計與優化(知識點)

這裡寫圖片描述

快取收益與成本

收益

這裡寫圖片描述

成本

這裡寫圖片描述

使用場景

這裡寫圖片描述

快取更新策略

這裡寫圖片描述

快取粒度控制

這裡寫圖片描述

快取穿透優化(大量請求不命中)

這裡寫圖片描述

無底洞問題

這裡寫圖片描述

熱地key重建優化

這裡寫圖片描述

Redis雲平臺cachecloud

Redis規模化運維

  • 釋出構建繁瑣,私搭亂建
  • 節點&機器運維成本
  • 監控報警初級

快速構建

機器部署

這裡寫圖片描述