脚本宝典收集整理的这篇文章主要介绍了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免费下载所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。