From 40051867250f8b3e5a23c6dd85a32f3abf497be8 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Tue, 27 Mar 2018 17:12:55 +0800 Subject: [PATCH] auto commit --- ...351\227\256\351\242\230\345\210\206\346\236\220.md" | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git "a/notes/\345\210\206\345\270\203\345\274\217\351\227\256\351\242\230\345\210\206\346\236\220.md" "b/notes/\345\210\206\345\270\203\345\274\217\351\227\256\351\242\230\345\210\206\346\236\220.md" index ebe10ae4..d7433c3c 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217\351\227\256\351\242\230\345\210\206\346\236\220.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217\351\227\256\351\242\230\345\210\206\346\236\220.md" @@ -186,7 +186,9 @@ Java 提供了两种内置的锁的实现,一种是由 JVM 实现的 synchroni **(一)基于 MySQL 锁表** -该实现方式完全依靠数据库唯一索引来实现。当想要获得锁时,就向数据库中插入一条记录,释放锁时就删除这条记录。如果记录具有唯一索引,就不会同时插入同一条记录。这种方式存在以下几个问题: +该实现完全依靠数据库的唯一索引。当想要获得锁时,就向数据库中插入一条记录,释放锁时就删除这条记录。如果记录具有唯一索引,就不会同时插入同一条记录。 + +这种方式存在以下几个问题: 1. 锁没有失效时间,解锁失败会导致死锁,其他线程无法再获得锁。 2. 只能是非阻塞锁,插入失败直接就报错了,无法重试。 @@ -245,11 +247,11 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点表示 **(六)羊群效应** -在步骤二,一个节点未获得锁,需要监听监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知,而我们只希望它的下一个子节点收到通知。 +在步骤二,一个节点未获得锁,需要监听监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知(羊群效应),而我们只希望它的后一个子节点收到通知。 # 五、分布式 Session -在分布式场景下,一个用户的 Session 如果只存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器上,该服务器没有保存用户的 Session,就可能导致用户需要重新进行登录等操作。 +在分布式场景下,一个用户的 Session 如果只存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器上,该服务器没有用户的 Session,就可能导致用户需要重新进行登录等操作。

@@ -305,7 +307,7 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点表示 - [负载均衡算法及手段](https://segmentfault.com/a/1190000004492447) - [Redirection and Load Balancing](http://slideplayer.com/slide/6599069/#) - [Session Management using Spring Session with JDBC DataStore](https://sivalabs.in/2018/02/session-management-using-spring-session-jdbc-datastore/) -- [Apache Wicket User Guide - Reference Documentation](# Apache Wicket User Guide - Reference Documentation) +- [Apache Wicket User Guide - Reference Documentation](https://ci.apache.org/projects/wicket/guide/6.x/) - [集群/分布式环境下 5 种 Session 处理策略](http://blog.csdn.net/u010028869/article/details/50773174?ref=myread) - [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) - [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) -- GitLab