亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Redis集群方案

2020-10-28 21:27:33
字體:
來源:轉載
供稿:網友

前段時間搞了搞Redis集群,想用做推薦系統的線上存儲,說來挺有趣,這邊基礎架構不太完善,因此需要我們做推薦系統的自己來搭這個存儲環境,就自己折騰了折騰。公司所給機器的單機性能其實挺給力,已經可以滿足目前的業務需求,想做redis集群主要有以下幾點考慮:

    1、擴展性,scale-out,以后數據量變得很大之后,不至于推到重來,redis雖然可以開啟虛擬內存功能,單機也能提供超過物理內存上限的容量,但頻繁在內存和硬盤間swap頁會大大降低其性能,有點兒違背redis的設計初衷。

    2、redis是一個單線程io復用的結構,無法有效利用服務器的多核結構,如果能在一臺多核機器起多個redis進程,共同提供服務,效率會更高一些。

    3、主從,數據備份和容災。。

因此計劃做的redis集群希望可以實現以下功能:

    1、data sharding,支持數據切片。

    2、主從備份,主節點寫數據,主和從都提供讀請求服務,并且支持主從自動切換。

    3、讀請求做負載均衡。

    4、更好地,支持節點failover,數據自動遷移。

下面是前后經歷的一個過程:

【第一步】嘗試官方方案

   肯定想去查看一下redis的官方集群方案,但是很遺憾,官方對cluster的聲明如下:

Unfortunately Redis Cluster is currently not production ready, however you can get more information about it reading the specification or checking the partial implementation in the unstable branch of the Redis GitHub repositoriy.

Once Redis Cluster will be available, and if a Redis Cluster complaint client is available for your language, Redis Cluster will be the de facto standard for Redis partitioning.

Redis Cluster is a mix between query routing and client side partitioning.

  由于這邊想做生產環境部署,unstable branch目前還是不敢用,在官方目前的版本上做提前開發又沒有資源和時間,因此就放棄了。

【第二步】初步設想的方案

   舍棄了官方的方案后,就想能不能自己搭一個,當時初步的想法是:用lvs做讀請求的負載均衡,在客戶端代碼里自己寫一個一致性hash算法做數據切片,配置redis主從,并且配置keepalived做主從自動切換。這個方案應該可以施行的,但當時自己遇到一些細節方面的問題,就在stackoverflow上問了一下,問題如下:

Since the redis cluster is still a work in progress, I want to build a simplied one by myselfin the current stage. The system should support data sharding,load balance and master-slave backup. A preliminary plan is as follows:

  1. Master-slave: use multiple master-slave pairs in different locations to enhance the data security. Matsters are responsible for the write operation, while both masters and slaves can provide the read service. Datas are sent to all the masters during one write operation. Use Keepalived between the master and the slave to detect failures and switch master-slave automatically.

  2. Data sharding: write a consistant hash on the client side to support data sharding during write/read in case the memory is not enougth in single machine.

  3. Load balance: use LVS to redirect the read request to the corresponding server for the load balance.

My question is how to combine the LVS and the data sharding together?

For example, because of data sharding, all keys are splited and stored in server A,B and C without overlap. Considering the slave backup and other master-slave pairs, the system will contain 1(A,B,C), 2(A,B,C) , 3(A,B,C) and so on, where each one has three servers. How to configure the LVS to support the redirection in such a situation when a read request comes? Or is there other approachs in redis to achieve the same goal?

Thanks:)

有個網友給了兩個建議:

You can really close to what you need by using:

twemproxy shard data across multiple redis nodes (it also supports node ejection and connection pooling)

redis slave master/slave replication

redis sentinel to handle master failover

depending on your needs you probably need some script listening to fail overs (see sentinel docs) and clean things up when a master goes down

這位網友的兩個建議挺啟發的,我在看redis的官方doc的時候,對twemproxy有一些印象,但當時沒有太在意,至于后者用redis sentinel做master failover,redis sentinel也是一個redis正在開發中的模塊,我不太敢用。

