分布式缓存服务 DCS-使用Lettuce连接Cluster集群实例时,规格变更的异常处理:解决方案
解决方案
方案一(推荐方案):
开启Cluster集群自动刷新拓扑配置。
ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder() // 每隔time毫秒周期性刷新 .enablePeriodicRefresh(Duration.ofMillis(time)) // MOVED重定向, ASK重定向, 重连, 未知节点(since 5.1), 槽位不在当前所有分片中(since 5.2),当出现这五种情况时会触发自适应刷新 .enableAllAdaptiveRefreshTriggers() .build();
具体实现请参考Lettuce客户端连接Cluster集群实例。
Lettuce客户端连接Cluster集群实例,如果未开启拓扑刷新,规格变更后,需要重启客户端。
方案二:
关闭“验证集群节点成员资格开关”,关闭方式如下:
ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder() .validateClusterNodeMembership(false) .build();
原理:若validateClusterNodeMembership为true时,连接前检查当前连接地址是否在集群拓扑关系中(通过CLUSTER NODES获得),若不在则会出现上述异常问题。
关闭“验证集群节点成员资格开关”的影响:
- 缺少防止安全漏洞的检验;
- 若未开启集群自动刷新拓扑,当Cluster集群执行变更规格后,若分片数增加时,可能会产生MOVED重定向请求,这个重定向过程会增加集群的网络负担和单次请求耗时;若分片数因删除减少时,会出现无法连接已删除分片的异常情况。
- 数据缓存_数据高并发_数据高可用-华为云
- 数据库压力怎么办_Redis_分布式缓存-华为云
- 分布式缓存服务Redis优势_分布式缓存服务Redis_华为云
- 分布式缓存服务Redis版_什么是分布式缓存
- 分布式缓存Redis版本差异_分布式缓存Redis有哪些版本_分布式缓存-华为云
- 分布式缓存Redis企业版优势_分布式缓存Redis企业版特点
- 自建Redis成本高怎么办_中间件_华为云Redis-华为云
- 分布式缓存redis_分布式缓存技术_分布式缓存-华为云
- 分布式缓存服务Redis的安全能力_分布式缓存服务Redis的数据安全性
- 文档数据库服务DDS性能调优_MongoDB性能调优_华为云