对网站备案的认识免费素材网站下载

diannao/2026/1/26 5:39:37/文章来源:
对网站备案的认识,免费素材网站下载,工程施工合同免费版,做网站小程序的客户是怎么找的最近建了一个技术交流群#xff0c;欢迎志同道合的同学加入#xff0c;群里主要讨论#xff1a;分享业务解决方案、深度分析面试题并解答工作中遇到的问题#xff0c;同时也能为我提供写作的素材。 欢迎加Q#xff1a;312519302#xff0c;进群讨论 前言 在工作中#… 最近建了一个技术交流群欢迎志同道合的同学加入群里主要讨论分享业务解决方案、深度分析面试题并解答工作中遇到的问题同时也能为我提供写作的素材。 欢迎加Q312519302进群讨论 前言 在工作中大多数的系统都在使用缓存那你有没有想过为什么要使用缓存使用缓存后数据与缓存的一致性如何保证 带着上面的问题我们一起探索。 我们刚开始做一个项目的时候刚起步流量很小直接读写数据库即可性能不错系统稳定架构如下图 随时时间推移系统运行一段时间老板说要推广我们的系统给用户赋能接着搞一波营销流量激增结果系统报警了系统都快挂了赶紧排查发现性能瓶颈在数据库。 这好办给服务器加上 Redis让其作为数据库的缓存。 这样在客户端请求数据时如果能在缓存中命中数据那就查询缓存不用在去查询数据库从而减轻数据库的压力提高服务器的性能。 那我们的架构变为 看起来非常美好但是有个问提挡在我们面前如果数据库的数据有修改的时候我们是先更新数据库还是先更新缓存呢 由于引入了缓存那么在数据更新时不仅要更新数据库而且要更新缓存这两个更新操作存在前后的问题 先更新数据库再更新缓存先更新缓存再更新数据库 想了想为了保证数据是最新的数据那我们选择 先更新数据库再更新缓存 一顿操作猛如虎系统优化完成后上线数据库压力也下来吞吐量得到明显的提高心里那个激动啊我TM真是牛逼等着老板的嘉奖。 过了一段时间后有人反馈我修改了数据后查看详情发现数据没变但是我修改数据的时候提示我修改成功。擦难道是系统出bug了 登录服务器排查没发现有更新数据库、缓存的失败的信息但是发现个问题缓存是修改前的数据数据是修改后的数据那这种问题是怎么产生的呢 进一步分析发现缓存与数据库不一致的原因是并发导致的 先更新数据库再更新缓存 并发为什么能导致数据与缓存不一致呢我们接着分析我举个例子用户A与用户B同时修改一条数据 执行步骤 用户A更新数据库为1用户B更新数据库为2****用户B更新缓存2用户A更新缓存为1 从上面可以看出数据库为2缓存也应该为1这就造成了缓存与数据库不一致的现象 那如果我们先更新缓存再更新数据库呢 先更新缓存再更新数据库 执行步骤 用户A更新缓存为1用户B更新缓存2用户B更新数据库为2用户A更新数据库为1 从上面可以看出数据库为1缓存也应该为2还是造成了缓存与数据库不一致的现象 结论 无论是先更新数据库再更新缓存还是先更新缓存再更新数据库在并发访问修改一条数据的时候都会出现不一致的情况 想了想那不更新缓存了直接删除缓存。也就是数据库后更新后直接删除缓存。 在读取数据的时候查看缓存中有没有数据没有数据查询数据库然后再更新缓存。 这个策略有个名字Cache Aside 策略 中文旁路缓存策略 旁路缓存策略 Cache Aside旁路缓存策略是最常用的应用程序直接与「数据库、缓存」交互并负责对缓存的维护该策略又可以细分为「读策略」和「写策略」。 写策略的步骤 先更新数据库中的数据再删除缓存中的数据。 读策略的步骤 如果读取的数据命中了缓存则直接返回数据如果读取的数据没有命中缓存则从数据库中读取数据然后将数据写入到缓存并且返回给用户。 问题来了那我们是先更新数据库再删除缓存还是先删除缓存再更新数据库 先删除缓存再更新数据库 执行步骤 用户A删除缓存用户B查询缓存缓存中没有数据用户B查询数据库得到数据用户B更新缓存数据用户A更新数据库为最新的值 从结果看缓存的是旧值1数据库是最新值2在并发读写的场景下依然数据库跟缓存不一致。 先更新数据库再删除缓存 执行步骤 用户A查询缓存缓存未命中用户A查询数据库得到值为1用户B更新数据库值更新为2用户B删除缓存用户A把查询到的值1回写到缓存 从结果看缓存的是旧值1数据库是最新值2在并发读写的场景下依然数据库跟缓存不一致。 从理论上来分析先更新数据再删除缓存依然存在数据库与缓存不一致的情况但在实际中出现不一致的情况概率非常低。 因为缓存的写入速度远远大于写入数据库的速度为了以防万一再给缓存数据加一个过期时间如果真出现不一致的情况也最多在过期时间的这个区间不一致过期时间到了重新更新缓存也能到达最终一致性 方案选择 以下四种方案我们都分析了那我们到底用哪一种呢 先更新数据库再更新缓存先更新缓存再更新数据库先更新数据库再删除缓存先删除缓存再更新数据库 先说我的观点也是大厂的方案强烈推荐先更新数据库再删除缓存 原因如下 缓存的写入速度远远大于写入数据库的速度出现不一致的的概率很低设置过期时间如果真出现不一致的情况过期时间到期重新刷新缓存能达到最终一致性正常的情况缓存与数据强一致性也没那么高的要求如果真要达到强一致性系统吞吐量必要下降 题外话对于一致性的解决方案我对大厂的方案很感兴趣想了解他他们是怎么解决的。当进去后深入了解下使用的方案也是先更新数据库再删除缓存 最终一致性没必要强一致性原因跟上面三条差不多。 这样是不是很完美了嘛等等这种方案还有没有问题想想…看下图 更新数据库删除缓存是两个操作如果删除缓存失败了呢这种概率虽然很低那缓存中依然是旧值有没有什么方案解决这个问题呢 上面的四种方案无论是先操作数据库还是操作缓存都存在这种问题 问题原因知道了该怎么解决呢有两种方法 重试机制订阅 MySQL binlog再操作缓存 如何保证两个操作都执行成功 重试机制 引入消息中间件比如rabbitmq 如果应用删除缓存失败发送消息到mq然后从消息队列中重新读取数据然后再次删除缓存这个就是重试机制。当然如果重试超过的一定次数还是没有成功我们就需要向业务层发送报错信息了。如果删除缓存成功就要把数据从消息队列中移除避免重复操作否则就继续重试 订阅 MySQL binlog再操作缓存 引入canal中间件 canal译意为水道/管道/沟渠主要用途是基于 MySQL 数据库增量日志解析提供增量数据订阅和消费。 canal 工作原理 canal 模拟 MySQL slave 的交互协议伪装自己为 MySQL slave 向 MySQL master 发送dump 协议MySQL master 收到 dump 请求开始推送 binary log 给 slave (即 canal )canal 解析 binary log 对象(原始为 byte 流) 所以如果要想保证「先更新数据库再删缓存」策略第二个操作能执行成功我们可以使用「消息队列来重试缓存的删除」或者「订阅 MySQL binlog 再操作缓存」这两种方法有一个共同的特点都是采用异步操作缓存也可能存在短时间的不一致。 总结 如何保证数据库与缓存一致性先更新数据库再删缓存缓存设置一个过期时间 这种方案能适用95%以上的场景。 不知道你们在实际工作中你们的项目用的那种方案踩过哪些坑欢迎留言一起谈论。

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

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

