根据之前做好的配置,接下来考虑遇到的数据共享问题。
因为niginx将原本请求的一台机器分为了2台机器,那么如果当用户信息或者一些临时数据存储在
session中的话会数据时有时无,因为session存在服务端的,比如第一次在192.168.0.123存了
session,第二次在192.168.0.321登录的时候发现数据没得了。
那么我这里总结了几个解决方案,不足的地方希望大神指点下小弟。
因为cookie是存在请求用户客户端的。所以数据不会出现时有时无的症状,如果你session存的只是用户名,
登录状态这些小数据,那基本上肯定是够用。存的时候用户信息要加密,验证的时候解密对比啊。缺点就是
浏览器清理会被清理掉,而且存储重要数据安全性有问题。
可以在数据库里创建一个session表用来存储session数据。
我这里cookie只保存登录信息,数据库用来存储当前登录用户的一些其他信息。
其实已经有点像某些公司的中间件了,如果用户量巨大也可以单独一个服务器存储这些数据。
下面是我的数据表结构:
UserName就是属于哪个登录用户名的记录。
ip_hash负载均衡根据个人理解:例如多个用户通过nginx访问到了后端的服务器集群,这个时候
因为有不同用户,所以ip也不同,ip+hash算法计算的hash值都传到了服务器,nginx就记录了这
个ip和hash值,那么下次同一个ip过来还是会分配到这个服务器,那么如果当前ip的服务器挂了,
这个时候用户请求过来,session没有过期。那么是不是也会出现丢失的情况。
配置比较简单:
个人感觉第二种方案比较稳当。如果有更多方法,希望大神能指点一下。
原文:https://blog.51cto.com/15034497/2665562