课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在上文中给大家简单介绍了缓存功能在哪些情况下是不可用的,而今天我们就再来聊聊,高可用性的缓存功能开发都有哪些方法。
1、单点问题解决方案
单端口在资源申请阶段部署为多端口的(大于一个端口),同时每个端口至少部署为一主一从且分布在不同的节点上;通过此种部署方式,会有如下几个好处:
假设某个从节点服务不可用时,将读请求转移到主节点上可继续提供服务,当从节点恢复后再加入到集群中继续提供服务。
假设集群中某几个节点服务不可用时,此时坏的情况也只是影响部分用户的功能使用。
在多端口部署的基础上,在机房层面做到多机房灾备;此种缓存的做法是:假设一个缓存部署两份,而这两份缓存部署在不同的机房中,这样的话,即使其中一个机房发生极端情况,可以将流量切换到另外一个机房中,从而做到机房层面的高可用。
可以使用一致性hash算法,使用机器的ip或者域名做hash操作,分布在一个虚拟的环上,同样对于key也做相同的hash操作,当key得到一个hash值后,顺时针移动直到遇到一个节点,然后将key对应的value存储到该节点上;此种做法是节点动态上下线的时候只需要对部分key做rehash操作,但是此种方案的缺点是:节点动态上下线后,key经过rehash操作后导致各个节点数据分布不均,也就导致各个节点的服务承载的压力不均不可控。
2、缓存穿透/缓存击穿的解决方案
缓存击穿是由于热key失效导致的,所以一种方案是:可以根据业务场景,选择可以将热key直接全部缓存到缓存中并且永远不过期,通过此种方式来避免热key因为过期的问题导致缓存击穿;二种方案是:由于热key一般情况下并不是很多,所以我们可以考虑使用localCache,在系统启动时,预先将热点数据全部加载到内存中,只要服务器不发生宕机就可以一直正常提供服务。
3、缓存雪崩的解决方案
缓存雪崩是在某一时刻,缓存中数据大量集中过期导致缓存不可用,对于此种情况,一般是在缓存key设计时,对key增加一个一定时间范围内的随机时间戳,使得key过期分散开来,从而避免所有key同时过期的尴尬情况。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。