标签:一致性 数据 zookeeper epoll epo 分布 就是 必须 加锁
1.什么是分布式
分布式不是指必须把应用程序部署到不同的服务器
只要存在应用程序跨JVM就是分布式
2.什么时候使用分布式锁
应用之间存在共享资源的竞争就要使用分布式锁
3.什么时候使用分布式事务
需要保证数据库中的数据的一致性的时候,就需要使用分布式事务
4.都有哪些分布式锁
4.1. 数据库-乐观锁
4.2. redis分布式锁(单线程)-互斥锁(epoll模型 因为是单线程,所有吞吐量不会达到太高)
4.3. zookeeper分布式锁--互斥锁 共享锁(不了解 没用过)
5.redis分布式锁遇到的问题
5.1 死锁问题:加锁后出现异常没有来得及释放锁或者释放锁的时候出现异常
解决方案:1.对锁加上过期时间,2加锁后的代码加上try catch finally(finally里释放锁)
5.2 线程B的锁被线程A删除了:线程A拿到锁,但是执行时间过长导致线程A锁过期了,线程B进来拿到锁,这时候线程A执行完释放锁释放的就是线程B的
解决方案:保证线程自己创建的锁由自己释放,每次创建锁的时候保存线程的唯一标识
//笔记未完待续
标签:一致性 数据 zookeeper epoll epo 分布 就是 必须 加锁
原文地址:https://www.cnblogs.com/zzq919/p/13396522.html