為什么要使用反向代理?如果沒(méi)有反向代理,一臺(tái)Redis可能需要跟很多個(gè)客戶端連接:
看著是不是很慌?看沒(méi)關(guān)系,主要是連接需要消耗線程資源,沒(méi)有代理的話,Redis要將很大一部分的資源用在與客戶端建立連接上,redis的高可用和可擴(kuò)展無(wú)論是自帶的Redis Sentinel還是Redis Cluster都要求客戶端進(jìn)行額外的支持,而目前基本上沒(méi)有合適的客戶端能夠做這些事情,客戶端來(lái)做這些事情也并不合適,它會(huì)讓維護(hù)變得特別困難。 因此在客戶端和redis服務(wù)端之間加一層代理成了一種理想的方案,代理屏蔽后端Redis實(shí)現(xiàn)細(xì)節(jié)向客戶端提供redis服務(wù),可以完美的解決Redis的高可用和擴(kuò)展性問(wèn)題,同時(shí)代理的引入也使得Redis維護(hù)變得更加簡(jiǎn)單。 于是乎,有了代理: 如何使用代理?很簡(jiǎn)單,將請(qǐng)求連接到調(diào)度代理器上,由Proxy負(fù)責(zé)將請(qǐng)求轉(zhuǎn)發(fā)到后面的Redis服務(wù)實(shí)例,圖示:
又有了新的問(wèn)題,Proxy掛了可咋整? 所以Proxy又需要做集群,甚至前面可以加一層負(fù)載均衡,負(fù)載均衡嘛,單機(jī)也存在單點(diǎn)故障等問(wèn)題,一個(gè)Director肯定不行,搞不好又掛了,所以整一個(gè)主備,備機(jī)通過(guò)KeepAlived來(lái)檢測(cè)主LVS健康狀況,出了問(wèn)題頂上去。
Redis代理插件Redis代理插件有很多,這兒簡(jiǎn)單介紹幾款
代理詳細(xì)功能對(duì)比
簡(jiǎn)單來(lái)說(shuō),predixy既支持Redis Sentinel也支持Redis Cluster
|
|
|