负载均衡中的session保持

什么叫负载均衡中的session保持

当咱们须要作负载均衡时,服务端确定有多台服务器,用户每次请求进来,会根据负载均衡算法被分配到某一台机器上,假设用户须要进行一段连续操做时,在第一台机器登录后,下一个操做被安排到了另外一台机器,若是没有作会话同步,那这台机器确定没有他以前的一些操做信息,如登录状态等,因此负载均衡下的session保持就变得不简单了。redis

解决的方法

ip_hash

未来访者IP进行HASH后分配到对应的机器上,这样保证同一个IP会一直在一台机器上,这样session就不会由于换机器而断。算法

缺点:数据库

  • 多个客户端共用一个IP时,那被分配到的服务器就惨了。服务器

  • 一个客户端并发太大时,对接收他请求的服务器也是压力。cookie

  • 若是某台服务器挂了,那一堆分配到这台机器的请求就都跪了。session

存session

把session存下来,这样每台服务器都能从公共存储中的session来获取客户端状态,保证会话的延续。并发

存数据库

占用数据库资源,高并发时,数据库瓶颈。负载均衡

存文件里

高并发时硬盘I/O性能是瓶颈。memcached

存Memcached/Redis

是挺快的,但由于是在内存里,宕机就没了,session太多时,老的session就会被删。高并发

利用cookie

第一次请求时,分配完服务器后,负载均衡器给response写个cookie,把给它的机器记下来,下次来了仍是那台服务器接客。
cookie的插入和取出分析,都是在负载均衡器中进行的,客户端和服务器都不知道。

会话复制

就是把每一个服务器节点都复制一份全量的session,没研究过,不过一听就感受不太靠谱。

总结

把一个用户捆在某一台服务器上的作法能够叫作会话保持;每台机器都存一个相同发复制品,叫作会话复制;把会话放一个共同地方,全部服务器都从这取,叫会话共享。

会话保持方案指定了机器,其实负载也就不均衡了,并且若是某台服务器宕机了,那这台机器的session也就都没了,新请求被分到别的机器,还得重头来。 会话共享方案还算靠谱。

相关文章
相关标签/搜索