分布式session管理之存储

分布式session的一种处理方式是集中存储和管理,通常可以采用缓存(redis等),考虑单点问题可以考虑双写备份。

在分布式应用中,如何保证session的并发处理是分布式session的重要问题之一。


这里我们分析一种解决方案:

1. 存储工具

ThreadLocal<T>,它是一个辅助存储的工具。

ThreadLocal中的基本存储结构是ThreadLocalMap,其中的基础对象为:WeakReference<T>

WeakReference(弱引用)指当需要某个指向某对象的引用,但又不影响此对象的垃圾收集,应该使用此对象代替一般的 reference。即,这个对象在除了WeakReference以外没有其他引用指向时,可以被垃圾回收,此时弱引用会变为null值。

ThreadLocalMap使用和普通Map相同的方式,只是每个元素都是WeakReference的子类。保证线程回收时,对象能够被垃圾回收。


ThreadLocal中的ThreadLocalMap是被注入存储到Thread中的。ThreadLocalMap的key是ThreadLocal本身(属性进行某种运算得到),而value是不同的ThreadLocal对应的set方法设置的值。每个Thread只会有一个ThreadLocalMap。需要注意的就是,ThreadLocal不是一个存储结构,也不会包含存储结构。所以ThreadLocal可以理解为一个帮助线程存储数据的工具类。

2. 存储

 存储可以选取k-v存储方案,利用框架自身工具获取唯一ID为Key,存储相应数据即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值