阿里云服务器建网站贵州省建设厅网站首页

web/2025/9/28 13:11:09/文章来源:
阿里云服务器建网站,贵州省建设厅网站首页,小学学校网站模板,怎么做关于狗的网站分布式锁概念 为什么使用分布式锁 假设有这样一个场景#xff0c;双十一抢iphone15ProMax手机场景#xff0c;可以抢多台。操作数据库接口如下#xff1a; void reduceInventory(Long id,int count) {//1.拿到数量信息Product product mapper.selectById(id);//2.修改数量…分布式锁概念 为什么使用分布式锁 假设有这样一个场景双十一抢iphone15ProMax手机场景可以抢多台。操作数据库接口如下 void reduceInventory(Long id,int count) {//1.拿到数量信息Product product mapper.selectById(id);//2.修改数量信息int newCount product.getProductCount() - count;product.setProductCount(newCount);int i mapper.updateById(product);System.out.println(修改成功- i);}在单个应用情况下可以使用synchronized或者lock锁解决并发问题因为只有这一个应用可以调用这个接口。那么在微服务应用下呢多个请求 同时访问这个接口步骤1是可以同时执行的在同一时间可能拿到的数量是相同的假设A服务和B服务各有一个请求访问这个接口那么A应用要抢 5个B应用要抢1个这样就导致A应用要更新数据库的时候数量是95B应用要更新的数量是99不管谁先拿到数据库的锁都会后拿到数据库锁的 覆盖掉前面的数据导致数据不正确。那么如何解决这个问题呢答案就是分布式锁。 加分布式锁的本质就是保证步骤1和步骤2这个逻辑或者说这块代码无论有多少个并发请求必须保证同步执行。而且无论多少个服务都能通过 一个公用的组件来控制代码同步执行比如MySQL、Redis、zookeeper。任何一个服务都能访问到它而不是通过synchronized或者lock锁 因为每个服务的synchronized或者lock锁都是只有当前服务能访问不能实现服务之间的排他性。 分布式锁有三种实现方式 1. MySQL实现分布式锁 原理 在数据库层面加锁处理在一个线程修改数据查询数据的时候进行for update处理。这样其他线程在查询数据的时候就会阻塞必须等当前 线程处理完才能执行for update查询语句。 步骤 开启事务执行select * from table where id ? for update语句提交事务 问题 一旦有某个线程处理逻辑时开启了事务但是抛出异常了那么就会导致事务无法提交其他线程永远拿不到数据库锁导致死锁问题。 2.RedisRUA脚本实现分布式锁 原理 redis中有nx 和 ex操作其中nx表示当前key不存在时才执行成功返回0表示失败返回1表示成功ex表示过期时间。当加锁的时候执行nx操作如果当前有线程持有锁则设置失败返回0否则成功返回1.释放锁的时候执行del操作。ex可以防止死锁问题如果有个线程执行setnx操作了由于异常不执行del释放锁操作那么其他线程永远无法拿到锁。 要解决的问题 如何避免死锁问题 设置ex过期时间。 如何保证锁不会被其他线程释放 通过redis存储的value来控制将value作为线程的唯一标识只有当前线程的解锁标识和设置的value相同时才能删除当前key。 如何保证在释放锁时如何保证查询value值、必对value值、删除key操作的原子性 使用RUA脚本f(redis.call(‘get’, KEYS[1]) ARGV[1]) then return redis.call(‘del’, KEYS[1]) end return 0传入 客户端的唯一标识和redis拿到的value对比如果相同则删除key否则不删除。 如何评估redis中key的过期时间 使用守护线程 守护线程的特点是当主线程销毁时守护线程随机销毁在加锁的时候开启一个守护线程。守护线程的操作是在key将要失效的时候进行续期操作。这样做的好处是在解决了死锁问题的同时如果业务逻辑执行比较慢的话也不会导致锁自动失效的问题 Redis宕机问题 假设一个客户端在加锁的时候master实例突然宕机没有向slave同步数据其中一个slave升级为master,另一个实例重新获取锁这种情况下锁的安全性被打破。 redis作者提出RedLock概念 客户端记录当前时间戳T1,并设置锁的TTL时间在服务器创建5个redis实例非集群不存在数据同步问题。依次从5个redis实例去获取锁相同的key-value,获取锁时要设置网络连接和响应的超时时间该时间要小于锁TTL时间避免客户端死等。客户端记录最后一个获取锁成功的时间戳(因为有可能在五个Redis中有宕机发生就获取锁失败了)T2和获取锁成功的个数n,其中n要大于等于3半数以上节点获取重构且T2-T1要小于TTL才算获取成功。锁的时间为TTL - 取锁的时间如果加锁失败客户端向所有Redis实例发送解锁请求。 其中有三个要解决的问题NPC Network Delay: 网络延迟问题Process Pause: 进程暂停问题Clock Drift: 时钟漂移问题客户端服务器和Redis服务器时间不一致 3. Zookeeper实现分布式锁 Zookeeper分布式锁时基于临时顺序节点实现的. 要解决的问题 如何实现互斥性Zookeeper中的节点类似文件系统的目录结构当对其中一个节点加锁其他线程就不能再创建了。如何加锁解锁当客户端连接Zookeeper后创建节点断开连接删除节点如何解决高可用问题使用顺序节点watch机制当客户端加锁时会在目录下创建一个字子点并记录创建顺序节点然后判断创建的顺序节点是否为第一个节点如果是加锁成功如果不是watch上一个节点以此类推 如果加锁成功的客户端断开连接那么监听该顺序节点的客户端就可以去获取锁这样就减轻了高并发下的zookeeper压力实现高可用。 实现原理 创建临时顺序节点每个客户端访问zk会创建临时节点例如/locks下创建一个临时顺序节点。获取所有子节点并排序客户端通过getChildren获取/locks下的所有子节点并对这些子节点按照它们的序号进行排序。判断锁的拥有者客户端检查它创建的节点是不是排序后的第一个节点如果是则获取到锁如果不是则监视排序后的前一个节点。等待或者阻塞如果这个节点不是第一个客户端就会注册对前一个节点的监视器并进入等待状态直到前一个节点被删除释放锁。释放锁当客户端完成操作释放锁时会删除它创建的临时节点然后通知监视器上的等待节点。

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

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

