成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis集群方案怎么做?大牛給你介紹五種方案!

存儲 Redis
Redis數據量日益增大,而且使用的公司越來越多,不僅用于做緩存,同時趨向于存儲這塊,這樣必促使集群的發展,各個公司也在收集適合自己的集群方案,目前行業用的比較多的是下面幾種集群架構,大部分都是采用分片技術,解決單實例內存增大帶來的一系列問題。

Redis數據量日益增大,而且使用的公司越來越多,不僅用于做緩存,同時趨向于存儲這塊,這樣必促使集群的發展,各個公司也在收集適合自己的集群方案,目前行業用的比較多的是下面幾種集群架構,大部分都是采用分片技術,解決單實例內存增大帶來的一系列問題。

本篇文章簡單介紹五種方案:

  1. 官方cluster方案
  2. twemproxy代理方案
  3. 哨兵模式
  4. codis
  5. 客戶端分片

官方cluser方案

從redis 3.0版本開始支持redis-cluster集群,redis-cluster采用無中心結構,每個節點保存數據和整個集群狀態,每個節點都和其他節點連接。redis-cluster是一種服務端分片技術。

[[235777]]

redis-cluster架構圖

redis-cluster特點:

  1. 每個節點都和n-1個節點通信,這被稱為集群總線(cluster bus)。它們使用特殊的端口號,即對外服務端口號加10000。所以要維護好這個集群的每個節點信息,不然會導致整個集群不可用,其內部采用特殊的二進制協議優化傳輸速度和帶寬。
  2. redis-cluster把所有的物理節點映射到[0,16383]slot(槽)上,cluster負責維護node--slot--value。
  3. 集群預分好16384個桶,當需要在redis集群中插入數據時,根據CRC16(KEY) mod 16384的值,決定將一個key放到哪個桶中。
  4. 客戶端與redis節點直連,不需要連接集群所有的節點,連接集群中任何一個可用節點即可。
  5. redis-trib.rb腳本(rub語言)為集群的管理工具,比如自動添加節點,規劃槽位,遷移數據等一系列操作。

節點的fail是通過集群中超過半數的節點檢測失效時才生效。

整個cluster被看做是一個整體,客戶端可連接任意一個節點進行操作,當客戶端操作的key沒有分配在該節點上時,redis會返回轉向指令,指向正確的節點。

為了增加集群的可訪問性,官方推薦的方案是將node配置成主從結構,即一個master主節點,掛n個slave從節點。如果主節點失效,redis cluster會根據選舉算法從slave節點中選擇一個上升為master節點,整個集群繼續對外提供服務。

twemproxy代理方案

twemproxy代理架構圖:

https://github.com/twitter/twemproxy

Redis代理中間件twemproxy是一種利用中間件做分片的技術。twemproxy處于客戶端和服務器的中間,將客戶端發來的請求,進行一定的處理后(sharding),再轉發給后端真正的redis服務器。也就是說,客戶端不直接訪問redis服務器,而是通過twemproxy代理中間件間接訪問。降低了客戶端直連后端服務器的連接數量,并且支持服務器集群水平擴展。

twemproxy中間件的內部處理是無狀態的,它本身可以很輕松地集群,這樣可以避免單點壓力或故障。twemproxy又稱nutcracker,起源于推特系統中redis、memcached集群的輕量級代理。

從上面架構圖看到twemproxy是一個單點,很容易對其造成很大的壓力,所以通常會結合keepalived來實現twemproy的高可用。這時,通常只有一臺twemproxy在工作,另外一臺處于備機,當一臺掛掉以后,vip自動漂移,備機接替工作。關于keepalived的用法可自行網上查閱資料。

codis

codis是一個分布式的Redis解決方案,由豌豆莢開源,對于上層的應用來說,連接codis proxy和連接原生的redis server沒什么明顯的區別,上層應用可以像使用單機的redis一樣使用,codis底層會處理請求的轉發,不停機的數據遷移等工作,所有后邊的事情,對于前面的客戶端來說是透明的,可以簡單的認為后邊連接的是一個內存無限大的redis服務。

客戶端分片

分區的邏輯在客戶端實現,由客戶端自己選擇請求到哪個節點。方案可參考一致性哈希,這種方案通常適用于用戶對客戶端的行為有完全控制能力的場景。

