我们在做登陆的时候,session怎么共享啊
session多端登录,就是保持session的一致性。由于session是唯一的,所以要保持session的唯一性,可以将session存放在一个地方,到时候大家取的时候,统一从一个地方取session,这样就保持了session的一致。
实现session的方法
其实就是将session存放在一个地方,大家存取就好了。至于其他都是附加的,原理就是酱紫。一般实现的方法有:
1)nfs文件共享系统,让不同项目访问同一个共享的文件。
2)存放在mysql。
3)存放在内存数据库,比如redis,memcache等。
4)基于cookie的共享。这个需要域名统一。
3关于redis的session共享,其他类似
1)phpini里面存放得有session的存放地址,可以将session的地址改成redis存放session的地址。sessionsave_path
但是一般这种服务器端会有访问控制。所以可以参考第二种方法
2)重写session,通过php代码更改session的存放路径什么的。php有相关的session重写的类。
如果是同域名,一般是借用sessionid(cookie)。
其实关键问题是session的数据保存的路径问题,在session里,可以设定N个tomcat,设定session保存的介质相同就可以了。 最好,可以考滤用数据库介质。
不存在websocket服务器间通信的概念。多服务器情景相当于一般B/S系统的多点负载均衡,关键问题确实是共享session,共享session的标准方案是通过session令牌从数据库或者统一的缓存服务器中存/取session,比如题主提到的Redis,而不是简单地利用java等语言/框架提供的基础session读写方案,那只适用于单服务器单站点。
不可以的。不过,可以通过变通的方法解决。具体过程如下: 1你可以使用在访问二级域名的时候,添加url参数。 2在访问二级域名所在的页面时,把参数保存到二级域名所属的程序的session中。
楼主这个叫做分布式session。
cookie和session要结合使用的,cookie里面保存域名和cookie的name,然后请求到服务器的时候,服务器通过这个cookie的name找到对应的session的数据。
所以问题就在于: session的数据放在哪里, 放数据库也可以,但是效率低。如果你放缓存,缓存技术你公司成熟不,稳定不,数据会丢失不。
如果是几千亿的访问量,肯定会有缓存集群的吧!
然后就是一些优化了,真正的难点是优化
0条评论