1.问题
并发量小,用户使用的少,一个jar包启动应用就够了,内部tomcat返回内容给用户
并发量慢慢增大了,这时候一台服务器满足不了我们的需求了
横向扩展,增加服务器,用户访问后再次访问由于session不共享,用户还要再次登录,就很不合理,因此可以通过代理服务器来帮我们转发和处理请求
架构: 没有什么是加一层解决不理的问题!
2.Nginx引入
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
优点:占有内存少,并发能力强。
- 正向代理:代理客户端
- 反向代理:代理服务端
Nginx负载均衡策略:
-
内置策略
-
轮询
-
加权轮询
-
iphash(ip哈希):对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理。可以解决session不共享问题,但是不推荐,一旦这台服务器崩了数据就消失。(推荐使用redis)
-
-
扩展策略:只有你想不到的没有他做不到的
动静分离:在我们的软件开发中有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则进行动静资源拆分,我们就可以根据静态资源的特点将其做缓存操作。
提高资源响应的速度:
3.Nginx的安装
3.1windows安装
nginx是跨平台的。
官网下载:http://nginx.org/en/download.html
解压放到没有中文的文件夹里,cmd启动:
3.2linux安装
whereis nginx #检查是否安装Nginx
[root@haodoop100 ~]# mkdir /usr/java
[root@haodoop100 ~]# cd /usr/java
[root@haodoop100 java]# ls
nginx-1.20.2.tar.gz
[root@haodoop100 java]# tar -zxvf nginx-1.20.2.tar.gz
yum -y install pcre-devel openssl openssl-devel #自动配置的时候报错,需要安装pcre
./configure #自动配置
make #执行make命令
make install #执行make install
whereis nginx #查看安装目录
[root@haodoop100 nginx-1.20.2]# cd /usr/local/nginx
[root@haodoop100 nginx]# ls
conf html logs sbin
[root@haodoop100 nginx]# cd sbin/
[root@haodoop100 sbin]# ./nginx
[root@haodoop100 sbin]# firewall-cmd --permanent --add-port=80/tcp
success
nginx常用命令:
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件(用得很多,但凡改了配置文件就要执行这个命令)
ps aux|grep nginx 查看nginx进程
4.实操
修改nginx.conf
upstream lb{
server 127.0.0.1:8080 weight=3;
server 127.0.0.1:8081 weight=1;
}
location / {
proxy_pass http://lb;
}