分布式数据库
分布式锁在分布式系统中,如何保证多个进程或线程之间对共享资源的访问互斥性和并发性?在分布式锁的情况下,还是需要单机锁的,可以减少对同时加锁的并发量,减轻中间件的压力。没有抢到锁怎么处理?自旋,性能差。事件通知回调最好。
如何保证多个进程或线程之间的互斥性和并发性?在一个分布式系统中,多个进程或线程需要对共享资源进行读写操作,如果不加限制,可能会导致数据不一致或者出现竞态条件。因此,需要引入分布式锁来控制对共享资源的访问。
MySQL实现分布式锁的一种常见方式是使用InnoDB的行级锁和SELECT … FOR UPDATE语句。简单,使用方便,不需要引入Redis、zookeeper等中间件。但不适合高并发的场景,db操作性能较差,有锁表的风险。具体步骤如下:
创建一个名为mutex的表,该表只有一个名为name的列,用于存储锁的名称。例如:1234CREATE TABLE mutex (name varchar(128) NOT NULL,PRIMARY KEY (name)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
当需要获取锁时,使用SE
...