999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Twemproxy的Redis集群解決方案的設計與實現(xiàn)

2016-05-23 03:33:46王心妍毛莉君西安培華學院陜西西安710125
電子測試 2016年6期

王心妍,毛莉君(西安培華學院,陜西西安,710125)

?

基于Twemproxy的Redis集群解決方案的設計與實現(xiàn)

王心妍,毛莉君
(西安培華學院,陜西西安,710125)

摘要:當傳統(tǒng)數(shù)據(jù)庫面臨大規(guī)模數(shù)據(jù)訪問時,磁盤I/O往往成為性能瓶頸,從而導致過高的響應延遲。本文基于Rdeis緩存技術,構建一個分布式緩存系統(tǒng),為應用系統(tǒng)提供高可用性,高性能、高可靠性的分布式緩存系統(tǒng)。

關鍵詞:Redis集群;Twemproxy;Redis Cluster

本文系陜西省教育廳2015年專項科研計劃項目“基于Android平臺的電商微信服務系統(tǒng)的開發(fā)”(項目編號:15JK2094)的研究成果。

0 引言

隨著移動4G的飛速發(fā)展,越來越多的人參與網(wǎng)絡應用,在服務器面臨海量請求壓力的同時,用戶對請求響應時間則提出了更高的要求,傳統(tǒng)磁盤持久化數(shù)據(jù)庫根本無法應對這樣的需求,內(nèi)存數(shù)據(jù)庫則應運而生。

Redis是內(nèi)存數(shù)據(jù)庫中的佼佼者,是基于內(nèi)存的開源的高性能Key/Value數(shù)據(jù)庫,不僅支持多種數(shù)據(jù)結構和主從復制,還支持數(shù)據(jù)的持久化,即使服務器異常重啟也不會導致內(nèi)存數(shù)據(jù)的全部丟失。

原生的Redis是單進程單線程的,在處理超大數(shù)據(jù)請求時就造成其他請求的阻塞,而且如果單個Redis實例占用的容量過大,則會影響出現(xiàn)故障時服務的恢復速度以及平常的運行維護操作。因此僅僅使用單個Redis實例是無法滿足生產(chǎn)環(huán)境中的I/O操作、穩(wěn)定性、安全性、可靠性等方面的要求,所以我們需要考慮搭建一個穩(wěn)定、可靠、高性能的Redis分布式集群來滿足現(xiàn)實生產(chǎn)的需要,并滿足用戶對高一致性、可用性、分區(qū)容忍性的要求。

1 Redis集群解決方案

當單機Redis無法承受系統(tǒng)所產(chǎn)生的超量數(shù)據(jù)時,就需要依靠分布式的多機系統(tǒng)來解決。在對用戶透明的情況下,分布式系統(tǒng)為數(shù)據(jù)配置多個副本,當其中一臺或多臺機器宕機,卻不會丟失數(shù)據(jù)或者影響用戶的訪問,其可靠性安全性遠遠高于單機,當然對于高并發(fā)請求的處理也完勝單機系統(tǒng)。

目前各大互聯(lián)網(wǎng)公司為解決Redis單機承載能力不足的問題,自主研發(fā)并實現(xiàn)了自己的Redis分布式集群化方案。在這些非官方集群解決方案中,物理上把數(shù)據(jù)“分片”(sharding)存儲在多個Redis實例中,一般情況下,每一“片”就是一個Redis實例。目前Redis分布式集群方案主要有三種實現(xiàn)機制:客戶端分片、代理分片和Redis Cluster。

1.1 客戶端分片

客戶端分片(Pre-sharding)方案就是將分片工作放在業(yè)務的程序端,程序代碼根據(jù)預先設置的路由規(guī)則,直接對多個Redis實例進行分布式訪問。該方案集中在客戶端,在客戶端預先對 key 進行 hash 取模,然后選擇后端的 Redis實例,不依賴于第三方分布式中間件,要求開發(fā)者完全做自己的定制,實現(xiàn)方法和代碼都自己掌控,可以隨時調(diào)整,但是一旦遇到后端Redis分片變化時,則需要通知所有的客戶端來更新版本或修改配置,導致系統(tǒng)不容易控制。

