电商总结(七)缓存系统

  前段时间,在和朋友讨论和研究缓存的使用,一直对缓存的使用搞的不太清楚,所以这次把和朋友讨论过缓存系统的设计的相关问题总结总结。

  对于一个电商系统,缓存是重要组成部分,提升系统性能的主要方式之一就是缓存。它可以挡掉大部分的数据库访问的冲击,如果没有它,系统很可能会因为数据库不可用导致整个系统崩溃。

  但是缓存带来了另外一些棘手的问题: 数据的一致性和实时性。

  例如,数据库中的数据状态已经改变,但是在页面上看到的仍然是缓存的旧值,直到缓冲时间失效之后,才能重新更新缓存。这个问题怎么解决?

  还有就是,缓存数据本身都是保持在内存中的,那么什么数据可以放缓存,什么数据不可以,这是系统设计之初必须考虑的问题。

  什么数据可以放缓存?

    1,不需要实时更新但是又极其消耗数据库的数据。比如网站首页的商品销售的排行榜,热搜商品等等,这些数据基本上都是一天统计一次,用户不会关注其是否是实时的。

    2,需要实时更新,但是更新频率不高的数据。比如一个用户的订单列表,他肯定希望能够实时看到自己下的订单,但是大部分用户不会频繁下单(炒信用之类的除外)。

    3,每次获取这些数据都经过复杂的处理逻辑,比如生成报表。

  什么数据不应该使用缓存?

    实际上,在电商系统中,大部分数据都是可以缓存的,不能使用缓存的数据很少。这类数据包括比如涉及到钱、密钥、业务关键性核心数据等。总之,如果你发现,系统里面的大部分数据都不能使用缓存,这说明架构本身出了问题。

  如何解决一致性和实时性的问题?

    保证一致性和实时性的办法就是:一旦数据库更新了,就必须把原来的缓存更新。

  说一说我们的缓存方案:

    我们目前的缓存系统:Redis(主从)+ RabbitMQ + 缓存清理服务组成,具体如下图:

    缓存清理作业订阅 RabbitMQ消息队列,一有数据更新进入队列,就将数据重新更新到Redis缓存服务器。

  

    当然,有些朋友的方案,是数据库更新完成之后,立马去更新相关缓存数据。这样就不需要MQ 和 缓存清理作业。不过,这同时也增加了系统的耦合性。具体得看自己的业务场景和平台大小。

时间: 2024-08-03 09:05:03

电商总结(七)缓存系统的相关文章

Java开源生鲜电商平台-OMS订单系统中并发问题和锁机制的探讨与解决方案(源码可下载)

Java开源生鲜电商平台-OMS订单系统中并发问题和锁机制的探讨与解决方案(源码可下载) 说明:Java开源生鲜电商中OMS订单系统中并发问题和锁机制的探讨与解决方案: 问题由来     假设在一个订单系统中(以火车票订单系统为例),用户A,用户B都要预定从成都到北京的火车票,A.B在不同的售票窗口均同时查询到了某车厢卧铺中.下铺位有空位.用户A正在犹豫订中铺还是下铺,这时用户B果断订购了下铺.当用户A决定订下铺时,系统提示下铺已经被预订,请重新选择铺位.在这个系统场景中,我们来探讨一下,火车票

39、生鲜电商平台-redis缓存在商品中的设计与架构

说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc),Redis的命令都是原子性的,你可以轻松地利用INCR,DECR等命令来计数. 商品维度计数(喜欢数,评论数,鉴定数,浏览数,etc)  采用Redis 的类型: Hash. 如果你对redis数据类型不太熟悉,可以参考 http://redis.io/topics/data-types-int

系统设计题:如何设计一个电商平台积分兑换系统!

1.拉开差距的一类面试题 现在面试经常会遇到一类问题,面试官让你现场设计出某个业务场景下的一个系统,这个系统往往在业务或者技术上有一定难度,主要考察的是你多年积淀下来的系统设计的能力以及技术思维的能力. 类似的这类系统设计题目很多,比如: 请你设计一个秒杀系统 请你设计一个支撑百万用户的IM消息系统 请你设计一个微信红包系统 请你设计一个电商平台积分兑换系统 这些题目本身都是开放式命题,没有固定答案.遇到这种问题,一定不要慌,关键是在现场要思路清楚,有理有据,慢慢分析. 本文就其中一个问题:设计

电商实时交易风控系统