另外,我舍棄自己的這個初步方案還有兩個原因:

1、自己在寫客戶端data sharding和均衡服務的時候,發現實際需要考慮的問題比開始想的要復雜一些,如果寫完,其實相當于將twemproxy的功能做了一遍,造輪子的事情還是少干。

2、功能做得有些冗余,一次讀請求要經過客戶端的sharding、然后還有經過lvs再到實際的服務器,不做優化的話,會增加不少延遲。

【第三步】最終的方案,如下圖所示

圖中畫的挺明白了,就不再多解釋了。

twemproxy是twitter開源的一個數據庫代理服務,可以用于memcached和redis的sharding,兼容二者的標準接口,但是對于redis的keys,dbsize等命令不支持,這個其實想一下也就明白了,這種pool內跨機做統計的命令proxy一般不會支持的。另外,twemproxy在自身與后臺redis之間使用pipeline發送命令,因此性能損失比較小。但是,twemproxy對于每一個客戶端連接開啟的mbuf有限,最大可以設置為64k,如果在客戶端代理層與twemproxy之間也使用pipeline,這個pipeline不能太深,而且不支持pipeline的原子性(transaction),其實,這個時候,相當于客戶端連接與redis數據庫之間存在兩層pipeline,分別是客戶端到twemproxy的pipeline,和twemproy到后臺redis服務器的pipeline,由于二者buffer深度不一致,因此不支持pipeline的transaction也就好理解了。。在引入了twemproxy,插入大規模數據的時候,有時候確實挺耗時,而且pipeline不保證原子性,丟數據時的恢復問題在客戶端需要進行額外關注。對于非transaction的pipeline總丟數據,或者對于數據量比較大的key一次性取數據失敗等問題,后來經查是twemproxy端timeou值設置過小,按照官方示例設置400ms,會在一次性操作大數據量的時候返回timeout失敗,這個數值需要慎重根據業務(具體的,就是客戶端單次命令操作的數據量)進行設置,一般2000ms差不多就夠用了(可以支持一次操作接近百萬的數據)。