因為少了一個中間分發(fā)環(huán)節(jié),這種靜態(tài)分片技術在性能上比代理式優(yōu)秀,但是其每一個Redis實例的增減,都得程序員手工調(diào)整分片程序來實現(xiàn),這就造成了其對研發(fā)人員超強的依賴性,需要有較強的程序開發(fā)能力做后盾。一旦公司的主力程序員離職,就可能會使新的負責人重新來定制,而且系統(tǒng)的升級相對也比較麻煩。所以這種方式下,系統(tǒng)的可運維性較差。出現(xiàn)故障,定位和解決都得研發(fā)和運維配合著解決,故障時間變長。基于此分片機制的開源產(chǎn)品,現(xiàn)在仍不多見。

1.2 代理分片

代理分片方案(Proxy)就是在Redis集群上添加一個代理層,將分片工作交給專門的代理程序來做。代理程序接收到來自業(yè)務程序的數(shù)據(jù)請求,根據(jù)路由規(guī)則,將這些請求分發(fā)給正確的Redis實例并返回給業(yè)務程序。在這種機制下,一般會選用第三方代理程序(而不是自己研發(fā)),因為后端有多個Redis實例,所以這類程序又稱為分布式中間件。這樣的好處是,業(yè)務程序不用關心后端Redis實例,運維起來也方便。雖然會因此帶來些性能損耗,但對于Redis這種內(nèi)存讀寫型應用,相對而言是能容忍的。

該方案應用最具代表性的就是Twitter的開源產(chǎn)品Twemproxy,其性能相當不錯,是目前應用范圍最廣、穩(wěn)定性最高、最久經(jīng)考驗的分布式中間件。Twemproxy作為代理,可接受來自多個客戶端程序的訪問,按照路由規(guī)則,轉發(fā)給后臺的各個Redis服務器,再原路返回,有效地解決了單個Redis實例承載能力的問題。當然,Twemproxy本身也是單點,需要用Keepalived做高可用方案。

該方案通過代理的方式減少了Redis服務器的連接數(shù),支持一致性Hash,通過配置的方式封禁失效的節(jié)點,運行多個 Proxy時,客戶端可以連接到首個可用的Proxy,支持請求的流式和批處理,可以降低請求的資源消耗,但是Twemproxy不支持自動的故障切換。

1.3 Redis Cluster

Redis Cluster和代理模式最大的不同之處在于沒有中心節(jié)點。Redis Cluster將所有Key映射到16384個Slot中,集群中每個Redis實例負責一部分,業(yè)務程序通過集成的Redis Cluster客戶端進行操作。客戶端可以向任一實例發(fā)出請求,如果所需數(shù)據(jù)不在該實例中,則該實例引導客戶端自動去對應實例讀寫數(shù)據(jù),因此Redis進程既負責讀寫數(shù)據(jù)又負責集群交互,致使其嚴格依賴客戶端driver的成熟度。而且Redis Cluster的節(jié)點名稱、IP、端口、狀態(tài)、角色等的管理,都是通過節(jié)點之間兩兩通訊,定期交換并更新,集群建立以及運行中新增結點時,都要通過手動執(zhí)行meet命令或redis-trib.rb腳本添加到集群中,缺少結點的自動發(fā)現(xiàn)和自動Resharding功能。雖說它比代理分片少了中間件,理論上會更高效,但其是否完全適合現(xiàn)實的生產(chǎn)環(huán)境,還需要實踐慢慢驗證。因此,本文主提出基于twemproxy搭建高可用的Redis集群解決方案。

2 基于twemproxy的Redis集群解決方案

Twemproxy是由Twitter開發(fā)的開源Redis集群解決方案,其性能不錯,也很適合現(xiàn)實的生產(chǎn)應用,但它不支持自動的故障切換。本方案對原生的Twemproxy方案進行了改進,其結構圖如下:

客戶端通過虛擬IP訪問Redis,只需要用keepalived的虛擬IP地址和端口而不需要修改RedisClient代碼。keepalived提供VIP漂移,避免Twemproxy的單點故障 ,減少與Redis的直接連接數(shù),支持失敗節(jié)點自動刪除。keeypalived集群保證一個掛機,其他的可以繼續(xù)服務,其中每個keepalive又連接多個Twemproxy(默認是連接主Twemproxy, 主代理掛機了,會去連接從Twemproxy)。Twemproxy的每個節(jié)點都連接Redis的主服務,Redis的主從服務器,一般分開機器存儲,保證機器故障而數(shù)據(jù)不丟失。Sentinel起到一個監(jiān)控的作用,一旦發(fā)現(xiàn)主Redis掛機了,就會自動切換將從Redis變?yōu)橹鱎edis,以實現(xiàn)Redis的高可用性。Twemproxy_agent的作用是:如果sentinel發(fā)現(xiàn)變化,agent會去修改Twemproxy 的配置文件,然后重啟Temproxy服務。

