正常请求:客户端(发送请求)——》服务器(接收请求并获取数据)——》数据库(获取数据给服务器)——》服务器(拿到数据返回到客户端)——》客户端(接收数据前端显示);
负载均衡原理:客户端(发送请求)——》服务器(nginx)(接收请求转发给服务器)——》服务器A(接收请求并获取数据)——》数据库(获取数据给服务器)——》服务器A(拿到数据返回到客户端)——》客户端(接收数据前端显示);
理解:
负载均衡即分发请求,当发送请求给服务器A后,A将请求转发给B或者C,然后由B或者C处理获取返回数据给客户端,Nginx转发条件默认轮询;
优点:
1、客户端无感觉,所有基础配置均在服务器中完成
2、处理请求高并发,请求由不同的服务器负载,降低服务器崩溃几率
3、服务器暴露在外的只有Nginx的服务器ip,转发的目标服务器不会暴露
缺点:
1、成本增加(负担不起那是你的问题,不是程序的)
2、由于每次请求转发的服务器都可能不一样,所以Session中存储数据无法每次都请求到
即:常见的登录用户数据不能存到Session中,(适用于所有服务器缓存)
解决方式:可将常用数据存入Redis中、iphash等。。。(暂时只知道这一种,有其他的方式欢迎留言讨论)
Nginx负载均衡配置:
#设定负载均衡的服务器列表
upstream tomcat {
server ip:端口号;
}
//例子:
upstream tomcat {
server 127.0.0.1:8080;