IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

什么叫穿透DB?什么情况下会发生,穿透DB后会发生什么事情?

关联任务:

任务五

直播时间:

2019-08-16 15:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

什么叫穿透DB?什么情况下会发生,穿透DB后会发生什么事情?     中品

辅导师兄


【修真院java 小课堂】什么叫穿透DB?什么情况下会发生,穿透DB后会发生什么事情?

大家好,我是IT修真院深圳分院第16期的学员廖志鹏,一枚正直纯洁善良的java后端程序员,今天给大家分享一下,修真院官网java任务六,深度思考中的知识点

1.背景介绍

什么叫穿透DB?

准确说应该叫缓存穿透,高并发请求集体访问数据库,导致数据库负载剧增甚至崩溃


2.知识剖析

什么情况下会发生缓存穿透?

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。


3.常见问题

如何预防缓存穿透?

解决方案:

接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;

从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,

缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击


4.编码实战

 <> () {
        =.opsForValue().get(+ )(!= ) {
            (.().equals()){
                .info()}{
                .info()<> = (<>) }
        } {
            <> = .selectBySearch().info(.(.size()))(.size()==) {
                .info().opsForValue().set(+ .)} {
.opsForValue().set(+ .).info()}
        }
    }


5.扩展思考

缓存击穿

描述:

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),

这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据, 引起数据库压力瞬间增大,造成过大压力

解决方案:

设置热点数据永远不过期。


缓存雪崩

描述:

缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是, 缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。 解决方案:

缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。

如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。





6.参考文献

https://blog.csdn.net/kongtiao5/article/details/82771694



7.更多讨论

问:1、正常使用,会出现缓存穿透的情况吗?

答:一般来说不会,但是如果应用用户人数过多的话,也是有可能出现这样的问题

问:2、什么样的接口应该做缓存穿透?

答:一般只有变动不大的数据才会放到缓存中,所以这种数据一般也不会出现缓存穿透的情况,一般使用不会出现,除非恶意攻击

问:3、缓存穿透严重的话,会出现什么样的后果?

答:可能造成数据库挂掉


8.结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~



评论

[散修弟子]JAVA-7190 发表于 2019-11-16 17:47:57 #1

符合格式,通过

回复

请您登录 后进行评论