該方案中平行部署多個代理層,客戶端可以自動選擇可用的一個,Redis集群對客戶端透明,每一個Redis劃分主、從服務器,并交叉分開存儲以確保數(shù)據(jù)的安全,支持狀態(tài)監(jiān)控,實現(xiàn)了高吞吐量。

參考文獻

[1]黃健宏. Redis設計與實現(xiàn)[M].北京:機械工業(yè)出版社,2014:1-300

[2]邱祝文.基于Redis的分布式緩存系統(tǒng)架構研究[J].網(wǎng)絡安全技術與應用,2014.10

Design and implementation of Redis cluster solution based on Twemproxy

Wang Xinyan,Mao Lijun
(Xi'an Peihua University,Xi'an,Shaanxi,710125)

Abstract:When the traditional database facing massive data access,disk I/O often become a performance bottleneck,resulting in high response delay.In this paper,Rdeis cache technology based on building a distributed cache system, provide high availability for application system,distributed caching system with high performance and high reliability.

Keywords:Redis Twemproxy;Redis Cluster cluster

主站蜘蛛池模板: 欧美一区二区啪啪| 亚洲一区二区三区在线视频| 欧美区国产区| 91探花在线观看国产最新| 国产在线观看99| 色哟哟国产精品| 国产一级无码不卡视频| 精品伊人久久久久7777人| 丁香五月婷婷激情基地| av午夜福利一片免费看| 尤物亚洲最大AV无码网站| 国产成人超碰无码| 日韩A∨精品日韩精品无码| 99人体免费视频| 亚洲日本一本dvd高清| 亚洲国产成人自拍| 国产成人禁片在线观看| 激情六月丁香婷婷四房播| 91系列在线观看| 亚洲专区一区二区在线观看| 中文字幕在线永久在线视频2020| 国产xx在线观看| 国产美女一级毛片| 欧美亚洲国产精品久久蜜芽| 精品少妇人妻无码久久| 国产成人亚洲欧美激情| 蜜芽国产尤物av尤物在线看| 色婷婷久久| 亚洲丝袜第一页| 欧美日韩在线观看一区二区三区| 国产呦精品一区二区三区网站| 激情午夜婷婷| 日本五区在线不卡精品| 91黄视频在线观看| 免费无码又爽又刺激高| 伦精品一区二区三区视频| 欧美一级夜夜爽www| 最新国产网站| 成人免费网站久久久| 久久婷婷五月综合97色| 天天爽免费视频| 成人在线亚洲| 日本AⅤ精品一区二区三区日| 国产一二三区视频| 欧美日韩理论| 国产不卡国语在线| 九九久久精品免费观看| 四虎亚洲国产成人久久精品| 国产美女免费| 日韩欧美在线观看| 成人免费黄色小视频| 免费人成黄页在线观看国产| 国产精品浪潮Av| 久久香蕉国产线看精品| 亚洲国产成人麻豆精品| 亚洲无码一区在线观看| 久久综合成人| 婷婷综合亚洲| 永久免费无码日韩视频| 精品人妻系列无码专区久久| 国产成人一区免费观看| 国产精品自在在线午夜区app| 色亚洲激情综合精品无码视频 | 免费啪啪网址| 亚洲成A人V欧美综合天堂| 久久国产精品影院| 欧美激情首页| 国产福利免费在线观看| 在线另类稀缺国产呦| 丁香婷婷在线视频| 午夜啪啪福利| 高清色本在线www| 播五月综合| 国产理论精品| 福利片91| 国产丰满大乳无码免费播放| 国产精女同一区二区三区久| 国禁国产you女视频网站| 精品国产一区91在线| 全色黄大色大片免费久久老太| 国精品91人妻无码一区二区三区| 九色综合伊人久久富二代|