集群模式下的消息一致性问题

集群模式下双缓存实践 - 简书

双缓存架构实践

在一些高并发场景下,不仅追求RT也寄希望于抗住超高的流量.比如像首页营销位、banner位、排行榜等,不仅用户点击量大,而且接口响应必须快,不然给用户有明显的延迟感.但是这些模块有一个共同的特点,一般只有在运营需要做活动的时候才会变更一下图片、顺序、用户标签等之类的基础信息.单纯的Db是很难扛住大流量的,redis作为高性能非关系型数据库虽然有良好的表现,但是网络IO瓶颈和带宽之类的问题无法解决.本文将设计一个双缓存的架构模型来解决首页底部金刚位动态展示的功能.

1. 技术选型

  springboot+rocketMq+redisCluster+caffeineCache

2. Caffeine

  Caffeine是新出现的一个高性能的Java缓存,在springcontext5.x之后不在支持Guava Cache,Caffeine采用了W-TinyLFU回收策略,集合了LRU和LFU的优点,提供了一个最佳的命中率,在效率上可以秒杀Guava Cache.

image.png

3. 为什么不用redis

  首先redis存储结构选型上只能是String或者Hash,其他结构都不适合随机删除.对于集群模式下的批量获取,在redis3.x即redis集群架构体系下,是没有mget这个命令的,再有这批量的id分布在不同的节点上,在高并发下网络IO会成为一个瓶颈.如果采用for循环get,性能会大打折扣.这里我们用本地缓存来解决这种可遇见未来的访问,还能很好的解决网络IO开销问题.

4. 集群模式下的消息一致性问题

   Caffeine是本地缓存,底层是基于ConCurrentHashMap.所以一旦需要更新本地缓存,是无法是同步其他节点消息.那解决办法有吗?答案当然是有的, 本文提供几种解决思路.
   1).Caffeine提供提供了定时刷新机制,但是很遗憾不太适合我这种场景,因为我们的广告位很少有变更,甚至几周变一次,我们无法精确评估其失效时机,失效太快会频繁更新ConCurrentHashMap
   2).基于redis做pub-sub,广播订阅机制(痛点就是消息发送即丢失)
   3).基于mQ的广播消费的模式去同步所有节点的信息

5. 消息同步架构

image.png

6. 查询架构模式



作者:他是人间惆怅客
链接:https://www.jianshu.com/p/faf3adab0857
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis集群模式和哨兵模式有以下几个区别: 1. 数据存储方式:在哨兵模式下,多个Redis服务器存储的是相同的数据,这样会比较浪费存储空间。而在集群模式下,Redis的数据是被分布式存储的,可以更好地利用存储资源。 2. 主从同步架构:哨兵模式主要是为Redis主从同步架构服务的。当主节点宕机时,哨兵会进行监控、通知和选举,以确保系统的高可用性。而集群模式则是将数据分布到多个节点上,实现了数据的分布式存储和负载均衡。 3. 故障转移机制:在哨兵模式中,故障转移时需要大部分的哨兵节点都同意才能进行,涉及到了分布式选举的问题。即使部分哨兵节点挂掉了,哨兵集群仍然可以正常工作,保证了高可用性。而在集群模式中,节点之间通过Gossip协议进行通信,使用Raft一致性算法来实现故障转移,保证了数据的一致性和高可用性。 总结来说,哨兵模式适用于主从同步架构下的高可用性需求,而集群模式适用于需要分布式存储和负载均衡的场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Redis 哨兵模式、集群模式](https://blog.csdn.net/weixin_43889841/article/details/117483197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值