SpringCloud-高级篇(十八)

news2024/12/23 4:37:39

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

(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.coloradmin.cn/o/1418724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

演练纪实|同创永益助力大型农商行圆满完成2023年度灾备切换演练

为进一步强化银行灾备自动化运行提高系统风险应急能力、提升自动化运维平台的稳定性和可靠性、保障业务连续性,12月16日,某农商银行联合同创永益开展灾备自动化运维平台项目切换演练,同创永益开发交付中心北方交付二组同事参与本次演练。 本次…

在线制作gif动图怎么做?一个方法轻松制作gif动画

有时候一张普通的图片无法表达出我们的意思,但是视频又比较长看起来太过复杂。这时候,大家就可以使用gif动图了,不需要下载软件使用gif生成器(https://www.gif.cn/)-GIF中文网,轻松一键就能快速完成gif在线…

Pytest与unittest区别

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

面试项目问题

文章目录 1. 你们这个项目多少人在做?人员分布是怎样的?做了多长时间?2. 你们项目一共有几个端? 每个端都是哪些人在用? 作用是什么? 有哪些模块?3. 你们项目一共有几个微服务? 每个微服务负责的任务是什么?4. 你们项目一共有几个数据库? 你负责的数据库是哪个? 核心…

在centos 7 中安装配置Jdk、Tomcat、及Tomcat自启动

目录 一、安装配置Jdk 1.创建目录并上传文件 2.解压JDK压缩包 3.配置JDK环境变量 4.设置环境变量生效 二、安装配置Tomcat 1.上传Tomcat并解压 2.启停Tomcat 3.修改tomcat-user.xml配置 4.配置远程访问Tomcat 5.远程项目发布 三.Tomcat自启动配置 1.配置Tomcat自启…

npm ERR! path E:node_modules\node-sass

分析报错发现有关 python2 环境相关报错 解决办法:需要再电脑中安装python 2.X版本的环境 因为我本地电脑有python 3.9的环境,所以我使用 Anaconda安装python环境 1、安装 python 2.7 conda create -n py2 python2.72、激活虚拟环境 conda activate…

基于STM32的以太网通信协议选择与实现

在基于STM32的以太网通信中,主要涉及到选择合适的通信协议和实现对应的功能代码。常见的通信协议包括TCP/IP、UDP、HTTP等,选择合适的协议取决于具体应用需求。以下将介绍在STM32上进行以太网通信时,常用的通信协议选择以及对应功能代码的实现…

使用 FHEW-like 自举 BV-like

参考文献: [CDKS21] Chen H, Dai W, Kim M, et al. Efficient homomorphic conversion between (ring) LWE ciphertexts[C]//International Conference on Applied Cryptography and Network Security. Cham: Springer International Publishing, 2021: 460-479.[K…

Electron桌面应用实战:Element UI 导航栏橙色轮廓之谜与Bootstrap样式冲突解决方案

目录 引言 问题现象及排查过程 描述问题 深入探索 查明原因 解决方案与策略探讨 重写样式 禁用 Bootstrap 样式片段 深度定制 Element UI 组件 隔离样式作用域 结语 引言 在基于 Electron 开发桌面应用的过程中,我们可能时常遇到各种意想不到的问题…

redis-主从复制

1.主从复制 1.1简介 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 1.2作用 1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 2、故…

第九篇【传奇开心果系列】beeware的toga开发移动应用示例:人口普查手机应用

传奇开心果博文系列 系列博文目录beeware的toga开发移动应用示例系列博文目录一、项目目标二、安装依赖三、实现应用雏形示例代码四、扩展功能和组件的考量五、添加更多输入字段示例代码六、添加验证功能示例代码七、添加数据存储功能示例代码八、添加数据展示功能示例代码九、…

【每日一题】最大合金数

文章目录 Tag题目来源解题思路方法一:二分枚举答案 写在最后 Tag 【二分枚举答案】【数组】【2024-01-27】 题目来源 2861. 最大合金数 解题思路 方法一:二分枚举答案 思路 如果我们可以制造 x 块合金,那么一定也可以制造 x-1 块合金。于…

免 费 小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

ID-GCS

ϕ \phi ϕ denotes the zero padding 作者未提供代码

【代码随想录-链表】移除链表元素

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

【算法】BFS算法解决多源最短路问题(C++)

文章目录 前言那么什么是单源最短路 / 多源最短路呢?如何解决此类题?解法一解法二对于解法二,如何编写代码? 算法题542.01矩阵1020.飞地的数量1765.地图中的最高点1162.地图分析 前言 此前我们对 单源最短路 问题进行的讲解&…

React16源码: React中处理LegacyContext相关的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了,就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢?因为它…

【遥感专题系列】影像信息提取之—— 土地利用数据监督与非监督分类

基于光谱的影像的分类可分为监督与非监督分类,这类分类方法适合于中低分辨率的数据,根据其原理有基于传统统计分析的、基于神经网络的、基于模式识别的等。 本专题以ENVI5.3及以上版本的监督与非监督分类的实际操作为例,介绍这两种分类方法的…

258. Add Digits(各位相加)

问题描述 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 问题分析 我们至少要将num的每一位相加一次得到一个新的数字,然后判断是否新的数字需要每一位再次相加,如此重复下去,这…

《HTML 简易速速上手小册》第2章:HTML 的标签和元素(2024 最新版)

文章目录 2.1 文本格式化标签(🎩✨📜 网页的“时尚搭配师”)2.1.1 基础示例:一篇博客的格式化2.1.2 案例扩展一:产品介绍页面2.1.3 案例扩展二:个人简历 2.2 链接和锚点(&#x1f6a…