Nginx反向代理+Tomcat集群+Redis非关系数据库

1、nginx
1.1、概念
反向代理web服务器,作用于服务器,管理多个服务器
多进程,多个工作进程,一个主进程
目的:单节点故障,实现负载均衡,load balance,非 阻塞,解决大客户量并发请求问题。
1.2、代理
正向代理:作用于客户端
反向代理:作用于服务器,客户端不知道反向代理服务器的存在。
1.3、单节点故障
大并发请求下,服务器只有一个,如果服务器挂起,单节点发生故障,整个就不能正常运行了。
解决方案:配置服务器集群,使用nginx,通过IP管理多个tomcat服务器。
2、模拟伪集群
2.1、解压两个tomcat,分别在两个tomcat的conf目录下的serve.xml文件配置不同的端口,默认是8080、 8005、 8009。
2.2、修改nginx的nginx.conf配置文件,实现负载均衡
服务器集群配置
nginx不能处理jsp页面,交给tomcat处理。
代码参数

#集群配置
upstream test {
    server localhost:8080 weight=1;
    #服务器配置,weight是权重,权重越大,分配的概率就越大
    server localhost:8081 weight=1;
	}
	#当前的nginx配置
	server {
    listen 80;
    server_name localhost;
		location / {
			proxy_pass http://test;#test与集群名称保持一致
		}
	}
	2.3、运行
				tomcat :运行startup.bat文件
				nginx:运行 start nginx.exe
							关闭	nginx.exe -stop
	问题:两台服务器的数据不能同时共享,比如一台服务器挂起后,死掉的服务器里的信息怎么办?另一台服务器如何获取信息?
	解决方案:每台服务器登录成功后,都会各自有一个session会话,只要session共享,便可解决
	那么session如何达到共享?
	session复制,后端统一存储,找一个中间件将session存起来,这个中间件事非关系数据库Redis,这时tomcat作为客户端,Redis作为服务器。

3、Redis实现session共享
3.1、首先tomcat需要配置,
在tomcat的lib目录下加入三个session的jar包,分别是commons-pool2-2.2.jar jedis-2.5.2.jar tomcat-redis-session-manager-2.0.0.jar
tomcat的conf/context.xml添加配置

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
		<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
		host="localhost"
		port="6379"
		database="10"
		maxInactiveInterval="60"/>
	3.2、安装Redis  (Redis的端口是6379)
			启动:redis-server redis.windows.conf
			关闭:shutdown

单节点故障已解除,需要同时启动tomcat、nginx、Redis
nginx、tomcat、Redis集群中,Redis处理了两件事情,session共享,缓存。
1、缓存的问题,缓存穿透和击穿
缓存处理流程:
1、前台请求,后台先从 缓存中取数据 ,取到后直接返回。
2、取不到时从数据库中取,数据库取到更新缓存,别返回结果。
3、数据库也没取到,直接返回空结果。

你可能感兴趣的:(redis,nginx,tomcat)