作者:等不到的口琴
鏈接:www.cnblogs.com/Courage129/p/14351545.html
如果沒有反向代理,一臺Redis可能需要跟很多個客戶端連接:

看著是不是很慌?看沒關系,主要是連接需要消耗執行緒資源,沒有代理的話,Redis要將很大一部分的資源用在與客戶端建立連接上,redis的高可用和可擴展無論是自帶的Redis Sentinel還是Redis Cluster都要求客戶端進行額外的支持,而目前基本上沒有合適的客戶端能夠做這些事情,客戶端來做這些事情也并不合適,它會讓維護變得特別困難,
因此在客戶端和redis服務端之間加一層代理成了一種理想的方案,代理屏蔽后端Redis實作細節向客戶端提供redis服務,可以完美的解決Redis的高可用和擴展性問題,同時代理的引入也使得Redis維護變得更加簡單,
于是乎,有了代理:
如何使用代理?
很簡單,將請求連接到調度代理器上,由Proxy負責將請求轉發到后面的Redis服務實體,圖示:

又有了新的問題,Proxy掛了可咋整?
所以Proxy又需要做集群,甚至前面可以加一層負載均衡,負載均衡嘛,單機也存在單點故障等問題,一個Director肯定不行,搞不好又掛了,所以整一個主備,備機通過KeepAlived來檢測主LVS健康狀況,出了問題頂上去,

Redis代理插件
Redis代理插件有很多,這兒簡單介紹幾款
| predixy | 高性能全特征redis代理,支持Redis Sentinel和Redis Cluster |
|---|---|
| twemproxy | 快速、輕量級memcached和redis代理 |
| codis | redis集群代理解決方案 |
| redis-cerberus | Redis Cluster代理 |
代理詳細功能對比
| 特性 | predixy | twemproxy | codis | redis-cerberus |
|---|---|---|---|---|
| 高可用 | Redis Sentinel或Redis Cluster | 一致性哈希 | Redis Sentinel | Redis Cluster |
| 可擴展 | Key哈希分布或Redis Cluster | Key哈希分布 | Key哈希分布 | Redis Cluster |
| 開發語言 | C++ | C | GO | C++ |
| 多執行緒 | 是 | 否 | 是 | 是 |
| 事務 | Redis Sentinel模式單Redis組下支持 | 不支持 | 不支持 | 不支持 |
| BLPOP/BRPOP/BLPOPRPUSH | 支持 | 不支持 | 不支持 | 支持 |
| Pub/Sub | 支持 | 不支持 | 不支持 | 支持 |
| Script | 支持load | 不支持 | 不支持 | 不支持 |
| Scan | 支持 | 不支持 | 不支持 | 不支持 |
| Select DB | 支持 | 不支持 | 支持 | Redis Cluster只有一個DB |
| Auth | 支持定義多個密碼,給予不同讀寫及管理權限和Key訪問空間 | 不支持 | 同redis | 不支持 |
| 讀從節點 | 支持,可定義豐富規則讀指定的從節點 | 不支持 | 支持,簡單規則 | 支持,簡單規則 |
| 多機房支持 | 支持,可定義豐富規則調度流量 | 不支持 | 有限支持 | 有限支持 |
| 統計資訊 | 豐富 | 豐富 | 豐富 | 簡單 |
簡單來說,predixy既支持Redis Sentinel也支持Redis Cluster
- 后端為Redis Sentinel監控的一組Redis,功能完全等同于原始Redis
- 后端為Redis Sentinel監控的多組Redis,則有部分功能受限
- 后端為Redis Cluster,功能完全等同于Redis Cluster
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
2.勁爆!Java 協程要來了,,,
3.Spring Boot 2.x 教程,太全了!
4.20w 程式員紅包封面,快快領取,,,
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435329.html
標籤:Java
