什么是session机制
1、
2、当请求服务器中的web容器的时候,它会自动给每个连接它的客户端生成一个sessionId值
3、当你获得sessionId后,那么容器会凸鹣沮北把你的sessionId值放到http协议里的cookie域下面的。当用户以后的每个请求都会让这个sessio荏鱿胫协nId值跟随cookie一起传递到服务器,服务器通过sessionId找到找到内存中存储的该用户的session内容,session在内存中的数据结构是一个map格式。
4、看来我们的sessionId是服务器容器给的放到cookie域下的,但是要在不同的服务器之间共享session话,可以采用不断的传递和复制在服务器之间。
5、同步的起初案例:java里的tomcat容器就是这种方式,当需要同步的web容器越多,那么web应用所承载的并发数量并没有因为服务器的增加而线性提升,当服务器数量达到一定的临界值后,web应用并发数量还会见少。还有早期的淘宝,就是讲session信息直接存储到浏览器cookie里,每次请求的时候,cookie信息就跟着http一起传递到web容器里,这样避免了web服务器之间session同步的信息的问题,但此方案不安全吗,但是它仅仅跟踪用户的状态,把session存在cookie里其实也没什么大不了的。
6、来自客户端的请求到达web server之前,可以用F5,就是一个用来做负载均衡的硬件设备,作用是讲用户请求均匀的分发到后韪汶萦燔台的服务器集群。当然也有软件的负载均衡解决方案就是::LVS。那这些负载均衡的设备有个能力是讲一个http请求从客户端到达最终的存储服务器之间可能经过很多不同的设备。比如把一个请求比作一个告诉公路上的一辆小骑车,这些设备叫做这些节点就是高速公路收费站,收费站都恩那个根据自已需求改变http报文内容,可以记住每个sessionId值对应的后台服务器,当一个请求带sessionId值的通过这些负载均衡设备时候会根据该sessionId值直接找到指定的web服务器,这就是session粘滞,此方法大大提高了服务器之间拷贝session的需要,但比村cookie效率低,对于网站的稳定性也有一定影响,比如某台服务器挂掉了,那么连接该服务器的回话也就失效啦。