上面的結構,將讀操作的負載均衡放到了客戶端代碼來做,寫操作控制也在客戶端層的代碼里,另外,對于twemproy單點、主從之間可以引入keepalived來消除單點和故障恢復。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品男人的天堂| 午夜精品理论片| 91午夜理伦私人影院| 成人性生交大片免费看视频直播| 91精品国产精品| 欧美www视频在线观看| 最近2019年中文视频免费在线观看| 麻豆精品精华液| 欧美乱妇高清无乱码| 欧美电影免费观看电视剧大全| 国产97色在线|日韩| 欧美在线视频网站| 欧美午夜精品久久久久久浪潮| 国内伊人久久久久久网站视频| 欧美大片在线看| 国产成人亚洲综合| 久久精品国产成人精品| 亚洲国产精品成人va在线观看| 日韩不卡中文字幕| 92裸体在线视频网站| 久久精品青青大伊人av| 欧美成人高清视频| 亚洲欧美制服第一页| 久久91亚洲精品中文字幕| 8050国产精品久久久久久| 久久久久久久国产精品视频| 亚洲网址你懂得| 欧美精品成人在线| 久久久电影免费观看完整版| 日韩一区二区在线视频| 久久中文字幕在线| 疯狂做受xxxx高潮欧美日本| 国产精品91免费在线| 日韩亚洲欧美中文在线| 久久精品国产欧美亚洲人人爽| 日韩一区二区av| 国产亚洲美女精品久久久| 日本久久91av| 亚洲精品ady| 亚洲第一区在线观看| 久久影视电视剧免费网站清宫辞电视| 亚洲精品影视在线观看| 日韩成人在线观看| 久久久久久亚洲精品不卡| 国产精品日日做人人爱| 日韩禁在线播放| 性欧美在线看片a免费观看| 国产一区二区三区高清在线观看| 在线免费观看羞羞视频一区二区| 欧美国产第一页| 亚洲视频在线视频| 久久91亚洲精品中文字幕奶水| 亚洲开心激情网| 亚洲护士老师的毛茸茸最新章节| 国产精品高精视频免费| 亚洲丝袜一区在线| 成人在线激情视频| 美女视频久久黄| 国产免费一区二区三区在线观看| 国产免费观看久久黄| 久久国产天堂福利天堂| 久久最新资源网| 亚洲国产精品人人爽夜夜爽| 日韩高清电影好看的电视剧电影| 久热在线中文字幕色999舞| 麻豆精品精华液| 欧美成人精品一区二区三区| 日韩亚洲成人av在线| www.美女亚洲精品| 国产精品电影久久久久电影网| 中文字幕av一区| 日韩在线免费av| 国产中文字幕91| 亚洲女人被黑人巨大进入al| 疯狂欧美牲乱大交777| 国产精品久久久久久婷婷天堂| 亚洲va国产va天堂va久久| 久久久成人精品视频| 亚洲色图25p| 精品中文字幕在线观看| 清纯唯美日韩制服另类| 国产亚洲欧洲高清一区| 国产福利视频一区| 日韩资源在线观看| 欧美日本中文字幕| 亚洲国产日韩欧美综合久久| 久久五月情影视| 久久免费视频在线| 8x海外华人永久免费日韩内陆视频| 亚洲色图在线观看| 国内精品久久久久伊人av| 欧美激情久久久| 日韩中文字幕网| 亚洲精品一区久久久久久| 亚洲国产高清福利视频| 国色天香2019中文字幕在线观看| 欧美综合激情网| 国产精品久久91| 亚洲丝袜一区在线| 久久青草精品视频免费观看| 亚洲国产精品电影在线观看| 热99精品只有里视频精品| 成人国产在线视频| 青青草国产精品一区二区| 国模精品一区二区三区色天香| 欧美亚洲另类激情另类| 国产精品一区二区av影院萌芽| 国产成人在线一区二区| 欧美国产视频日韩| 青青草原成人在线视频| 亚洲欧美在线免费观看| 日韩黄色高清视频| 精品无人区太爽高潮在线播放| 亚洲成人动漫在线播放| 久久人人97超碰精品888| 91高清免费视频| 在线精品视频视频中文字幕| 精品国产一区二区三区四区在线观看| 一区二区三区回区在观看免费视频| 国产91露脸中文字幕在线| 久久久久国产视频| 欧美综合第一页| 日韩在线视频线视频免费网站| 国产成人一区二| 性亚洲最疯狂xxxx高清| 国产精品扒开腿爽爽爽视频| 亚洲综合中文字幕68页| 国产精品亚洲网站| 亚洲国产精品久久久久久| 色妞一区二区三区| 91亚洲国产成人久久精品网站| 国产成人激情视频| 日本三级久久久| 国产美女91呻吟求| 久久av红桃一区二区小说| 久久99久国产精品黄毛片入口| 亚洲精品中文字幕有码专区| 久久久久久成人精品| 原创国产精品91| 日韩av中文字幕在线免费观看| 奇门遁甲1982国语版免费观看高清| 欧美做受高潮1| 亚洲二区中文字幕| 97精品在线观看| 中文日韩电影网站| 亚洲综合第一页| 欧美性做爰毛片| 一本色道久久88精品综合| 国产精品三级美女白浆呻吟| 国产精品福利在线观看| 欲色天天网综合久久| 欧美日韩第一页| 国产成人中文字幕| 国产有码在线一区二区视频| 中文字幕一区二区三区电影| 最近2019中文免费高清视频观看www99| 91麻豆国产精品| 91久久中文字幕| 欧美在线一区二区视频| 亚洲精品乱码久久久久久按摩观| 亚洲国产精品电影| 国产69久久精品成人| 亚洲国产欧美一区| 国产精品视频公开费视频|