分布式缓存服务 DCS-DCS使用建议:SDK使用规范

时间:2024-05-16 15:04:16

SDK使用规范

原则

原则说明

级别

备注

使用连接池和长连接

短连接性能差,推荐使用带有连接池的客户端。

建议

连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机宕机。请确保使用了正确的Redis客户端连接池配置。

客户端需要对可能的故障和慢请求做容错处理

由于Redis服务可能因网络波动或基础设置故障的影响,引发主备倒换,命令超时或慢请求等现象,需要在客户端内设计合理的容错重试机制。

建议

参考Redis客户端重试指南

合理设置重试时间和次数

合理设置容错处理的重试时间,根据业务要求设置,避免过短或者过长。

强烈建议

  • 如果超时重试时间设置的非常短(例如200毫秒以下),可能引发重试风暴,极易引发业务层雪崩。
  • 如果重试时间设置得较长或者重试次数设置得较大,则可能导致在主备倒换情况下业务恢复较慢。

避免使用Lettuce客户端

Lettuce客户端在默认配置下有一定性能优势,并且是spring的默认客户端,但是Jedis客户端在面对连接异常,网络抖动等场景下的异常处理和检测能力明显强于Lettuce,可靠性更强,建议使用Jedis。

建议

Lettuce存在几个方面的问题:

  • Lettuce默认未配置集群拓补刷新的配置,会导致Cluster集群在发生拓补信息变化(主备倒换,扩容缩容)时,无法识别新的节点信息,导致业务失败。可参考使用Lettuce连接Cluster集群实例时的扩容异常处理
  • Lettuce没有连接池校验的功能,无法检测连接池中的连接是否仍然有效,获取失效连接之后会导致业务失败。
support.huaweicloud.com/bestpractice-dcs/dcs-bp-191113001.html