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
然后就可以运行了