相关文章

人力资源网站模板一个虚拟主机多个网站

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例RadiusOutlierRemoval,并解析接口vtkRadiusOutlierRemoval,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的…

如何开发wap网站做企业专业网站一般要多少钱

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

建网站的软件软件公司网站源码

Eclipse控制web项目的访问名称 web项目的访问路径(名称)修改 1.点击项目右键-》properties找到Context root 修改成我们需要的名字即可转载于:https://www.cnblogs.com/pypua/articles/7379950.html

装修公司做网销的网站建设银行观澜支行网站

gitlab备份文件上传腾讯云COS 脚本说明脚本名称:upload.py 假设gitlab备份文件目录:/opt/gitlab/backups gitlab备份文件格式:1706922037_2024_02_06_14.2.1_gitlab_backup.tar1.脚本需和gitlab备份文件同级目录 2.根据备份文件中的日期判断…

深圳东门希尔顿欢朋酒店外贸网站seo优化方案

免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章: 不要太相信我要说的话。 我之所以这样说,是因为我们正在讨论安全性。 而且, 当您谈论安全性时,除了100%正确的陈述外,还有冒任何其他风险的风险…

医院网站建设 不足农业电商网站建设

在混合开发中避免不了通信,简单记录一下,Flutter iOS工程与Flutter 之间相互通信。 Flutter中通过Platform Channel实现Flutter和原生端的数据传递,是怎么进行数据通信,以及怎么配置,下面一一进行详解。 FlutterMetho…

深圳设计网站培训班企业网站建设公司注意哪些问题

所有代码块都是在Jupyter Notebook下进行调试运行,前后之间都相互关联。 文中所有代码块所涉及到的函数里面的详细参数均可通过scikit-learn官网API文档进行查阅,这里我只写下每行代码所实现的功能,参数的调整读者可以多进行试验调试。多动手…

网站群cmswordpress按分类调用文章

