本文介绍: 什么是分布式锁“孤独被染上童话底色~”我们谈到“锁”这个概念,你一定会想到这一定是涉及到了线程安全的问题。当一个进程内的不同线程,需要访问同一资源(共享资源)时,如果进行不加锁,就会出现线程安全的问题。在分布式系统中,每个进程都是独立运行于一台独立的机器中的,当它们对共享资源进行访问时,如果不进行限制,也会出现类似的安全问题。但,之前的,仅仅运用于进程内的锁,不会再起任何作用,其次,分布式系统中多个进程间的执行顺序也具有不确定性。——前言什么是分布式锁。
“孤独被染上童话底色~”
我们谈到“锁”这个概念,你一定会想到这一定是涉及到了线程安全的问题。当一个进程内的不同线程,需要访问同一资源(共享资源)时,如果进行不加锁,就会出现线程安全的问题。在分布式系统中,每个进程都是独立运行于一台独立的机器中的,当它们对共享资源进行访问时,如果不进行限制,也会出现类似的安全问题。但,之前的,仅仅运用于进程内的锁,不会再起任何作用,其次,分布式系统中多个进程间的执行顺序也具有不确定性。
——前言
什么是分布式锁
在分布式系统中,涉及到的多个节点访问共享资源的问题时,也需要“锁” 来做互斥控制,避免类似“线程”安全的问题。但在分布式系统中使用的不再是普通的锁机制,诸如:java 的 synchronized 或者 C++ 的 std::mutex等。这样的锁都是只能在当前进程中⽣效, 在分布式的这种多个进程多个主机的场景下就⽆能为⼒了.
这个公共的服务器可以是Redis,可以是Mysql、ZooKeeper等组件,还可以 是我们⾃⼰写的⼀个服务。
分布式锁的实现
(1) 加解锁
(2) 设置过期时间
(3) 校验机制
(4) 原子性
引入lua脚本
(5) 看门狗机制
(6) 引⼊ Redlock 算法
小结:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。