前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式锁系列--01分布式锁入门介绍

分布式锁系列--01分布式锁入门介绍

作者头像
IT云清
发布2019-01-22 15:29:40
3920
发布2019-01-22 15:29:40
举报
文章被收录于专栏:IT云清IT云清
本系列主要介绍分布式锁相关内容及实现。本文主要介绍以下内容:
  • 1.分布式锁是什么
  • 2.分布式锁约束
  • 3.分布式锁实现方式

1.分布式锁是什么

分布式锁,是控制分布式系统中访问共享资源的一种方式,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。

在单机应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,我们用java内置的各种锁就可以解决这个问题,此时,所有的请求,都是在当前服务器的jvm中,共享变量在同一个内存中。

而在分布式环境下,我们要操作的变量,会处在不同的jvm中,在不同的内存中,不存在共享和可见性,这使得单机模式下的控制策略不再适用。

为了解决这个问题,我们需要一种,可以跨jvm跨服务的互斥机制来控制共享资源的访问,这就是分布式锁需要解决的问题。

2.分布式锁约束

分布式锁,需要满足以下几个基本的约束条件:

2.1互斥性

在任意时刻,只能有一个客户端持有锁;

2.2安全性

保证不出现死锁,在实际场景中,很有可能,一个客户端获取锁后,由于服务崩溃或者其他原因,导致锁没有释放,此时就会出现资源的死锁,所以,我们需要保证锁在任何情况下,都可以得到释放。

2.3对称性

加锁和解锁,必须是同一个客户端,解锁时,不能把别人加的锁给解锁了。

2.4高可用

提供锁服务的这个服务,自身必须高可用,需要考虑自身挂掉的可能性,不能因为自己挂掉了,导致系统无锁服务可用。

3.分布式锁实现方式

目前常见的有以下几种实现方式,后面会单独实现:

3.1基于数据库实现
3.2基于Redis实现(或Redisson实现)
3.3基于ZooKeeper实现(或Curator实现)

理论上讲,没有哪种实现方式,是完美的,是可以满足一切业务需求的,具体的技术选型,需要根据业务来做具体选择。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本系列主要介绍分布式锁相关内容及实现。本文主要介绍以下内容:
  • 1.分布式锁是什么
  • 2.分布式锁约束
    • 2.1互斥性
      • 2.2安全性
        • 2.3对称性
          • 2.4高可用
          • 3.分布式锁实现方式
            • 3.1基于数据库实现
              • 3.2基于Redis实现(或Redisson实现)
                • 3.3基于ZooKeeper实现(或Curator实现)
                相关产品与服务
                云数据库 Redis
                腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档