一,session共享
首先第一个要解决的就是sesison共享的问题,如下图。
![](https://img-blog.csdnimg.cn/img_convert/6c08383ebc49fc2b3ea057d048bef28d.webp?x-oss-process=image/format,png)
通常有两种解决方案,第1种是配置nginx的负载集群策略为ip_hash,第2种是将session存储到其它地方,一般推荐放到redis中。
第1种方案适合于临时解决或者是为了兼容历史项目,但是从应用服务器无状态的角度考虑,推荐把用户会话session放到redis,如下图。
![](https://img-blog.csdnimg.cn/img_convert/ef6db28d52df30102632d19e14c0c96b.webp?x-oss-process=image/format,png)
二,本地缓存
如果使用本地缓存,当从单体迁移到集群后,就会面临缓存同步的问题,如下图。
![](https://img-blog.csdnimg.cn/img_convert/16fa9bad45a6de97be27dd9cef645e0b.webp?x-oss-process=image/format,png)
最佳实践是上分布式缓存,既解决了缓存同步的问题,也释放了应用服务器的内存资源,如下图。