etcd和redis的區(qū)別 redis集群客戶端連接高可用問題?
redis集群客戶端連接高可用問題?基于以上,Redis集群方案顯得尤為重要。通常有3個途徑:官方Redis Cluster;通過Proxy分片;客戶端分片(Smart Client)。以上三種方案各
redis集群客戶端連接高可用問題?
基于以上,Redis集群方案顯得尤為重要。通常有3個途徑:官方Redis Cluster;通過Proxy分片;客戶端分片(Smart Client)。以上三種方案各有利弊。
Redis Cluster(官方):雖然正式版發(fā)布已經(jīng)有一年多的時間,但還缺乏最佳實踐;對協(xié)議進行了較大修改,導(dǎo)致主流客戶端也并非都已支持,部分支持的客戶端也沒有經(jīng)過大規(guī)模生產(chǎn)環(huán)境的驗證;無中心化設(shè)計使整個系統(tǒng)高度耦合,導(dǎo)致很難對業(yè)務(wù)進行無痛的升級。
如何搭建高可用Redis架構(gòu)?
1.要看你的業(yè)務(wù)復(fù)雜度來確定如何搭建。簡單的可以采用redis的master-slave構(gòu)架,實現(xiàn)簡單的讀高可用,寫入不是高可用。
2.可以采用對master采用keepalived監(jiān)控的方式,來實現(xiàn)master當機時的熱切換,redis本身也帶了一個master的熱備機制
3采用redis的cluster方案,實現(xiàn)負載分離與高可用的方式。(這個方案最少需要3臺機器,如果集群較小,配置較為方便。網(wǎng)上現(xiàn)在的攻略較多。)
用PHP編寫支持高并發(fā)的網(wǎng)站,需要做什么處理?
PHP語言開發(fā)高并發(fā)的網(wǎng)站,需要加緩存,復(fù)雜邏輯走消息隊列異步處理,mysql查詢必須走索引,還搞不定就加機器分流,mysql配置升高并且一主多從,使用codis集群,增加消息隊列的消費者,如果還搞不定就隨機拒絕請求,當然這是最后的退路。
緩存
緩存是避免業(yè)務(wù)查詢過多的請求mysql,導(dǎo)致業(yè)務(wù)不可用,根據(jù)場景來判斷是否需要使用codis集群,如果并發(fā)量沒有達到某個級別,16G的redis也可以,但是要避免redis在高并發(fā)下容易發(fā)生的緩存穿透,盡量做成高可用,并保證緩存實現(xiàn)的命中率。
消息隊列
這也是高并發(fā)情境下的殺手锏,削峰填谷,將耗時的業(yè)務(wù)邏輯直接以隊列的形式異步慢慢處理,防止請求過度積壓,導(dǎo)致的服務(wù)器不可用。
mysql優(yōu)化
有些場景下必須查詢mysql的,也應(yīng)該走索引,避免多表聯(lián)合查詢,甚至mysql的事務(wù)隔離級別都盡量的降低,或者直接去掉事務(wù),采用最終一致性的補償機制。升級mysql的配置,核心數(shù)和內(nèi)存的提升對查詢速度的優(yōu)化是顯而易見的,最好能一步到位的走一主多從,查詢路由到從服務(wù)器上。
隨機拒絕請求
這不是開玩笑,我們必須保證服務(wù)器可用,寧愿拒絕掉一些請求,也不能讓服務(wù)器大量請求阻塞,最終導(dǎo)致大家都用不了。
redis高可用實現(xiàn)原理?
redis的高可用主要有主從模式、哨兵模式、集群模式,具體這幾種模式的實現(xiàn)原理和演進思路可以參考:
【Redis高可用架構(gòu)演進 - 今日頭條】https://m.toutiao.com/is/eejkhKG/
詳解Codis是如何來管理redis分布式集群及涉及原理?
展開全部
IT培訓(xùn)>數(shù)據(jù)庫教程
細說分布式Redis架構(gòu)設(shè)計和踩過的那些坑
作者:課課家教育2015-12-14 10:15:25
摘要:本文章主要分成五個步驟內(nèi)容講解
Redis、RedisCluster和Codis
我們更愛一致性
Codis在生產(chǎn)環(huán)境中的使用的經(jīng)驗和坑們
對于分布式數(shù)據(jù)庫和分布式架構(gòu)的一些看法
Q & A環(huán)節(jié)。
Codis是一個分布式Redis解決方案,與官方的純P2P的模式不同,Codis采用的是Proxy-based的方案。今天我們介紹一下Codis及下一個大版本RebornDB的設(shè)計,同時會介紹一些Codis在實際應(yīng)用場景中的tips。最后拋磚引玉,會介紹一下我對分布式存儲的一些觀點和看法,望各位首席們雅正。
細說分布式Redis架構(gòu)設(shè)計和踩過的那些坑_redis 分布式_ redis 分布式鎖_分布式緩存redis
一、 Redis,RedisCluster和Codis
Redis:想必大家的架構(gòu)中,Redis已經(jīng)是一個必不可少的部件,豐富的數(shù)據(jù)結(jié)構(gòu)和超高的性能以及簡單的協(xié)議,讓Redis能夠很好的作為數(shù)據(jù)庫的上游緩存層。但是我們會比較擔(dān)心Redis的單點問題,單點Redis容量大小總受限于內(nèi)存,在業(yè)務(wù)對性能要求比較高的情況下,理想情況下我們希望所有的數(shù)據(jù)都能在內(nèi)存里面,不要打到數(shù)據(jù)庫上,所以很自然的就會尋求其他方案。 比如,SSD將內(nèi)存換成了磁盤,以換取更大的容量。更自然的想法是將Redis變成一個可以水平擴展的分布式緩存服務(wù),在Codis之前,業(yè)界只有Twemproxy,但是Twemproxy本身是一個靜態(tài)的分布式Redis方案,進行擴容/縮容時候?qū)\維要求非常高,而且很難做到平滑的擴縮容。Codis的目標其實就是盡量兼容Twemproxy的基礎(chǔ)上,加上數(shù)據(jù)遷移的功能以實現(xiàn)擴容和縮容,最終替換Twemproxy。從豌豆莢最后上線的結(jié)果來看,最后完全替換了Twem,大概2T左右的內(nèi)存集群。
Redis Cluster :與Codis同期發(fā)布正式版的官方cl