当前位置:网站首页>千万级购物车系统缓存架构方案
千万级购物车系统缓存架构方案
2022-06-25 15:57:00 【华为云】
作者简介:小明的Java问道之路,某大型金融互联网公司后端研发高级工程师,擅长订单/交易领域的高安全/可用/并发/性能的架构设计与落地,专注于研究计算机底层与金融科技领域技术
如果此文还不错的话,还请关注、点赞、收藏三连支持一下博主
本文导读:本文主要介绍redis在千万级系统中设计架构方案,包括主架构设计、缓存一致性方案、大value处理方案和redis限流和故障恢复降级方案
缓存架构主架构图:
主架构中包括缓存集群、缓存限流、缓存大value处理、HotKey探测系统、redis故障恢复降级和redis-mysql数据同步
缓存一致性解决方案:
一、对于所有的DB操作都不去添加具体的删除缓存的操作,而是通过canal监听binlog的方式
二、待数据确认已提交到数据库后,通过监听的变化,解析出对应的数据后,过滤掉非增删改的
binlog
三、然后通过常量类配置的需要处理数据一致性的相关表以及关键字段和缓存前缀key,进行组装出需要进行删除的缓存key。并且通过mq的ack机制来保证缓存一定会被删除掉。
缓存限流解决方案:
防止redis崩溃之后,系统无法正常运转,所以我们需要做一个降级处理。
系统操作redis的所有方法一般都是通过RedisCache和Redislock两个类来处理的,所以我们通过AOP切面的方式,对这两个类中的所有方法做一个切面,如果在这里执行redis操作的时候,redis挂掉了,连接失败了,那么方法会抛异常,我们在切面处理方法上,捕捉异常,然后记录一下是redis挂掉还是网络暂时的波动
大Value处理方案:
一、搭建的redis集群
二、在canal中已经创建好了监听,存储到mysql中redis_large_key_log表的canal instance
三、在每天凌晨3点,会将Redis中的大key(value)数据,通过canal instance发送到 MQ
四、消费redis_large_key_log表的binlog数据,该数据包含Redis的大key(value)信息
五、将大value切分成多个key,返回时拼接组装
边栏推荐
- Flutter assembly
- 一个 TDD 示例
- White screen, how fouc is formed, and how to avoid it
- Alvaria宣布客户体验行业资深人士Jeff Cotten担任新首席执行官
- Day_ thirteen
- Function and implementation of closures
- Catheon gaming appointed mark Aubrey, former Asia Pacific head of Activision Blizzard, as CEO
- Dino: Detr with improved detecting anchor boxes for end to end object detection
- 10 Super VIM plug-ins, I can't put them down
- 20省市公布元宇宙路线图
猜你喜欢
Day_ 04
DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection翻译
cmd。。。。。。
Helsinki traffic safety improvement project deploys velodyne lidar Intelligent Infrastructure Solution
Educational administration system development (php+mysql)
Perfect shuffle problem
使用hbuilder X创建uniapp项目
GO语言-什么是临界资源安全问题?
Day_ ten
Read mysql45 lecture - index
随机推荐
XML usage and parsing of data storage and transmission files
The textfield is encapsulated by the flutter itself, which causes the data display to be disordered when the data in the list is updated.
MySQL_ JDBC
Precautions for function default parameters (formal parameter angle)
Generate post order traversal according to pre order traversal and mid order traversal
Error: homebrew core is a shallow clone
Principle analysis of ThreadLocal source code
Unity技术手册 - 生命周期旋转RotationOverLifetime-速度旋转RotationBySpeed-外力ExternalForces
Nsurlsession learning notes (III) download task
【 apprentissage automatique】 cas de prévision et d'analyse de l'examen d'entrée à l'Université basé sur des séries chronologiques multiples
This article will help you understand the common concepts, advantages and disadvantages of JWT
The first day of reading mysql45
File operation, serialization, recursive copy
[Third Party framework] retrofit2 (2) - add point configuration of network access framework
Blue Bridge Cup - practice system login
Perfect shuffle problem
IO stream
Flutter assembly
【蓝桥杯集训100题】scratch指令移动 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第14题
GO语言-锁操作