Redis 低成本、高可用设计,Java面试宝典pdf免费下载

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Redis 低成本、高可用设计,Java面试宝典pdf免费下载脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

[](

)故障转移消息接收的3种方式


redis服务器一旦发送故障后,sentinel通过raft算法投票选举新master。故障转移过程可以通过sentinel的API获取/订阅接收事件消息。Redis 系列面试题和答案我都整理完了,关注公众号Java技栈回复:面试,可以免费获取哦。

[](

)脚本接收


//当故障转移期间,可以指定一个“通知”脚本用来告知系统管理员,当前集群的情况。

//脚本被允许执行的最大时间为60秒,如果超时,脚本将会被终止(KILL)


sentinel notification-script mymaster /VAR/redis/notify.sh 

//故障转移期之后,配置通知客户端的脚本.


sentinel client-reconfig-script mymaster /var/redis/notifyReconfig.sh 

[](

)客户端直接接收


Sentinel的故障转移消息通知使用的是redis发布订阅,就是说在故障转移期间所有产生的事件信息,都通过频道(channel)发布出去。

比如我们加台slave服务器,sentinel监听到后会发布加slave的消息到"+slave"频道上,客户端只需要订阅"+slave"频道即可接收到对应消息。

其消息格式如下:[实例类型] [事件服务器名称] [服务器ip] [服务器端口] @[master名称] [ip] [端口]


<instance-tyPE> <name> <ip> <port> @ <;master-name> <master-ip> <master-port> 

通知消息格式示例:


*          //订阅类型, *即订阅所有事件消息。

-sdown     //消息类型

slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381 

订阅消息示例:


using (RedisSentinel rs = new RedisSentinel(currentNode.Host, CurrentNode.Port))

{

    var redisPubSub = new RedisPubSub(node.Host, node.Port);

    redisPubSub.OnMessage += OnMessage;

    redisPubSub.OnSuccess += (msg) =>{};

    redisPubSub.OnUnSubscribe += (obj) =>{};

    redisPubSub.OnError = (exception) =>{ };

    redisPubSub.PSubscribe("*");

} 

[](

)服务间接接收


这种方式在第二种基础上扩展了一层,即应用端不直接订阅sentinel。单独做服务去干这件事情,然后应用端提供API供这个服务回调通知。

这样做的好处在于:

  • 减少应用端监听失败出错的可能性。

  • 应用端由主动方变成被动方,降低耦合。

  • 性能提高,轮询变回调。

  • 独立成服务可扩展性更高。

比如:

1:以后换掉sentinel,我们只需要动服务即可,应用端无需更改。

2:可以在服务内多增加一层守护线程去主动拉取redis状态,这样可确保即使sentinel不生效,也能及时察觉redis状态,并通知到应用端。当然这种情况很极端,因为sentinel配的也是多节点,同时挂的几率非常小。示例:应用端提供回调API,在这个API逻辑下去刷新内存中的Redis连接。


http://127.0.0.1/redis/notify.api 

独立服务监控到状况后,调用API通知应用端:

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

CodeChina开项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

Redis 低成本、高可用设计,Java面试宝典pdf免费下载

Redis 低成本、高可用设计,Java面试宝典pdf免费下载

由于内容太多,这里只截取部分的内容。

脚本宝典总结

以上是脚本宝典为你收集整理的Redis 低成本、高可用设计,Java面试宝典pdf免费下载全部内容,希望文章能够帮你解决Redis 低成本、高可用设计,Java面试宝典pdf免费下载所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。