zoukankan      html  css  js  c++  java
  • 分布式锁实现原理

    1. 分布式锁

    假设3个线程访问一个文件资源,对这个文件更新或读取操作,可以通过synchronized或lock进行线程同步,解决多线程情况下并发问题。

    但是在分布式架构,都会是多模块独立部署不同机器,多进程情况下,怎么弄?
    比如3个系统,订单,发货,结算都要去操作同一个文件

    分布式锁
    1.通过数据库的方式解决

    create table lock(
    id
    methodname 唯一约束

    插入一条lock记录或得锁,删除这条lock这条记录,释放锁
    1.1 弊端,删除失败,其他的进程都获取不到这个锁了
    1.2 不是可重入锁,需要改造

    2. 通过zookeeper

    2.1 以树形结构存储数据
    locks下面插入节点,零时有序节点
    2.2 优势
    有一个watch会监控节点,一个节点失效,会被删除,会启用用下一个节点

    3. 基于redis

    3.1 命令setnx,只会在key不存在的情况下为可以设置值,并且返回0或1,存在返回1,谁先设置这个值,谁先获取这个锁

  • 相关阅读:
    HTTPS
    RPC
    2017.4.19上午
    2017.4.18下午
    2017.4.18上午
    2017.4.17下午
    2017.4.17上午
    2017.4.14下午
    2017.4.14上午
    2017.4.13下午
  • 原文地址:https://www.cnblogs.com/james0/p/9280457.html
Copyright © 2011-2022 走看看