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的方式

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

任务修复实例(1)

实例1 任务名:增强防御(quest_template.id 8490) 涉及的两个数据表分别为 smart_script 和 creature_summon_groups smart_script Reactstate 取值参考源码 UnitDefines.h 的 ReactStates 定义,其中:0为被动&#…

【React教程】(3) React之表单、组件、事件处理详细代码示例

目录 事件处理示例1示例2示例3(this 绑定问题)示例4(传递参数)Class 和 Style 表单处理组件组件规则注意事项函数式组件(无状态)类方式组件(有状态)组件传值 Propsthis.props.childr…

【劳德巴赫 Trace32 高阶系列 1 -- svf 文件介绍】

文章目录 SVF 文件概述SVF文件的格式以及头Trace32 如何识别和使用SVF文件如何使用SVF文件SVF 命令支持总结小结总结SVF 文件概述 SVF 文件是一种ASCII文本文件,用于描述JTAG(Joint Test Action Group)测试动作的串行向量。这些文件包含了对JTAG TAP(Test Access Port)的…

寒假思维训练计划day16 A. Did We Get Everything Covered?

今天更新一道1月27号晚上div2的C题作为素材,感觉用到了我的构造题总结模型,我总结了一系列的模型和例题。 摘要: Part1 定义"边界贪心法" Part2 题意 Part3 题解 Part4 代码 Part5 思维构造题模型和例题 Part1 边界贪心…

生产解决方案:实现上传图片至主机文件夹下

1 需求: 目前需要实现,上传图片时候,自动根据图片上传地址,创建对应文件夹,例如:上传文件地址为,/2024/1/29/楼层1/1713.jpg,则存储结构应如下图所示。

[杂项:AD画板]B站_01

一、PCBA 1、快捷方式 CTRL鼠标滚轮:缩放界面 鼠标右键:拖拽界面 SHIFT鼠标滚轮:左右移动界面 CAPSLK鼠标滚轮:上下移动界面 CTRL鼠标左键:高亮选中接线网络 【】:调节高亮亮度,需要处于…

Sqli靶场 11--->22Less

打靶场,打靶场,打靶场,打靶场......靶场你别打我 球球 11.不用密码(狂喜) 这一关知不知道账号密码都无所谓 那么我们就尝试一下报错类型,单引号报错,好,字符型 构造poc I_don_t_know_t…

C++ 之LeetCode刷题记录(二十二)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该…

[PHP]严格类型

PHP: 类型声明 - Manual

数字身份保护:Web3如何改变个人隐私观念​

随着Web3时代的来临,数字身份保护成为人们关注的焦点之一。Web3技术的引入不仅为个人隐私带来了新的挑战,同时也为我们重新思考和改变个人隐私观念提供了契机。本文将深入探讨Web3如何改变个人隐私观念,以及在数字身份保护方面的创新举措。 1…

计算机网络-H3C设备型号简介

H3C(新华三)的设备主要有:交换机、路由器、防火墙、无线AC、无线AP等组成。基本所有H3C设备都采用同一版本,基本命令都差不多,有V5、V7系列。 一、交换机系列 交换机有傻瓜式二层交换机,三层交换机,高端框式交换机。 交…

MATLAB环境下基于信号处理的EEG信号的睡眠纺锤波和K-复合波检测

睡眠纺锤波是正常人浅 - 中度睡眠脑电图的一种表现,随着睡眠深浅的变化而改变。睡眠纺锤波可以作为检测中枢神经机能正常与否的一个指标,对评估大脑发育与脑功能有重要意义。睡眠纺锤波在丘脑的后外侧腹侧核形成,通过投射系统投射到大脑皮层&…

CH395Q之CH395Q简介(一)

本节主要介绍以下内容: 1、TCP/IP协议栈是什么(了解) 2、CH395Q是什么(了解) 3、CH395Q工作命令(熟悉) 4、CH395Q & W5500 一、TCP/IP协议栈是什么 是一系列网络协议的总和&#xff0…

uni-app 微信小程序CI机器人自动化部署方案

uniApp微信小程序CI机器人自动化部署 1. 微信公众平台上,在开发设置里面小程序代码,将上传代码的服务IP地址填充下,生成一个上传秘钥下载下来 2. 将下载的秘钥文件放在uni-cli 项目的根目录下 3. npm 微信官方的miniprogram-ci模块 const c…

蓝桥杯省赛无忧 课件50 记忆化搜索

01 斐波那契数列 02 混境之地5 03 地宫取宝

Android开发学习-中级控件

Drawable Android把所有能够显示的图形都抽象为Drawable类(可绘制的)。 这里的图形不止是图片,还包括色块、画板、背景等。 包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录一般保存描述性的XML文件,而图片文件一…

Qlik Sense : IntervalMatch(离散匹配)

什么是IntervalMatch IntervalMatch 前缀用于创建表格以便将离散数值与一个或多个数值间隔进行匹配,并且任选匹配一个或多个额外关键值。 语法: IntervalMatch (matchfield)(loadstatement | selectstatement ) IntervalMatch (matchfield,keyfield…

问卷与量表的区别,以及量表的信效度分析应该如何测量

最近在各个平台总能收到这样一个问题 “问卷如何进行信效度分析?”每次小编提到信效度分析时都会特意强调,只有量表才需要进行信度与效度分析,普通问卷(单选、多选、填空等)并不需要。那么今天就再深入探讨一下问卷与量…

如何选择便捷安全的黄金交易平台?

黄金交易平台的介绍 黄金交易平台是一个提供方便、安全的方式进行黄金交易的网上平台。 投资者可以通过这些平台进行黄金的买卖,参与黄金市场的投资活动。 这些平台提供了一个简单易用的界面,让投资者可以方便地进行交易操作。 选择合适的黄金交易平台…