乐者为王

Do one thing, and do it well.

在Web应用中保存Session数据

保存在客户端

Cookie是一个很好的机制。有时候还可以使用隐藏的表单字段(hidden form fields)。

保存在服务器上

最自然的选择。问题是当不止一台前端服务器时,需要能支持Session复制(session replication)和故障转移(failover)的集群。不管哪个前端服务器收到请求,Session数据都在上面。问题是每次请求时可能都要有数据复制和故障转移的动作,影响性能。有个更简单的方法是Sticky session。即当客户第一次请求时,负载均衡服务器分配一个Cookie给客户,下次请求时就可以通过Cookie访问与上次相同的服务器,这样客户的Session数据就只要在单台服务器上。Sticky session也有两个问题:单点故障和负载均衡可能不是最优。

保存在数据库中

通常最后数据库成为了性能瓶颈。

使用独立的Session存储

可以考虑Memcached或Redis。

Comments