23.JavaWeb-集群+Nginx+JMeter

1.集群概念

        平时用的服务是的并发量是有限的,像tomcat只有不到500的并发量,不能满足高并发的需求,因此就采用了集群的方法,用多个服务器

        当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器,系统无法自动决定用户的请求具体交给哪台服务器解决,因此要用到一个代理服务器-nginx

2.nginx

        Nginx (engine x) 是一个高性能、轻量级、占有内存少、并发能力强的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

2.1 代理服务器

        代理服务器是一种位于客户端和目标服务器之间的中间服务器。它充当客户端和目标服务器之间的中转,接收客户端发送的请求,并将其转发给目标服务器

2.1.1 正向代理

        正向代理(Forward Proxy)是一种代理服务器的部署模式,它代表客户端向目标服务器发起请求,并将目标服务器返回的响应返回给客户端。在正向代理模式下,客户端明确知道它正在与代理服务器进行通信。

        知道请求被哪个服务器处理,但是无法直接访问该服务器,需要借助代理服务器

2.1.2 反向代理

        反向代理(Reverse Proxy)是一种代理服务器的部署模式,它将客户端的请求转发给多个目标服务器,并将目标服务器返回的响应返回给客户端。与正向代理不同,客户端并不知道它正在与目标服务器直接通信,而是与反向代理服务器进行通信。

2.2 使用nginx

2.2.1 下载nginx

nginx: downloadhttp://nginx.org/en/download.html

2.2.2 启动nginx

        start nginx

 2.2.3 配置nginx.conf文件

worker_processes  1;  # 工作进程数,一般设置为服务器CPU核心数

events {
    worker_connections  1024;  # 每个工作进程的最大连接数
}

http {
    include       mime.types;  # 包含MIME类型配置文件
    default_type  application/octet-stream;  # 默认的MIME类型

    sendfile        on;  # 开启文件传输功能
    keepalive_timeout  65;  # 长连接超时时间

    server {
        listen       80;  # 监听端口号
        server_name  localhost;  # 服务器名称

        location / {
            proxy_pass http://balance;  # 反向代理到名为"balance"的上游服务器集群
        }

        error_page   500 502 503 504  /50x.html;  # 定义错误页面
        location = /50x.html {
            root   html;  # 错误页面的根目录
        }
    }

    upstream balance{
        server 127.0.0.1:9090;  # 上游服务器1的地址和端口
        server 127.0.0.1:9091;  # 上游服务器2的地址和端口
    }
}

         前端发送请求的目标端口要改成80,这是ngnix代理服务器的默认端口

nginx -s reload 重启nginx
nginx -s stop 关闭nginx
start nginx 启动nginx

2.3 负载均衡策略

        在负载均衡中,有多种策略可供选择,用于决定将客户端请求分发给哪个后端服务器

负载均衡策略 描述 适用场景
轮询(Round Robin) 按照服务器列表顺序逐个将请求分发给后端服务器 服务器性能相近的场景
IP哈希(IP Hash) 根据客户端的IP地址计算哈希值,将相同IP的请求分发给同一台后端服务器 保持会话的场景
最少连接(Least Connections) 将请求发送到当前连接数最少的服务器,实现负载均衡 后端服务器性能不均衡的场景
加权轮询(Weighted Round Robin) 根据服务器权重进行轮询分发,权重高的服务器获得更多请求 服务器性能不均衡的场景
加权最少连接(Weighted Least Connections) 将请求发送到当前连接数最少且权重高的服务器 服务器性能不均衡的场景
URL hash 根据请求的 URL 的 hash 值来分配服务器。该算法的特点是,相同 URL 的请求会分配给固定的服务器,当存在缓存的时候,效率一般较高。然而 Nginx 默认不支持这种负载均衡算法,需要依赖第三方库。

3.JMeter

        JMeter是一款功能强大的开源性能测试工具,用于测试Web应用程序的性能和负载。它可以模拟多个用户同时访问目标应用程序,并收集性能指标和结果,以评估应用程序在不同负载条件下的性能表现。

Apache JMeter - Download Apache JMeterhttps://jmeter.apache.org/download_jmeter.cgi        解压后,进入bin目录,使用jmeter.bat启动程序

3.1 创建线程组

3.2 配置请求

        配置需要进行测试的程序协议、地址、请求方式、请求路径和端口

3.3  添加请求头中的token

        然后就可以运行了