一张图分析架构中的缓存设计
发布日期:2021-06-30 16:14:20 浏览次数:2 分类:技术文章

本文共 662 字,大约阅读时间需要 2 分钟。

今天从掘金网站看到一张高并发系统中的缓存设计图,如下:

 

图片来源:

针对这张图,写一下我对缓存的思考:

首先,分析一下系统中缓存的位置都有哪些,常见的缓存位置包括:

1.浏览器页面缓存

2.路由网关可以有缓存,进行限流等操作

3.应用级别缓存,主要是业务数据,常见的redis、memorycache等

4.持久层框架缓存,比如hibernate,mybatis都有缓存

5.数据库查询sql缓存

 

限流部分:

利用redis+lua脚本实现原子操作,提高并发性能。

业务数据

利用redis 集群+主从模式构建,为什么呢?为了读写分离,提高性能。本架构中,redis slave集群读取数据,不修改缓存数据,只读操作。

那么缓存数据如何修改呢?我们原来简单的处理是:同步修改数据库和缓存,显然提高了查询效率(如果命中),但是有侵入性,当然可以抽象缓存的操作。

另一个方式就是修改数据库,然后异步修改缓存,怎么解决呢?增加一层中间件,比如阿里巴巴的canel,适用于定于mysql binlog,充当mysql 从节点的角色,

从mysql主机获取bin log,然后推送到kafka、ES等中间价,当然也可以是redis。

实时性呢?是不是会读取到脏数据呢?考虑两个异步问题:

1. 从mysq通过canel读取bin log推送到redis master集群的延迟问题

2.从redis master集群异步同步数据到redis slave集群的延迟问题

 

数据库数据“复制”方法

通过canel实现,架构如下:

 

图片来源:

 

 

 

 

转载地址:https://kerry.blog.csdn.net/article/details/110569586 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Mysql覆盖索引与回表查询
下一篇:BitMap思想分析

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月21日 07时12分33秒