正向代理:
A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以说是正向代理,王老师代替A同学办这件事,这个过程中,真正借钱的人是谁,马云是不知道的,这点非常关键。
我们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些科学上网工具扮演的就是典型的正向代理角色。用浏览器访问http://www.google.com时,被残忍的block,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。
反向代理:
大家都有过这样的经历,拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。
反向代理隐藏了真实的服务端,当我们请求ww.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,ww.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。
两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端
apache官方支持1000个并发
nginx官方宣称支持20万个并发
主流负载均衡服务器:nginx,LVS,Haproxy
1、Nginx配置文件位置
/usr/local/nginx/conf/nginx.conf
查看nginx配置文件:
worker_processes 1; → 工作的进程,进程工作模式
在配置文件中,加入启用异步IO的语句:
events {
use epoll;#启用异步IO → nginx性能比apache性能好的主要原因,很大程度上提高了并发
worker_connections 1024; → 单个进程最大的连接数量,允许该进程最大的排队是1024个请求,假设tps上万这一块需要配大些,否则其他的请求会被kill掉,可以根据最大tps来进行配置,此处测试机上修改为65535
}
nginx5种负载均衡的方式:
轮询 → 服务器配置一样的情况
权重 → 服务器有好有坏的情况,物理机上权重可以配置高些
ip hash → 相同用户的请求落在一台服务器上,通过ip进行hash运算,解决用户session共享的问题(apache可以配置session共享)
url hash → 需要第三方插件,相同的url请求落在一台机器上,按照请求的url进行hash运算,请求量多的请求,配置服务器集群,机器好些,多些
fair hash → 需要第三方插件,根据服务器的负载压力进行分发,响应时间短,服务器承受压力小,根据服务器响应时间给请求,用户感知好些
在配置文件中加入负载均衡语句:
upstream mysvr { → 此处使用的是轮询的负载均衡方式
server 127.0.0.1:8080 weight=10; → 没有端口号默认是80端口
# server 127.0.0.1:8088 weight=10; → weight权重,默认权重为1,访问次数如果是20次,那么分别落在8080和8088上的次数都是10次
}
参考博客:http://www.cnblogs.com/andashu/p/6377323.html#undefined
tomcat8以上支持异步
2、平滑重启
到1的目录下:./nginx -s reload
apache修改配置文件,需要停止服务再重启
nginx一个优点平滑的容器:
/usr/local/nginx/sbin/nginx -s reload → 平滑重启
重启前走老的配置文件,重启后,请求按新的配置文件进行处理