如何1分钟实现一个分布式锁?(第26讲)
如何1分钟实现一个分布式锁?(第26讲)
《架构师之路:架构设计中的100个知识点》 26.互斥的内核,分布式锁
什么时候要做互斥?
多个访问方,对同一个资源进行操作,要做互斥。
实现互斥的核心是什么?
需要利用一个多个访问方【同时】能够访问到的【锁资源】来实施互斥的。
案例1:同一个进程内,多个线程,怎么做互斥?
典型场景:
生产者消费者对同一个queue进行操作。
如上图所示,在同一个进程空间内,设定一个所有线程都能够访问到的flag,或者锁变量,就能实施互斥。
大家一起抢锁变量,抢到的线程操作队列,操作完之后释放锁变量。
案例2:同一台机器上,多个进程,怎么做互斥?
典型场景:
手机上多个APP对同一个日志文件进行写入。
如上图所示,在同一台机器上,设定一个所有进程都能够访问到的锁资源,就能实施互斥。更具体来说,机器上文件系统里inode锁。
大家一起抢inode锁,抢到的进程获得文件的操作权,操作完之后释放inode锁。
案例:多台机器的分布式环境下,多个进程,怎么做互斥?
典型场景:
多个微服务对同一个资源进行操作。
如上图所示,在分布式环境下,设定一个所有微服务都能够访问到的锁资源,就能实施互斥。
比如,可以setnx一个redis中key值,哪个微服务设置成功,就获得资源的操作权,操作完之后释放key值,让其他微服务再来抢。这,就是一个最简单的分布式锁。
总结
1. 如何实施互斥:需要利用一个多个访问方【同时】能够访问到的【锁资源】来实施;
2. 多个线程互斥,可以利用进程空间里的锁资源;
. 同一台机器上的多进程互斥,可以利用机器上的锁资源;
4. 分布式环境下的多进程互斥,可以利用布式环境下的锁资源;
知其然,知其所以然。
思路比结论更重要。
补充阅读材料:
《用redis实现分布式锁》
/
资料来源,redis。
本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2024-12-20,如有侵权请联系 cloudcommunity@tencent 删除分布式微服务分布式锁进程线程#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 7 条评论) |
本站网友 恐尖症 | 3分钟前 发表 |
案例1:同一个进程内 | |
本站网友 河池房屋出租 | 21分钟前 发表 |
分享自 | |
本站网友 十年生死两茫茫 | 20分钟前 发表 |
哪个微服务设置成功 | |
本站网友 支票是什么 | 29分钟前 发表 |
如上图所示 | |
本站网友 蓝田瑶族风情园 | 3分钟前 发表 |
可以利用进程空间里的锁资源;. 同一台机器上的多进程互斥 | |
本站网友 博远 | 9分钟前 发表 |
抢到的线程操作队列 |