美文网首页
《高并发系统实战课》学习笔记 day2

《高并发系统实战课》学习笔记 day2

作者: 滔滔逐浪 | 来源:发表于2023-01-09 15:56 被阅读0次

缓存一致:读多写少时,如何解决数据更新缓存不同步。

对数据进行归类整理,让系统的数据更容易做缓存。为了降低数据库的压力,需要逐步对你系统增加缓存。
做缓存需要考虑性价比,一般来说只有热点数据放到缓存才更有价值。

临时热缓存,就是当数据第一次使用的时候,同时将数据放到缓存当中,短期内如果再次有类似的查询就可以快速从缓存中获取,短期内如果再次有类似查询就可以快速从缓存中获取,这个方法能有效降低数据库的查询压力。

关系型和统计型数据缓存刷新

首先是人工维护缓存方式。关系型数据或统计结果缓存刷新存在一定的难度,核心再于这些统计是由多条数据计算而成的,当我们对这类数据更新缓存时,很难识别出要刷新那些关联缓存。对此,我们需要人工在一个地方记录或者定义特殊刷新逻辑来实现相关缓存的更新。

不过这种方式比较精细,如果刷新缓存很多,那么缓存更新会比较慢,并且存在延迟。而且人工书写还需要考虑如何查找到新增数据关联的所有id,因为新增数据没有登记在id内,人工编码维护会很麻烦。
除了人工维护缓存外,还有一种方式就是通过订阅数据库来找到ID数据变化。我们可以使用Maxwell或Cannal对mysql更新进行监控。


image.png

这种变更信息会推送到Kafka内,我们可以根据对应的表和具体的SQL确认更新涉及的数据ID,然后根据脚本内设定好的逻辑对相关key进行例如用户更新了昵称,那么缓存更新服务就能知道需要更新 user_info_9527 这个缓存,同时根据配置找到并且删除其他所有相关的缓存。

很显然,这种方式的好处是能及时更新简单的缓存,同时核心系统会给子系统广播同步数据更改,代码并不复杂;缺点是复杂的关联关系刷新,仍旧需要通过人工写逻辑来实现。

如果我们表内的数据更新很少,那么可以使用版本号缓存设计

相关文章

  • Java高并发 -- 并发扩展

    Java高并发 -- 并发扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 死锁 死锁是指...

  • 《高并发系统实战课》学习笔记 day2

    缓存一致:读多写少时,如何解决数据更新缓存不同步。 对数据进行归类整理,让系统的数据更容易做缓存。为了降低数据库的...

  • Java高并发--AQS

    Java高并发--AQS 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 AQS是Abstra...

  • Java高并发 -- 线程池

    Java高并发 -- 线程池 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 在使用线程池后,...

  • Java高并发--安全发布对象

    Java高并发--安全发布对象 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 发布对像:使一...

  • Java高并发--消息队列

    Java高并发--消息队列 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 举个例子:在购物商...

  • Java高并发--线程安全策略

    Java高并发--线程安全策略 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 不可变对象 发...

  • Java高并发 -- J.U.C.组件扩展

    Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 F...

  • Java高并发--原子性可见性有序性

    Java高并发--原子性可见性有序性 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 原子性:...

  • Java高并发--缓存

    Java高并发--缓存 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 在下图中每一个部分都可...

网友评论

      本文标题:《高并发系统实战课》学习笔记 day2

      本文链接:https://www.haomeiwen.com/subject/iltmcdtx.html