2021年7月2日星期五

redis客户端实现高可用读写分离

背景

(1) redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合 sentinel 再部署一个 slave作为高可用节点的;
但是standby的slave节点是不对外提供服务端的,一定程度上造成了浪费资源

(2) 当业务不断发展,原来单节点缓存的数据(如,商品信息缓存、配置信息等)的查询qps不断升高(写qps增长不多),突破十几万、几十万的的时候,此时一个节点就扛不住了,我们就需要增加几个redis slaves节点来分担这些查询的压力 也就是读写分离

但是,常用的 redis 客户端jedis并不支持读写分离能力

实现方式

(1) 从配置中心获取 master 和 slaves 的连接信息,分别初始化好一个连接master的写连接池和一组slave的读连接池
(2) 将命令进行分类:执行写命令则从 master的连接池取连接然后执行,如果是读命令则从slave的连接池中取出连接执行
可能有多个slave节点,可以按照一定的策略进行负载均衡(权重、随机、轮询...etc) 从其中一个 slave节点的连接池获取连接

大概长这样:
read-write-split

高可用版本

前面的实现方式正常情况下是可以的

但是:
(1) 如果运行期间 master挂了怎么办? 如何自动 failover 切换?
(2) 如果流量突增,需要动态扩容一个或多个 slave节点,如何动态生效?

那就不能从配置文件取master和slaves的 ip+port 了,得从redis ha的组件去动态获取 当前master 和可用slave列表的节点信息 => sentinel

1.初始化

向 sentinel 发送命令获取master和slaves的节点信息

SENTINEL get-master-addr-by-name <masterName> //获取当前masterName标识的当前master节点信息,哨兵可监控多个 mater ha,所以要用<masterName>区分SENTINEL slaves <masterName> //获取可用的slaves列表信息

初始化-获取连接
拿到连接后,继续用开头的方式去创建连接池就行了

2. 动态failover、扩容

初始化完毕后,在运行期间master节点,和slaves还是可能变化的, 如
(1) master故障、网络分区,sentinel 提升一个slave为新的master
(2) 新增slave节点应对突增流量

我们如何能不重启客户端的情况下,动态切换?

sentinel 在进行master切换、slave变更等操作的时候都会向对应的 channel 发布事件,我们可以基于这些事件感知到相应的变化
参考: https://redis.io/topics/sentinel#pubsub-messages

2.1 failover切换 master

当 sentinel 进行master failover切换的时候......

原文转载:http://www.shaoqun.com/a/842169.html

跨境电商:https://www.ikjzd.com/

一淘网比价平台:https://www.ikjzd.com/w/1698

parenthood:https://www.ikjzd.com/w/2497

拍拍网服装:https://www.ikjzd.com/w/2205


背景(1)redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合sentinel再部署一个slave作为高可用节点的;但是standby的slave节点是不对外提供服务端的,一定程度上造成了浪费资源(2)当业务不断发展,原来单节点缓存的数据(如,商品信息缓存、配置信息等)的查询qps不断升高(写qps增长不多),突破十几万、几十万的的时候,此时一个节点就扛不住了,
物流运费涨价?Wish 发补贴帮你应对:https://www.ikjzd.com/articles/113779
亚马逊卖家如何制作高转化率的图片?:https://www.ikjzd.com/articles/113782
为应对印尼进口商品课税事宜 Shopee正研拟相关措施:https://www.ikjzd.com/articles/113783
敦煌网2020年春节调整部分业务:产品审核正常进行:https://www.ikjzd.com/articles/113785
小东西就一次好不好 慢慢㖭就不疼了:http://lady.shaoqun.com/a/256937.html
边摸边吃奶边做的口述 公么的粗大满足了我:http://lady.shaoqun.com/m/a/248167.html
美女用手扒开自己下面 把她压在桌上进进出出:http://lady.shaoqun.com/m/a/247404.html
我和两个女领导玩双飞 我的一次双飞详细过程:http://lady.shaoqun.com/m/a/247299.html
亚马逊新手卖家:如何确定产品类目?:https://www.ikjzd.com/articles/146320
黄浦江游览(十六铺码头)在哪里,怎么走?:http://www.30bags.com/a/466644.html
黄浦江游览(十六铺码头)门票2021年7月价格:http://www.30bags.com/a/466645.html
全球税改 中国跨境电商如何"税"月静好?:https://www.ikjzd.com/articles/146317

没有评论:

发表评论