redis集群高并发读取(redis多实例提高并发)

内容广告上

养成良好的阅读习惯,从注意力开始!

关于Java的更多信息,请私信我,发送:6。

00-1010(1)Redis单机的读写性能容易达到上万,但在线环境下不仅会部署一个裸节点,还会部署一个从节点作为具有sentinel的高可用节点。但备用的从节点不向外界提供服务器,在一定程度上浪费了资源。

(2)随着业务的不断发展,数据的查询qps(如商品信息缓存、配置信息等。)单个节点缓存的不断增加(写qps增加不多),超过10万或者几十万的时候,一个节点处理不了,所以我们需要增加几个redis从节点来分担这些查询的压力,也就是读写分离。

然而,常用的redis客户端jedis不支持读写分离的能力。

00-1010 (1)从配置中心获取主、从设备的连接信息,初始化一个写连接池,分别连接主设备和一组从设备读连接池;(2)对命令进行分类:执行write命令时,从主机的连接池中获取连接,然后执行。如果是读命令,从从机的连接池中取出连接。可能有多个从节点用于执行和负载平衡(加权、随机、轮询.等等)可以根据某些策略来执行,以从一个从节点的连接池中获得连接。

看起来是这样的:

00-1010.以前的实现在正常情况下是可能的。

但是:(1)如果师傅在手术过程中死亡了怎么办?如何自动故障转移?(2)如果流量突然增加,需要动态扩展一个或多个从节点,如何动态生效?

那么就无法从配置文件中获取主、从的ip端口,必须从redis ha=sentinel的组件中动态获取当前主、可用从列表的节点信息。

00-1010向哨兵发送命令,获取主从节点信息。

//获取当前masterName标识的当前主节点信息。gddhb可以监控多个mater ha,所以需要用masterName来区分。

SENTINEL按名称获取主地址主名称

//获取可用的从属列表信息

哨兵奴隶大师姓名

获得连接后,继续按照您开始的方式创建连接池。

00-1010初始化后,主节点和从节点在运行过程中仍可能发生变化,如(1)主节点故障和网络分区,sentinel将一个从节点升级为新的主节点,以及(2)增加从节点以应对突然的流量增加。

背景

sentinel在执行主切换、从改变等操作时,会将事件发布到对应的通道,我们可以基于这些事件感知对应的改变参考:https://redis.io/topics/sentinel#pubsub-messages.

00-1010当哨兵交换机主控故障转移时,它会向通道:交换机主控发送通知。我们在客户端订阅这个频道,收到事件后,我们可以重新初始化它。

00-1010当一个新的从节点加入时,sentinel将在它感应到时向channel:从节点发布一个事件。我们听完之后,重新获取从节点信息,重建从节点的连接池就足够了(这里不涉及主节点的变化)。

感谢阅读关注三联是最大的支持!

内容广告下