SpringCloud-高级篇(十八)

前面我们已经实现了多级缓存架构,大大提高了查询商品的性能,缓存在提高性能的同时,也带来了一致性的问题,比如说数据库发生了修改,这个时候,如果缓存依然是旧的数据,两者就产生了不一致,这不是我们需要看到的,如何保证缓存与数据库的一致性,这是我们下面结局的问题,缓存同步问题:

(1)缓存同步策略

 

大多数缓存都可以用异步通知方案:

用MQ还是需要在代码中做一定的修改,我们用下一种方案

修改商品的业务不需要修改,来了以后直接写数据库,写完结束,这个时候canal监听数据库的变化发现数据库变了之后,直接通知缓存服务完成更新,做到了代码0侵入 

(2)安装Canal

在bin目录下生成一个文件:

 通过Posttion来确定主库与从库之间的数据,从库position小于主库position,就说明需要新的log需要获取了

进入canal:

(3)监听Canal

Canal监听Mysql的变化,去更新客户端

Canal的java的客户端编写是比较麻烦的,我们第三方开源的canal-start 

创建类:

在RedisHandler中添加:

JVM的进程还存也是有的,可以这样操作:

上面我们只是对Redis跟JVM做了修改,nginx本地缓存没有修改,浏览器用户前端页面上不太容易看到,只能查看看接口直接访问

我们直接调用接口查看数据修改情况,先查询到1001

现在对1001数据做修改:我们提供了一个修改页面

修改:

浏览器做有日志显示:

这个是直接查询接口,查询tomcat返回的数据,页面进行了修改,这样则可以证明,Redis和tomcat

进行了修改

(JVM)本地缓存进行了修改 

Redis也进行修改:

如果openResty也做了集群,nginx也要修改负载均衡的算法,让查询你一个商品,请求的是同一个openResty

在openResty我们做的是超时的同步,设置时间,到期自动删除,下次再查就变成新数据了,这种方案它适合于数据更新频率较低的数据,商品中一些大多数通用数据,不怎么变得

变化频率较高的,对时效性要求交强的数据,不建议放到openResty做过期缓存了

对于Redis和tomcat就可以放任何的数据了,要想更新的话时效性比较强,这里采用的是Canal监听Mysql的方式

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/438083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux0.11源码看信号的处理流程

序 日常Linux写代码或者使用中难免会使用siganl,包括我们使用ctrl-c结束程序,使用kill命令发送信号,或者说程序core后操作系统向程序发送的信号,以及我们程序内部自定义的信号处理。 我们选择linux0.11一个原因是它比较简单&…

瑞_力扣LeetCode_二叉搜索树相关题

文章目录 说明题目 450. 删除二叉搜索树中的节点题解递归实现 题目 701. 二叉搜索树中的插入操作题解递归实现 题目 700. 二叉搜索树中的搜索题解递归实现 题目 98. 验证二叉搜索树题解中序遍历非递归实现中序遍历递归实现上下限递归 题目 938. 二叉搜索树的范围和题解中序遍历…

微信小程序(二十二)获取全局实例

注释很详细,直接上代码 上一篇 新增内容: 1.全局实例的定义位置 2.全局实例中数据的修改方法 源码: app.js App({//数据可以包括在第二级globalData:{userInfo:null,token:1243,userInfo:null},//globalData并不是关键词,数据可以…

Redis系列-数据结构篇

数据结构 string&#xff08;字符串&#xff09; redis的字符串是动态字符串&#xff0c;类似于ArrayList&#xff0c;采用预分配冗余空间的方式减少内存的频繁分配。 struct SDS<T>{ T capacity; T len; byte flags; byte[] content; } 当字符串比较短时&#xff0c…

matlab GUI实现PID控制器参数配置

1、内容简介 略 39-可以交流、咨询、答疑 2、内容说明 略 3、 基于GUI的PID研究 本例子中设计一个PID控制器来研究不同参数对输出结果的影响&#xff0c;PID控制器由比例单元 P、积分单元 I 和微分单元 D 组成。PID 控制器是一个在工业控制应用中常见的反馈回路部件&…

基于springboot网吧管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

点击查看 Milvus 社区十大关键词(上)

GitHub Star 突破 25,000、集众多特性于一体的 2.3.0 版本重磅发布、Docker Hub Milvus 镜像下载量突破 1000 万……过去一年&#xff0c;Milvus 社区取得了很多激动人心的进展&#xff0c;而 Milvus 技术交流群作为众多开发者交流分享的重要阵地&#xff0c;今年的规模也突破了…

渗透测试(12)- WireShark 网络数据包分析

目录 1、WireShack 简介 2、WireShark 基本使用方法 3、 WireShack 抓包分析 3.1 Hypertext Transfer Protocol (应用层) 3.2 Transmission Control Protocol (传输层) 3.3 Internet Protocol Version 4(网络层) 3.4 Ethernet Il (链路层): 数据链路层以太网头部信息 …

c#之构值类型和引用类型

值类型:(整数/bool/struct/char/小数) 引用类型:(string/ 数组 / 自定义的类 / 内置的类) 值类型只需要一段单独的内存,用于存储实际的数据 引用类型需要两段内存(第一段存储实际的数据,他总是位于 堆中第二段是一个引用,指向数据在堆中的存放位置) 当使用引用类型赋值的时…

AS自治系统中的路由协议---RIP、OSPF、BGP

一、AS --- 自治系统 将网络分块管理 --- 由单一的机构或组织所管理 的一系列IP网络及其设备的集合 AS的管理&#xff1a;为了方便对AS进行管理&#xff0c;我们给AS设计了一个编号称为AS 号 --- 16位二进制构成 --- 0 - 65535 ---- 目前也存在拓展版的AS 号 --- 32位二进制构…

交换机跨VLAN交换数据ip跳转分析(不一定对)

在网上看到这样一个实验&#xff1a; 交换机1、交换机2分别连接到一台防火墙上&#xff0c;要求使VLAN 2、VLAN3、VLAN5、VLAN6中的终端可互相访问。 拓补 参考链接 【数通网络交换基础梳理2】三层设备、网关、ARP表、VLAN、路由表及跨网段路由下一跳转发原理_网管型交的机…

镀膜玻璃行业研究:未来市场潜力巨大

建筑是深加工玻璃最主要的应用领域&#xff0c;建筑玻璃上游主要是石英砂、纯碱、石灰石等原材料包括将平板玻璃进行深加工形成的中空玻璃、 夹层玻璃、镀膜玻璃、 钢化玻璃、 压花玻璃等。 玻璃作为透明材料被广泛应用于建筑中&#xff0c;由于玻璃制品是一种良好的热导性建筑…