不同編程語言如何使用Cluster集群客戶端?
更新時間 2024-11-03 00:39:30
最近更新時間: 2024-11-03 00:39:30
分享文章
本文介紹不同編程語言使用Cluster集群客戶端
當前DCS Cluster集群對比Proxy集群的優勢和特性:
表1 Cluster集群與Proxy集群差異
| 對比項 | Cluster集群 | Proxy集群 |
|---|---|---|
| 原生兼容性 | 高 | 中 |
| 客戶端兼容性 | 中 | 高 |
| 性價比 | 高 | 中 |
| 時延 | 低時延 | 中等時延 |
| 性能 | 高 | 中 |
Cluster集群由于沒有代理層,在時延和性能方面具備一定的優勢;但是對于客戶端使用方面,由于Cluster集群使用開源的Redis Cluster協議,在客戶端的兼容性方面略差與Proxy集群。
推薦的Cluster集群客戶端:
表2 Cluster集群客戶端
| 客戶端語言 | 客戶端類型 |
|---|---|
| Java | Jedis |
| Java | Lettuce |
| PHP | php redis |
| Go | Go Redis |
| Python | redis-py-cluster |
| C | hiredis-vip |
| C++ | redis-plus-plus |
| Node.js | node-redisio-redis |
使用Cluster的Redis集群時建議配置合理的超時時間?
當客戶端使用Spring Boot與Lettuce方式連接Redis時,它需要與所有節點建立連接,包括備節點。因此,在集群備節點故障時可能會遇到客戶端連接問題,尤其是在未配置超時時可能導致分鐘級的超時阻塞。
在未配置 timeout 超時的情況下,模擬備節點故障時,可能會出現分鐘級的超時阻塞(Lettuce客戶端的老版本默認超時為120秒,新版本默認為60秒),這可能導致端到端業務訪問時間過長,最長達到默認超時時間。
建議:
為避免潛在的故障場景,建議在客戶端側添加合適的 timeout 配置,顯著縮短備節點的超時時間。用戶應根據業務允許的超時時間進行設置。例如,在一次HTTP端到端請求中,如果需要請求兩次Redis,而HTTP請求的最大超時時間為10秒,則建議將超時時間配置為5秒,以防止由于超時時間過長或未配置超時時間而導致的業務受損。這樣可以更好地應對集群備節點故障情況,提高系統的穩定性和性能。