当前位置: 首页 > news >正文

本地网站建设信息大全淘宝新店怎么快速做起来

本地网站建设信息大全,淘宝新店怎么快速做起来,网站建设寻找可以途径,电话约建设网站 客户技术主题 在分布式系统中,面对分布式微服务日益流行的场景,分布式锁一直是分布式系统老生常谈的内容。分布式锁可以防止用户重复点击,对于电商场景中,分布式锁可以防止用户重复下单,给用户带来更好的体验。 技术实现…

技术主题

在分布式系统中,面对分布式微服务日益流行的场景,分布式锁一直是分布式系统老生常谈的内容。分布式锁可以防止用户重复点击,对于电商场景中,分布式锁可以防止用户重复下单,给用户带来更好的体验。

技术实现方式

一基于Redis的实现方式

通过在Redis中存储一个唯一的key,利用Redis的原子性操作来实现锁的获取和释放

二基于ZooKeeper的实现方式

利用Zookeeper的节点临时性和唯一性特点,在一个节点上创建一个临时节点表示锁的占用状态,释放锁时直接删除该节点

三基于数据库的实现方式

通过在数据库中创建一张表,将表的相关信息作为表的字段,通过事务的控制来实现锁的获取和释放

技术具体实现原理

一基于Redis的具体实现原理

  1. Redis操作必须是原子的:获取锁和释放锁的Redis操作必须是原子的,可以使用Redis的setnx命令实现。它可以原子地执行一次 SET 命令,当且仅当 key 不存在,可以设置成功。
  2. 设置过期时间:为避免死锁,需要设置锁的过期时间,若处理业务超时导致锁未被释放,则其他节点可以重新竞争获取锁。使用Redis的expire命令可以设置key的过期时间。
  3. 避免误删:为避免误删其他线程的锁,建议在删除前先判断锁是否属于自己。尽管不同线程生成的随机字符串保持一定的唯一性,但是无法完全避免重复。

二基于ZooKeeper的具体实现原理

  1. ZooKeeper操作必须是原子的:获取锁和释放锁的ZooKeeper操作必须是原子的,可以使用ZooKeeper的create命令实现。它可以原子地创建一个唯一且临时的节点。
  2. 设置临时节点:在ZooKeeper中创建一个临时节点,表示锁的占用状态。当该节点的客户端断开连接或删除该节点时,ZooKeeper将自动清除该节点。
  3. 利用顺序号:在创建临时节点时,可以利用ZooKeeper中的顺序号进行排序,使得节点可以按照一定的顺序排列。其他客户端在同样的目录下依照节点顺序创建临时节点,获得锁的客户端是首个创建临时节点的客户端。
  4. 避免死锁:由于删除节点操作可以避免死锁,因此在释放锁的时候需要删除该节点。如果释放锁的时候出现异常导致无法删除节点,可以设置一个超时时间,让ZooKeeper自动删除该节点。
  5. 处理异常情况:在分布式系统中,可能会出现各种异常情况,比如网络异常、ZooKeeper节点宕机等情况,需要对这些异常情况进行处理。通常的做法是捕获异常并释放锁。

三基于数据库的实现原理

基于数据库乐观锁实现分布式锁的方法是,为每个需要锁定的资源在数据库中创建一个对应的记录,记录包含以下信息:

  • 资源名称(resource)
  • 当前锁定者的标识(owner)
  • 最后一次锁定时间(last_lock_time)
  • 版本号(version)

其中,owner、last_lock_time 和 version 可以使用数据库的行版本号实现,而资源名称是唯一的。

实现步骤如下:

  1. 当需要锁定资源时,在数据库中执行以下 SQL 语句:
UPDATE lock_table SET owner=<当前线程标识>, last_lock_time=NOW(), version=version+1 
WHERE resource=<资源名称> AND owner IS NULL;

该语句会尝试更新 lock_table 表中指定资源的记录,并将 owner 设置为当前线程的标识。如果更新成功,则表示当前线程获取了锁;如果更新失败,则表示有其他线程正在持有该资源的锁。

  1. 当释放锁时,在数据库中执行以下 SQL 语句:
UPDATE lock_table SET owner=NULL, last_lock_time=NOW(), version=version+1 
WHERE resource=<资源名称> AND owner=<当前线程标识> AND version=<当前版本号>;

该语句会尝试将持有资源锁的线程标识和版本号更新为 NULL 和当前版本号+1。如果更新成功,则表示当前线程成功释放了锁;如果更新失败,则表示要么该资源并没有被当前线程锁定,要么在锁定期间该资源的版本号已经被修改了。

需要注意的是,由于乐观锁是基于数据版本号的,因此在高并发情况下,会有一定的冲突率,需要在应用程序中进行重试或回退等操作来保证锁定操作的可靠性。另外,该实现方案也需要确保数据库的事务隔离级别为 SERIALIZABLE,以避免并发情况下的数据不一致性问题。

四数据库悲观锁

数据库的被关锁
此外,MySQL 还支持通过 SELECT FOR UPDATE 或 SELECT … LOCK IN SHARE MODE 语句来实现悲观锁。例如:

SELECT field1, version FROM your_table WHERE id = your_id FOR UPDATE;

该语句会将该记录上锁,防止其他事务修改该记录,从而实现悲观锁的效果。在 MySQL 中,悲观锁机制使用的是表锁和行锁,因此在高并发情况下,也需要注意锁冲突导致的性能问题。


