在利用Nginx+Tomcat实现负载均衡的时候,由于Nginx对不同的要求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,由于会涌现session不同步或者丢失的问题。为理解决session的问题,就引出了这里先容的Session共享的问题。
要让session跨域共享,须要办理三个问题:
1、通过什么方法来通报session_id?

2、通过什么方法来保存session信息?
3、通过什么方法来进行跨域?
实际上实现Session共享的方案很多,这里面先容3种。
第一种办理方案:ip_hash
在对应ngnix 中设置ip_hash,
便是根据要求的Ip地址的hash码,ngnix固定的把要求复制到同一台机器上.。
对应配置如下图:
不过利用ip_hash也存在一定问题,其会使流量不屈衡,负载均衡失落效。
而上风便是开拓非常便利,只须要配置一行代码。不过,在集议论况下不建议利用。
第二种方案:
利用tomcat自身的
事理便是将sesion在2台(多台)做事器间进行复制:
利用这种问题是:占用性能严重.这个紧张是在jvm中操作,严重影响内存利用
利用tomcat,利用组播(mulitcast)。
第三种:存储到第三方存储上 (redis/mongodb/mysql/oracle)
这种方案是目前主流的方案。
每一个要求过来,session都会创建一个独立的sessionId;
sessionId的创建可以根据任何规则.
然后将sessionId存放到cookie中.
关于利用redis 实现Session共享的代码实现,后面会先容。
后语:还有2天,2017年就结束了。也祝愿大家在新的一年里,身体康健,事情顺利,心想事成。
下篇预报:对付数据库大家知道的有Oracle或者mysql。对付其他类型数据数据库不太理解,下节有可 能先容下国产数据库:南大通用,金仓,神舟通用,达蒙,也可能先容下hadoop干系内容。
如果有感兴趣或者迷惑的知识点,可以评论或者私信我,我会准备干系内容,推出对应的文章。
已上内容,纯属一家之言,因本人能力一样平常,见识有限,如有问题,请不吝示正,感谢。
干系技能内容会持续更新,大家可随时互换,欢迎关注本头条号。