lnmp架构(八)——nginx +tomcat+memcache实现在tomcat中的session共享

一、什么是session

Session是指会话控制,是保存在服务器上一种机制,当客户端访问服务器的时候,服务器会把信息以某种形式记录在服务器上,恰恰和Cookie相反。

Session经常用于会话过程中保证一定状态的信息,比如,用户在登录的时候,需要浏览web应用程序,并且存储是在页面重新被加载的时候,Session始终保持着任何时间都可以在设备上进行访问,但是随着用户的增多,Session的服务器内存也要不断加大,Session也会使用持久方法的限制。

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

1.1 session的工作原理

http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你
在这里插入图片描述
当客户端向服务器发出请求的时候,服务器会保存一个session,当session第一次被启用时,同时也是在客户端上形成一个cookie文件,首次使用session_start()函数,并且PHP去加载已经储存的session变量,并且通过函数去注册变量,当脚本执行完毕后,会自动保存到session库中,已方便下次使用。

1.2 cookie和session结合使用

web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:

1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式

1.3 Nginx+tomcat+memcached

使用nginx作为前端服务器来实现tomcat负载均衡及高可用,同时基于jsp的动态特征,我们将引入memcache来保持网页在连接过程中的session保持,利用memcached把多个tomcat的session集中管理

图解:
在这里插入图片描述
客户端请求时nginx通过负载调度算法将请求调度至某一后端服务器;tomcat 把会话通过组播的方式复制到集群各节点;所有节点共享会话;

当memcached有两个时可以采用交叉存储,可以更好的避免单点故障

在这里插入图片描述

二、session共享具体实现

在上一篇博客中,我们已经实现了会话保持,但是仍旧出现问题,当一台tomcat服务器宕机,另一台服务器无法获取数据,造成数据丢失,现在我们就来解决这个问题。上篇博客只是介绍了一下cookie。

实验环境
该实验环境与上上篇博客一样,都是真机测试,server1lnmp主机,server2、server3为tomcat服务器,所以可以接着博客来做。

主机(版本:ip) 功用
虚拟机server1(rhel7.3:172.25.2.1) lnmp环境主机
虚拟机server2(rhel7.3:172.25.2.2) tomcat1服务器
虚拟机server2(rhel7.3:172.25.2.2) tomcat2服务器
真机(rhel7.3:172.25.2.250) 测试机

1、实现负载均衡和不轮询

(ip_hash,上篇博客中不轮询的实现是在nginx中加入了nginx-sticky-module模块实现的cookie绑定)

step1 编写测试页内容:

在server2中:

cd /usr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值