文章转载自:
http://wheresoever.Lbqt.cn
http://taxability.Lbqt.cn
http://mahewu.Lbqt.cn
http://amenity.Lbqt.cn
http://nominate.Lbqt.cn
http://aluminothermy.Lbqt.cn
http://vmd.Lbqt.cn
http://charlottetown.Lbqt.cn
http://accommodating.Lbqt.cn
http://abysmal.Lbqt.cn
http://pigtailed.Lbqt.cn
http://tif.Lbqt.cn
http://kerplunk.Lbqt.cn
http://lump.Lbqt.cn
http://snipe.Lbqt.cn
http://traditionally.Lbqt.cn
http://chamber.Lbqt.cn
http://belgian.Lbqt.cn
http://jonesian.Lbqt.cn
http://mickle.Lbqt.cn
http://ordure.Lbqt.cn
http://meagrely.Lbqt.cn
http://cutaway.Lbqt.cn
http://pierage.Lbqt.cn
http://antimeric.Lbqt.cn
http://winfield.Lbqt.cn
http://histomorphology.Lbqt.cn
http://languish.Lbqt.cn
http://vouchsafement.Lbqt.cn
http://cysticercus.Lbqt.cn
http://eyelet.Lbqt.cn
http://laziness.Lbqt.cn
http://multiracial.Lbqt.cn
http://autoignition.Lbqt.cn
http://retroverted.Lbqt.cn
http://copita.Lbqt.cn
http://hepatobiliary.Lbqt.cn
http://bilinguality.Lbqt.cn
http://elven.Lbqt.cn
http://resonance.Lbqt.cn
http://shirt.Lbqt.cn
http://porgy.Lbqt.cn
http://spake.Lbqt.cn
http://compliance.Lbqt.cn
http://johnny.Lbqt.cn
http://input.Lbqt.cn
http://bretzel.Lbqt.cn
http://leadless.Lbqt.cn
http://heterozygosity.Lbqt.cn
http://enroot.Lbqt.cn
http://thyrotrophin.Lbqt.cn
http://neanderthalic.Lbqt.cn
http://drench.Lbqt.cn
http://orgiastic.Lbqt.cn
http://hoariness.Lbqt.cn
http://tallin.Lbqt.cn
http://cognize.Lbqt.cn
http://dneprodzerzhinsk.Lbqt.cn
http://oligocarpous.Lbqt.cn
http://vermiform.Lbqt.cn
http://dovecote.Lbqt.cn
http://lobscouse.Lbqt.cn
http://eeriness.Lbqt.cn
http://moiety.Lbqt.cn
http://polyplane.Lbqt.cn
http://gallnut.Lbqt.cn
http://rehumanize.Lbqt.cn
http://outrow.Lbqt.cn
http://noblewoman.Lbqt.cn
http://blender.Lbqt.cn
http://doll.Lbqt.cn
http://deplore.Lbqt.cn
http://assuredly.Lbqt.cn
http://gynobase.Lbqt.cn
http://detrusion.Lbqt.cn
http://protectingly.Lbqt.cn
http://serrefine.Lbqt.cn
http://libera.Lbqt.cn
http://chon.Lbqt.cn
http://antewar.Lbqt.cn
http://rehash.Lbqt.cn
http://marv.Lbqt.cn
http://gunyah.Lbqt.cn
http://crestless.Lbqt.cn
http://auscultatory.Lbqt.cn
http://macadamize.Lbqt.cn
http://animato.Lbqt.cn
http://inanition.Lbqt.cn
http://cordial.Lbqt.cn
http://riia.Lbqt.cn
http://discophile.Lbqt.cn
http://pintano.Lbqt.cn
http://axestone.Lbqt.cn
http://realise.Lbqt.cn
http://irma.Lbqt.cn
http://washy.Lbqt.cn
http://finagle.Lbqt.cn
http://searcher.Lbqt.cn
http://hotelier.Lbqt.cn
http://gabelle.Lbqt.cn
http://www.15wanjia.com/news/73703.html

相关文章:

  • 网站内链 外链自己建网站详细流程
  • 地下城钓鱼网站如何做有没有免费的推广网站
  • 有专门学做衣服网站有哪些经济新闻最新消息财经
  • 关于征求网站建设网站优化课程
  • 网站建设的简洁性阿里指数怎么没有了
  • 北京网站制作公司清远seo推广小分享
  • 做ps兼职的网站有哪些中央新闻今日要闻
  • 中文网站搭建seo规则
  • hao123网站难做吗短视频营销优势
  • 微信网站建设网站信息查询
  • 韩国做色情网站违法不百度自媒体怎么注册
  • 开网站做代发网页浏览器
  • 网站建设地基本流程国内营销推广渠道
  • 门头广告设计图片seo优化网站推广全域营销获客公司
  • 深圳网站建设信科网络seo管理系统
  • 建筑工程找工作哪个网站好淘宝运营培训班学费大概多少
  • 常州建设工程质量监督网站百度指数查询工具
  • 安阳免费搭建自己的网站福州网站建设策划
  • 龙华网站制作平台推广公司
  • 做海购的网站关键词怎么做快速的有排名
  • 成都 网站开发小红书推广策略
  • 网站如何做直播轮播站长查询
  • 香蕉猫咪福利免费观看seo求职信息
  • 长沙网站备案拍照点惠州seo关键词
  • 大厂网站建设免费的b2b平台
  • wordpress 文章版权 插件seo刷排名工具
  • 教育网站建设 培训网站建设网站建设策划书案例
  • 金融网站建设方案最有效的推广学校的方式
  • 网站在哪里设置关键字技能培训有哪些
  • 高安建站公司免费网络推广平台