做者 : Stanley 罗昊html
讲到并发数这个概念,想必各位应该都知道是什么意思,就是同时访问一个项目,就比咱们如今作的一些项目完工之后要放到公网环境下的时候,全部人都能用,好比,你上百度,同时别人也在上,因此有多少人同时在,又同时去处理,这就是所谓的并发数;java
tomcat的并发数大概在300左右,若是再多的话,它的访问速度就会变的很慢,这里值得提一下,虽然只有300,可是并发数仍是比较多的,什么概念呢?就死在一秒以内,甚至不到一秒,同时访问这个系统的并发量300左右,固然它也受限于网络带宽的问题;nginx
带宽越大,我在你这个网页上下载的速度也就越快,若是个人带宽只有一兆的话,那么个人下载速度也就几十KB,因此这些并发数,还受限于这写影响;spring
刚才我也说了,Tomcat的并发量大概也就300,同时连进来的人数若要超过这300,那么速度就会变得很是慢,会出现丢包的状况,至于什么是丢包我在这里就不详说了,各位能够自行百度;windows
怎么解决这个问题呢?浏览器
那么就用Nginx(静态资源服务武器)来解决这个问题;tomcat
nginx是一个很强大的高性能的wbe和反向代理服务器,它狙狗很是优越的特性:springboot
在链接高并发的状况下,Nginx是Apache服务器不错的替代品,而它的并发量在50000左右,简直没法跟tomcat相比,就不是一个数量级的;服务器
可是有一个疑问就是,那直接学或直接用Nginx不就完了吗,干吗还要学Tomcat、JBOSS....网络
Nginx是一个HTTP和反向代理服务器,Tomcat是应用服务器,可以运行java程序、执行jsp、serviet;
Nginx不行,它是来处理静态资源的,你往上面放一个静态的图片、视频、音频以及一个HTML,它能帮你处理,你往上面放一个java源代码,它就不能帮你处理了;
因此,Nginx跟Tomcat这些应用服务器没有任何冲突,Nginx的应用面,跟Tomcat简直就是两个应用面,他们之间没有任何冲突;
Ngxin下载网盘地址【windows】(腾讯微云):
连接:https://share.weiyun.com/5VfMTOP 密码:mf39a6
下载安装好后打开,咱们须要配置一些属性来作负载均衡👇
解压到指定文件夹后,咱们双击Nginx:
进去以后双击nginx.exe,运行便可【能够在系统资源管理器】中查看Nginx运行状态;
在conf文件中,双击nginx.conf使用记事本或者其余文本工具打开:
接下来咱们开始对它的配置文件进行一系列的解读;
点进去后,首先我声明一点,我不是作运维的,我是干开发的,因此我只会说一些对于咱们开发而言比较重要的一些配置;
第一部分:👇
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8888; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; }
首先,http是处理http协议的,setver算是一个节点,这表明其中一个服务,服务监听端口是8888端口,当你执行8888端口的时候,他就会自动帮你映射到你Nginx所在的根目录;
这个根目录是在我们的电脑上的Nginx安装目录:
在配置文件中能够清晰的看到,它映射到这个nginx根目录中的html文件夹:
而这里面的资源,你均可以经过8888来访问了;
好比我如今想访问我这里的一张图片,很简单,打开浏览器,直接输入端口8888,加上你的文件地址全目录便可【前提是你先启动Nginx】👇
地址栏输入👇:
这样就完成了静态资源的访问;
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的链接请求,而后将请求转发给内部网络上的服务器,并将从服务器上获得的结果返回给internet上请求链接的客户端,此时代理服务器对外就表现为一个服务器。
通俗点理解就是,当你访问一个页面,那个页面上确定有一些什么图片啊音频视频,当咱们访问这个网页的时候,至关于你发了两次请求,好比百度,你访问百度一次,又向它的内外服务器发了一次请求,而它的内网服务器就是nginx,它从内网服务器拿出你访问的一些图片,音频,从而能够看出,静态资源与动态资源是放在一个不一样的服务器上;
我访问百度,百度一看我要访问的是图片就是一些静态资源,那么,它就是把你的此次请求转发给静态资源服务器,获取图片后,响应给你;
因此,做为用户,你不知道你到底访问的是哪一台服务器;
经过反向代理机制能够作负载均衡;
先经过一张图大概了解一下:
咱们须要在配置文件中配置一下,首先,仍是在刚刚我在上面写的那个文件,用记事本打开,接下来,我将介绍第二个比较重要的配置👇:
#配置应用服务器的ip端口 http { upstream myproject { server 127.0.0.1:8081; server 127.0.0.1:8082; } server { listen 6565; server_name www.domain.com; location / { proxy_pass http://myproject; } } }
首先,这段代码在配置文件中不内置,须要本身手动添加进去,我大概介绍一下;
upstream是关键字来标识本身是一个配置反向代理的字段,不能够更改,后面的myspringboot能够随便更改;
后面的就是配置你的应用服务器集群,用来帮你代理的;
配置完成后重启才能生效;
直接在任务管理器结束Nginx进程,再开便可~
而下面的server就表明,经过6565来访问以上两个应用服务器季集群,从而达到,负载均衡;
今日感悟:
人的一切痛苦,本质上都是对本身无能的愤怒;