失效问题的分析| 学习笔记

简介: 快速学习失效问题的分析。

开发者学堂课程【使用 Redis 消息队列完成秒杀过期订单处理 :失效问题的分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/729/detail/13010


失效问题的分析

 

解决方案

目前企业中最常见的解决方案大致分为两种:

1. 使用定时任务处理

定时描数据库中过期的数据,然后进行修改。但是为了更加精确的时间控制,

定时任务的执行时间会设置的很短,所以会造成很大的数据库压力。

2. 使用消息通知,

当数据失效时发送消息,程序接收到失效消息后对响应的数据进行状态修改。此种方式不 会对数据库造成太大的压力。

一起来看一下代金券过期的这个问题,目前企业当中一般是怎么去处理或者怎么去解决这些问题?

一种方式,使用叫做定时任务使用定时任务,左边是 Java 代码,每隔几分钟或者每隔多少秒也就是隔一定的时间段去扫描数据库,右边就是数据库,假如说每五秒钟扫描数据库.从数据库当中完了查询到查询到失效或者查询到过期过期的来数据,设置失效状态,这是一种方式,每间隔五秒钟就要从 Java 代码去发送一次查询到的数据库里面发现了有一些失效的一些红包或者代金券,那接着去设置它的一个失效状态,对于这种处理方式,对数据库是否会造成一些影响?

比如说数据库里面的数据量比较多。

比如说100万或者上千万条上一条的数据里面查到某几条数据啊,每五秒要查一次,不管是否有失效失效的红包或者失效优惠券都要进行查询,那这个是极大的浪费数据库的效率。

因为他总是在查询,习惯把它称之为主动的方式来做,也就是通过 Java 代码主动的查询数据库,查询到失效的订单,然后再处理这种方式的问题,显而易见,不停的在扫描数据库会造成据库来开销的一个浪费。

image.png

2、消息通知

消息通知是,假设有一台,我们定制为叫做通知服务器,这个通知服务器,它有一个前提条件,他已经知道过期订单才知道过期订单完了,等某一个订单过期的时候,或者某一个红包过期失效的时候,他能给发送一个通知,发送到Java 代码中。

会告诉这红包或者这个优惠券的一个 ID,如说1234已经失效了,就拿这个1234去查询一把,图中最右边为数据库。就可以查询数据库,接着去重置一下这条数据的状态,也就是说通过这种方式,首先,有一台服务器知道一些过期信息,就会给 java 代码端发送通知,Java 代码端就能得到失效的红包,或者优惠券的 ID,那接着查询失效数据之后,设置失效状态就可以了。

image.png

第一种方式是不断是得进行查询,第二种方式是只查询一次,然后只设置一种状态。减少了数据库得开销,当前企业中处理过期红包卡卷的方式有很多,本次列举了两种,通过分析,知道更方便实惠的方式是通过第二种消息通知来做。

相关文章
|
7月前
|
SQL Oracle 关系型数据库
分析索引失效的几种情况
联合索引 is not null 只要在建立的索引列(不分先后)都会走, in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),或者=一个值; 当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),以上两种情况索引都会走。其他情况不会走。
110 1
|
7月前
|
SQL Oracle 关系型数据库
索引失效的情况分析
大家都知道,一条查询语句走了索引和没走索引的查询效率是非常大的,在我们建好了表,建好了索引后,但是一些不好的sql会导致我们的索引失效,下面介绍一下索引失效的几种情况
50 0
|
2月前
|
程序员
后端|一个分布式锁「失效」的案例分析
小猿最近很苦恼:明明加了分布式锁,为什么并发还是会出问题呢?
43 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
396 3
|
4月前
|
Java
典型热点应用问题之启用增量编译的问题如何解决
典型热点应用问题之启用增量编译的问题如何解决
|
7月前
|
SQL 存储 关系型数据库
真正线上索引失效的问题是如何排查的
MySQL索引失效是一种常见问题,在处理慢查询时经常需要考虑索引失效的可能性。 针对索引失效的排查,关键步骤包括确定需要分析的SQL语句,并通过`EXPLAIN`查看其执行计划。主要关注`type`、`key`和`extra`这几个字段。
真正线上索引失效的问题是如何排查的
|
存储 缓存 NoSQL
项目实战典型案例1——redis只管存不管删除 让失效时间删除的问题
项目实战典型案例1——redis只管存不管删除 让失效时间删除的问题
97 0
|
存储 缓存 NoSQL
【项目实战典型案例】01.redis只管存不管删除让失效时间删除的问题
【项目实战典型案例】01.redis只管存不管删除让失效时间删除的问题
|
数据库 索引
MysSQL索引会失效的几种情况分析
MysSQL索引会失效的几种情况分析
155 0
MysSQL索引会失效的几种情况分析
|
存储 SQL 搜索推荐
索引失效案例
索引失效案例
索引失效案例