环境说明 系统版本:Ubuntu 20.04 VirtualBox版本: 7.0.12 解决过程 扩展下载,进入VirtualBox 官方下载路径。选择本机安装版本,如下图所示,因笔者是7.0.x版本,因此点击第一条链接; 进入版本页…

中国网站排名前100智慧团建官方网站电脑版

Vue中的Render渲染函数 VUE一般使用template来创建HTML&#xff0c;然后在有的时候&#xff0c;我们需要使用javascript来创建html&#xff0c;这时候我们需要使用render函数。比如如下我想要实现如下html&#xff1a; <div id"container"><h1><a hre…

企业网站推广计划网络科技工作室起名

一.项目简介 利用DS18B20实时检测温度并显示在LCD1602显示屏上&#xff0c;同时可以通过K1,K2,K3,K4设置最高温度和最低温度利用AT24C02可以实现掉电不丢失&#xff0c;最后当检测温度大于或小于最高温时&#xff0c;会在LCD1602显示屏上显示OV:H或OV:L。 二.准备材料 AT89C52、…

济宁市中网站建设工程建设信息网站有哪些

一.前期准备 1.1开发环境安装 Oracle从JDK9开始每半年发布⼀个新版本, 新版本发布后, ⽼版本就不再进⾏维护. 但是会有⼏个⻓期维护的版本. ⽬前⻓期维护的版本有: JDK8, JDK11, JDK17, JDK21 在 JDK版本的选择上&#xff0c;尽量选择⻓期维护的版本. 为什么选择JDK17? S…

专业营销网站建设购物网站APP

运维工程师在进行服务器运维时&#xff0c;往往一个人要同时监控几十甚至成百上千的机器&#xff0c;当机器数量增加时&#xff0c;服务器管理的难度将会大大增加。很多工程师在工作中会使用一些运维面板&#xff0c;比如bt&#xff0c;1panel等&#xff0c;但是这些工具往往一…

专门做音箱的网站邢台地区网站建设

每日推荐一篇专注于解决实际问题的外文&#xff0c;精准翻译并深入解读其要点&#xff0c;助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号 原文标题&#xff1a;Text Clustering and Labeling Utilizing OpenAI API 原文地址&#xff1a;https://medium.com/kbd…

制作app免费网站模板镇江网站建设和优化推广多少钱

C 六级 2024 年 03 月 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 在构建哈夫曼树时&#xff0c;每次应该选择&#xff08; &#xff09;合并。 A. 最小权值的节点 B. 最大权值的节点 C. 随机节点 D. 深度最深的节点 第 2 题 面向对象的编程思想主…

全屏网站模版重庆汉沙科技做网站怎么样

参数地址围类别97版基地址2002版基地址遥信1H------400H1H------4000H遥测701H------900H4001H------5000H遥控B01------B806001H------6100H设点B81H------C00H6201H------6400H电度C01H------C80H6401H------6600H遥测和遥信个数不设置上限&#xff0c;可以没有上限限制&…

网站自助建站网站模版库

目的&#xff1a;想使用add()在list集合中加入数据 原因&#xff1a;Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法&#xff0c;直接使用会抛异常 String str "1,2,3,5" String[] ids str.split(","); List<String> list Array…

做染料的网站网站百科源码

第一步&#xff0c;通过下面的指令&#xff0c;修改 linux git 的配置文件&#xff1a; vi ~/.gitconfig会进入下图界面&#xff1a; 进入本地&#xff08;Windows&#xff09;中 git 的设置界面 复制 名称 和 Email 到 gitconfig 里&#xff0c;不要在末尾加 &#xff08;空…

郑州网站搭建wordpress 建站容易吗

中间件是一种软件&#xff0c;用于在不同的应用程序、系统或服务之间提供通用功能和服务。它充当应用程序之间的桥梁&#xff0c;帮助它们相互通信和交换数据。中间件简化了复杂软件系统的开发和维护&#xff0c;使不同的系统组件能够更容易地协同工作。中间件的类型很多&#…

东莞网站建设-拥有多年专业永久不收费的软件app

前置条件 已经完成 K8S安装过程十&#xff1a;Kubernetes CNI插件与CoreDNS服务部署 部署 istio 服务网格与 Ingress 服务用到了 helm 与 kubectl 这两个命令行工具&#xff0c;这个命令行工具依赖 ~/.kube/config 这个配置文件&#xff0c;目前只在 kubernetes master 节点中…

多合一网站源码网络营销ppt讲解

Problem - G - Codeforces 推荐视频题解&#xff1a;G_哔哩哔哩_bilibili 思路&#xff1a; 先不管同一个线路上的&#xff0c;就正常建边&#xff0c;这样点距都是1. 然后虚点就是该线路的每个点都连的点。 到虚点的边权是1&#xff0c;表示我们坐这趟线路。 然后这个虚点…