哨兵模式

Sentinel哨兵

Sentinel(哨兵)是Redis的高可用性解決方案:由一個或多個Sentinel實例組成的Sentinel系統可以監視任意多個主服務器以及這些主服務器下的所有從服務器,并在被監視的主服務器進入下線狀態時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器。

例如:

在Server1掉線后:

升級Server2為新的主服務器:

Sentinel的工作方式

  1. 每個Sentinel以每秒鐘一次的頻率向它所知的Master、Slave以及其他Sentinel實例發送一個PING命令。
  2. 如果一個實例距離最后一次有效回復PING命令的時間超過down-after-milliseconds選項所指定的值,則這個實例會被Sentinel標記為主觀下線。
  3. 如果一個Master被標記為主觀下線,則正在監視這個Master的所有Sentinel要以每秒一次的頻率確認Master的確進入了主觀下線狀態。
  4. 當有足夠數量的Sentinel(大于等于配置文件指定的值)在指定的時間范圍內確認Master的確進入了主觀下線狀態,則Master會被標記為客觀下線。
  5. 在一般情況下,每個Sentinel會以每10秒一次的頻率向它所知的所有Master、Slave發送INFO命令。
  6. 當Master被Sentinel標記為客觀下線時,Sentinel向下線的Master的所有Slave發送INFO命令的頻率會從10秒一次改為每秒一次。
  7. 若沒有足夠數量的Sentinel同意Master已經下線,Master的客觀下線狀態就會被移除。若Master重新向Sentinel的PING命令返回有效值,Master的主觀下線狀態就會被移除。

總結:沒有最好的方案,只有最合適的方案。根據自己的需求選擇合適的方案才是王道!

責任編輯:武曉燕 來源: oldriver編程老司機
相關推薦

2024-08-27 08:29:49

2021-05-28 10:40:08

Redis數據庫集群化

2023-04-03 10:00:00

Redis分布式

2025-05-07 08:21:01

2020-11-24 10:13:02

Redis集群數據庫

2012-03-29 09:57:06

jQuery

2010-04-30 16:09:13

Oracle修改字段類

2025-04-14 00:00:00

數據庫分布式架構分布式鎖?

2014-12-17 09:27:41

開源PaaS

2025-06-06 08:28:56

2019-05-15 10:59:50

開發者技能工具

2021-04-29 19:07:33

Redis演進微服務

2020-08-07 12:11:58

青云QingCloud江蘇交控智慧交通

2018-05-04 07:36:35

醫療行業物聯網IoT

2025-01-09 08:36:05

2023-04-14 14:54:29

2025-06-09 01:22:00

2009-05-05 13:56:59

五舟intel四核

2010-08-02 14:08:03

ADSL分流

2010-03-26 18:41:51

Nginx 502錯誤
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区国模嫣然 | 一区二区三区视频 | 天天曰夜夜 | 日本一区二区三区免费观看 | 精品视频一区二区三区 | 精品中文视频 | 国产露脸对白88av | av永久免费 | 欧美成人精品一区二区男人看 | 久久网国产 | 99精品一区二区 | av免费网址| 久久精品无码一区二区三区 | 国产精品二区三区在线观看 | 91高清在线观看 | 欧美国产一区二区 | 在线中文字幕亚洲 | 欧美日韩不卡合集视频 | 亚洲综合无码一区二区 | 国产亚洲日本精品 | 在线中文字幕av | 中文天堂在线一区 | 在线观看亚洲专区 | 国产精品久久毛片av大全日韩 | 亚洲欧美日韩久久久 | 亚洲精品久久久久中文字幕欢迎你 | 成人在线视频免费观看 | 日日操日日干 | 天天综合网天天综合色 | 国产精品成av人在线视午夜片 | 久久香蕉网 | 国产欧美综合在线 | www.日日夜夜 | 黄色网址大全在线观看 | 精品久久香蕉国产线看观看亚洲 | 精品1区2区| 久久成人精品一区二区三区 | 欧美美女爱爱视频 | 久久久九九 | 一本大道久久a久久精二百 欧洲一区二区三区 | 五月婷婷丁香 |