在均衡负载中,为了保证不同均衡策略都能正确相应,需要处理web服务中经常遇到的session,均衡负载中session处理的几种思路:
1.不使用session,使用cookie替代,或者是单页面框架中在前端存储一个标识id一类的,不过这种做法安全方面有待商榷。nginx有sticky模块来根据cookie分配,haproxy也有类似策略。
2.在均衡负载中使用某种策略保证用户始终访问到同一台服务器,例如ip_hash等,不过仅适用一层均衡负载的时候,而且大多数情况下ip_hash不是很理想。
3.应用服务器实现session复制类似的机制,例如tomcat有自己的session复制共享机制,不过机器多的时候基本就在不停复制共享session了,没太大实用性。
4.自己实现session服务器,例如用redis来根据sessionID存储session,每次请求服务器都去取次session,暂时感觉最合适的做法。比较简单可以自己控制,session重度用户可以考虑使用tomcat-redis-session-manager这样的第三方库。
欢迎大神指教。