分布式锁相关
—————————————————————————————————————
1、在同一个JVM内部,大家往往采用synchronized或者Lock的方式来解决多线程间的安全问题,但是在分布式架构下,在JVM之间,那么就需要一种更加高级的锁机制,来处理种跨JVM进程之间的线程安全问题,解决方案就是:使用分布式锁。
2、分布式锁特点:
1)排他性:需要保证在不同节点的进程中的排他性。
2)高性能、高可用:分布式锁一般要求需要满足AP
3)支持阻塞和非阻塞:需要和JDK中提供的锁一样,可以支持阻塞和非阻塞,阻塞锁指的是在某个操作未完成时,一直锁定资源,其他节点上的线程无法获取到锁;非阻塞指的是在某个节点加锁成功之后,释放锁之前,如果其他节点获取锁,会立刻返回。
非阻塞就是其他线程获取失败时不等/阻塞,获取锁的方法直接返回。
4)可重入:同一个节点上的同一个线程如果获取到了锁之后,后面还可以再次获取到这个锁。
5)不能产生死锁:支持主动释放锁和超时自动释放锁。
3、常见实现方案:
1)Redis:使用Redission框架
2)Zookeeper:基于Zookeeper的API自己封装
3)数据库:MYSQL等关系型数据库通过乐观锁和悲观锁实现
4)ETCD:基于自身封装