相关文章

yii2框架做的网站有哪些在wordpress中 怎么把主题删掉

Java进阶十—JDBC 一.说明 用Java语言操作Mysql,首先需要学习Mysql MySQL入门教程-CSDN博客 二.JDBC的由来以及定义 JDBC是什么? Java数据库连接(Java Database Connectivity)简称JDBCJDBC是Java操作各数据库的一种规范,是Java语言中用来…

网站制作品牌有哪些汉沽网站建设

求解最大子序列和 tag: 数据结构与算法 最大子序列和问题: 给定序列A1, A2,... AN, 求最大的子序列和。 例如 :   对于序列4, -3, 5, -2, -1, 2, 6, -2, 最大序列和为11(4 -3 5 - 2 - 1 2 …

网站多久备份一次wordpress 小众软件 主题

web速览 1. 前端开发 概述: 前端开发是构建网站用户界面的过程,主要关注网站的视觉效果和用户体验。又称为客户端 技术栈: HTML(超文本标记语言):用于创建网页的结构和内容。CSS(层叠样式表&a…

网站产品原型图给wordpress添加引导页

yolov5 部署到rk3588 教程来自 yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程_yolov5 rknn-CSDN博客 1.通过android studio 部署代码在rk3588板子上运行代码 项目来源 rknn-toolkit2/rknpu2/examples/rknn_yolov5_android_apk…

建立网站的技术女生学网站建设好学吗

图表,是指将既得数据用图形的方式表示出来。在前文中我们介绍过如何使用Java程序来为Excel文档创建图表的方法。本文将通过使用Java程序来演示如何创建PowerPoint图表及为图表添加趋势线。趋势线的运用能够显示数据的变化趋势,同时能够帮助预测数据的未来…

做网站怎样建立服务器centos7.2 wordpress

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在 Golang 领域,并发发送 HTTP 请求…

做网站是先做后台还是前端软文写作要求

20. 公交线路上优化路径的查询 问题描写叙述 最短路径问题是图论中的一个经典问题,当中的Dijkstra算法一直被觉得是图论中的好算法,但有的时候须要适当的调整Dijkstra算法才干完毕多种不同的优化路径的查询。 对于某城市的公交线路,乘坐公…

眉县网站建设迪士尼网站是谁做的

背景 业务主要是通过A系统向B系统写入Kafka,然后B系统消费Kafka 将结果写到Kafka中,A进行消费最终结果。 在整个流程中,A写入Kafka会写入一张 record1表记录,然后在A消费最终结果的时候也记录一张record2表。主要改动的话 只是B系…

模板建站平台网站开发与推广计划书

2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现: 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要…

网站系统建设的主要意义长沙网站制作公司怎么做

png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0 此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如下目录,双击打开 pngPackerGUI.…

个人网站免费建设开发一个网站成本

单调栈分为单调递增栈和单调递减栈,通过使用单调栈我们可以访问到最近一个比它大(小)的元素。 🍊 单调递增栈:单调递增栈就是从栈底到栈顶数据是依次递增,通常是寻找某方向第一个比它小的元素。 &#x1f…

在线听音乐网站建设做好网站如何发布

在日常开发过程中,可能会出现一些 bug,导致 Mysql 数据库数据重复,需要删除重复数据,这里记录下删除重复数据的通用 SQL ,方便以后需要时查阅 1、写法一 DELETE t1 FROMtbl_name t1 INNER JOIN tbl_name t2 WHEREt1.…

深圳网站 商城制作wordpress购物系统

1 漏洞介绍 ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5.0&#xff08;<5.1.23&#xff09;中,开启debug模式&#xff0c;传入的某参数在绑定编译指令的时候又没有安全处理&#xff0c;预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式&#xff0c…

网站建设与推广完美结合wordpress怎么去掉主题的搜索框

java 观察者模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 …

网站建设做得好五金 东莞网站建设

背景 在机器学习的模型中&#xff0c;如果模型的参数太多&#xff0c;而训练样本又太少&#xff0c;训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题&#xff0c;过拟合具体表现在&#xff1a;模型在训练数据上损失函数较小&#xff0c;预…

想自己做网站做推广国家职业技能培训学校

Kotlin协程 背景定义实践GlobalScope.launchrunBlocking业务实践 背景 在项目实践过程中&#xff0c;笔者发现很多异步或者耗时的操作&#xff0c;都使用了Kotlin中的协程&#xff0c;所以特地研究了一番。 定义 关于协程&#xff08;Coroutine&#xff09;&#xff0c;其实…

抄袭别人网站唯美个人网站欣赏

摘要 风能是目前国内外应用较为广泛的一种绿色可再生能源&#xff0c;近几年我国风电产业的发展十分迅速。然后&#xff0c;越来越多的风力发电系统建并网&#xff0c;风力发电产生的电能受外界因素影响较大&#xff0c;具有一定的随机性和波动性&#xff0c;给并网后的电力系统…

南阳锐诚网站建设wordpress 新年插件

windows桌面调节分辨率即可&#xff1a;

个人网站建设规划实践报告上海seo博客

由于公司项目是在全屏下的&#xff0c;所有界面都是全屏&#xff0c;唯有弹出提示框的时候&#xff0c;会出现系统的导航栏&#xff0c;由于是平板&#xff0c;导航栏信息比较多&#xff0c;该项目属于永不让用户进入原系统的项目。所以有导航栏&#xff0c;就让用户有了机会进…

免费做爰网站建站专家

欧几里得算法&#xff1a; int gcd(int x,int y){if(y) return gcd(y,x%y);return x; }扩展欧几里得算法&#xff1a; 先说一个整体思路&#xff1a; 先求AxBygcd(A,B);的一个解x&#xff0c;y 然后我们可以求他的通解 然后求AxByC的通解 我们先看看怎么求AxBygcd(A,B);的一…