当前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秒,以防止由于超时时间过长或未配置超时时间而导致的业务受损。这样可以更好地应对集群备节点故障情况,提高系统的稳定性和性能。