session共享使用场景 sessionstorage在什么情况下会共享?
sessionstorage在什么情况下会共享?
相同浏览器下,并且是同源窗口(协议、域名、端口一致),不同页面可以共享localStorage值,通过跳转的页面可以共享sessionStorage值。
最初的时候误认为只要是同一网站下所有页面共享sessionStorage,后来发现事情不是这样的。页面是否共享sesstionStorage与打开有关系:通过点击链接或打开的新标签页与当前页面是同一个session;其它单独新开页面,会初始化一个新的session,即使同一网站下,他们也不属于同一个session。
在集群中部署多个服务器如何解决SESSION问题?
首先我们来分析这个问题,问题里出现了两个关键词:集群、Session,在回答问题之前我们先来聊聊这两个关键词。
集群说到集群首先给人的第一感觉是一大堆的服务器,其实这种想法是片面的,集群是指多台服务器上部署同一个业务,通俗说就是同一件事多个人来干。谈到集群就不得不说分布式。分布式是为了解决业务的高耦合性产生,将一个宠大的任务拆分成多个子任务部署在不同服务器上,这就是分布式。
Session由于HTTP协议是无状态的,浏览器的每一次访问对于服务器来说都是第一次访问,服务器就好像得了阿兹海默症(健忘症)。为了解决这个问题,Cookie和Session两兄弟应运而生。
用户访问Web服务器后,服务器生成了Session并将唯一标识符(SessionID)存放在客户端Cookie中,下次浏览器发出请求就会携带Cookie,服务器根据Cookie中的SessionID就去找对应的Session,找到了则代表会话成功。
集群部署时Session会出什么问题?因为Session默认是存储在服务器端的,而集群部署时用户的请求可能会被定向至不同的节点服务器上,所以可能第一次访问时保存了会话状态,第二次访问又被定向到其它节点(其它节点上并没有此用户的Session信息)上导致会话状态丢失!
如何解决集群环境下的Session同步问题?解决这个问题,我们只要确保所有节点服务器共用Session即可,方案有以下几种供大家选择:
1、粘性Session
同一个用户的请求分配到同一台服务器(通过一致性HASH算法实现),这样始终在这台服务器上寻找Session,称为粘性Session。
2、Session复制
将所有节点服务器上的Session保持同步复制状态,任何一台节点上产生新的Session都复制到其它节点服务器。
3、Session共享
将Session放在统一的地方集中管理(如:Session入库、存入Redis等),然后所有节点服务器统统从这个地方存取Session即可。
以上这几种解决方案应用最广的就是Session共享机制,既可解决Session同步问题又无需担心数据丢失。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。