1.课程名称 2.课程目标 1.了解电子商务交易的风险点 2.了解电子商务交易中风险点的处理策略 3.利用Storm技术开发基于规则判定的风控系统 4.掌握企业中风控系统的一般架构和业务流程 3.背景知识 3.1.信用卡的交易风险及常见策略 3.1.1.用户逾期风险控制 用户主动.被动对正常消费的金额产生逾期 通过滞纳金进行处理 3.1.2.虚假交易风险控制 3.1.2.1.配合商家进行虚假交易 通过中介公司.皮包公司,在该机构虚假下单,扣除一些的返点. 3.1.2.2.找朋友刷单刷卡 朋友较大

Java生鲜电商平台-生鲜售后系统的退款架构设计与代码分享

说明:任何一个电商行业都涉及到退货与退款的问题,但是生鲜电商行业还设有一个显著的特点,那就是换货.在人性面前,各种各样的退货,退款,换货的售后问题,层出不穷,那么应该如何架构与设计呢?请看下文. 由于涉及到的东西比较多,目前只讲退款的架构设计与代码分享. 退款,是一个易造成负体验的业务产品.原因是商户对于退款的要求务必退款成功.高效.快,而且又得很好地支撑业务,否则就容易招来吐槽. 退款,一个看似简单,但充满复杂性的产品. 要想做好退款系统,我们必须深入的了解业务发展趋势,将客户诉求与现状业务结

38、生鲜电商平台-会员积分系统的设计与架构

说明:互联网平台积分体系主要用于激励和回馈用户在平台的消费行为和活动行为,一个良好的积分体系可以很好的提升用户的粘性及活跃度. 一.互联网平台积分体系设计必要性 互联网平台积分体系是一个独立.完整的系统模块,主要用于激励和回馈用户在平台的消费行为和活动行为,通过积分体系可以激发与引导用户在平台的活跃行为,逐步形成用户对平台的依赖性和习惯性,提升用户对平台的黏度和重复下单率. 积分体系在保持系统独立性的同时,又与平台会员系统.商品系统.订单系统等具有紧密的关联性,积分体系的规划设计需与平台其他系统

电商平台日志分析系统(大数据)

分析针对{历史数据,每天的增量数据} 站长工具 seo 优化, pageRank http://seo.chinaz.com/www.taobao.com PV (page view ) UV(user view) 页面访问量,用户访问量 一针对增量数据进行分析. 设定淘宝300G/每天: 唯品会访问量为17G 建立数据表时预留两个字段,同样程序功能也预留一个模块. 一般 有指标和维度 . 埋点 : 向后端大数据平台报告请求. 原文地址:https://www.cnblogs.com/xhzd/

《亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构》

视频教程:http://www.roncoo.com/course/view/af7d501667fe4a19a60e9467e6d2b3d9 升级说明: 该课程原本是123节课时,已于2017年7月份全部更新完毕.在原有123节课时的基础上,再免费新增70到80节左右的内容(注:课程大纲可能会做进一步优化,具体以最终更新为准),课程名将变更为<亿级流量电商详情页系统实战(第二版):缓存架构+高可用服务架构+微服务架构>简称第二版.本次免费新增内容将会从9月中旬开始更新,一直到10月底更新完毕

Java生鲜电商平台-缓存架构实战

Java生鲜电商平台-缓存架构实战 说明:在Java生鲜电商中,缓存起到了非常重要的作用,目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个key瞬间被数万甚至十万的并发请求打爆. 2.大value 某个key对应的value可能有GB级的大小,导致查询value的时候导致网络相关的故障问题. 缓存集群作用 在缓存里放一些平时不怎么变动的数据,然后用户在查询大量的平时不怎么变动的数据的时候,可以直接从缓存里走了.缓存集群的并发能力是很强的

电商系统二次开发---经验之谈

本文简单介绍了在电商行业,开发企业自有系统,要处理的一些问题与开发工作经验的一些总结.开发的时候,考虑到了这些问题,开发将会更加顺畅,开发出来的软件将更有生命力. 充分利用原有系统功能,把工作量降低到最小 公司的系统是是正在运行中的系统,做二次开发的时候往往是在原有的一些基础功能上升级,这就要求不能破坏原有的功能逻辑,又要利用好先有的功能,因为要实现某些功能的时候,可能有的功能已经有了.例如,电商平台需要做一个充值的功能,系统原本就有支付功能,礼券功能,那我们能否可以考虑把两个功能综合起来改造一