作者回复: 是的,okCache还有优化空间,锁的粒度还可以细化。但是目前对于SessionServer来说,它的性能已经足够了,瓶颈已经不在Cache层,而是在网络传输/序列化层,所以单独优化okCache对提升SessionServer总体性能影响不大。
作者回复: 看后面的代码样例: private Map<K, Node<K, V>> map; 这里的Node节点是作为值Value存在Map中的,前面的K是Key,如果Key有hash冲突,那么根据Java中的HashMap做法是会用链表法来存储key冲突的Value(也就是Node)。
作者回复: 请看代码实现: https://github.com/spring2go/okcache/blob/master/src/main/java/com/spring2go/okcache/impl/SegmentAccessQueue.java SegmentAccessQueue扩展自AbstractDeque,对很多方法进行了重载,实现复杂度是O(1)的。
作者回复: SessionServer主要用于集中存放用户的Web Session会话数据。SessionServer的设计挑战在高性能/高可用/可扩展性。它的高性能设计采用内存LUR缓存 + 可持久化缓存两级缓存机制。后台DB的主要作用是备份,通过后台DB可以实现故障恢复,保障高可用性。SessionServer通过客户端浏览器cookie记住SessionServer IP地址的方式,可以实现简单的集群按需扩展。