没有合适的资源?快使用搜索试试~ 我知道了~
nginx+tomcat.docx
需积分: 0 0 下载量 87 浏览量
2023-03-13
11:48:21
上传
评论
收藏 1.16MB DOCX 举报
温馨提示
试读
40页
nginx+tomcat.docx
资源推荐
资源详情
资源评论
1、 代理服务
代理服务可简单的分为正向代理和反向代理:
正向代理: 用于代理内部网络对 Internet 的连接请求(如 VPN/NAT),客户端指定代
理服务器,并将本来要直接发送给目标 Web 服务器的 HTTP 请求先发送到代理服
务器上, 然后由代理服务器去访问 Web 服务器, 并将 Web 服务器的 Response
回传给客户端。
反向代理: 与正向代理相反,如果局域网向 Internet 提供资源,并让 Internet 上的
其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务
就是反向代理. 反向代理服务器接受来自 Internet 的连接,然后将请求转发给内
部网络上的服务器,并将 Response 回传给 Internet 上请求连接的客户端。
1.2、 反向代理:Web 服务器的调度器
反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端的连接请求,
然后将请求转发给网络上的 web 服务器(可能是 apache、nginx、tomcat、iis
等),并将从 web 服务器上得到的结果返回给请求连接的客户端,此时代理服
务器对外就表现为一个服务器。
从上图可以看出:反向代理服务器代理网站 Web 服务器接收 Http 请求,对请
求进行转发。而且 nginx 作为反向代理服务器可以根据用户请求的内容把请求
转发给后端不同的 web 服务器,例如动静分离,再例如在 nginx 上创建多个虚
拟主机,这样就成功的做到了在浏览器中输入不同域名(url)的时候访问后端
的不同 web 服务器或 web 群集。
1.3、 反向代理的作用
①保护网站安全:任何来自 Internet 的请求都必须先经过代理服务器
②通过配置缓存功能加速 Web 请求:可以缓存真实 Web 服务器上的某些静态
资源,减轻真实 Web 服务器的负载压力
③实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务
器的负载压力
2、 Nginx + Tomcat 构筑 Web 服务器集群的负载均衡
2.1、 什么是 nginx
2.1.1、 nginx 简介
Nginx 是一款轻量级的网页服务器、反向代理器以及电子邮件代理服务器。因它
的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx
(发音同 engine x),它是由俄罗斯程序员 Igor Sysoev 所开发的。起初是供俄国
大型的门户网站及搜索引擎 Rambler 使用。此软件 BSD-like 协议下发行,可以
在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作
系统中运行。
Nginx 的应用现状
Nginx 已经在俄罗斯最大的门户网站── Rambler Media(www.rambler.ru)上
运行,同时俄罗斯超过 20%的虚拟主机平台采用 Nginx 作为反向代理服务器。
在国内,已经有淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、
Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线等多家网站使用 Nginx 作
为 Web 服务器或反向代理服务器。
2.1.2、 Nginx 的核心特点
(1)跨平台:Nginx 可以在大多数 OS 编译运行,而且也有 Windows 的版本;
(2)配置异常简单:非常容易上手。
(3)非阻塞、高并发连接:官方测试能够支撑 5 万并发连接,在实际生产环境
中跑到 2~3 万并发连接数。(这得益于 Nginx 使用了最新的 epoll 模型);
注:对于一个 Web 服务器来说,首先看一个请求的基本过程:建立连接—>接
收数据—>发送数据,在系统底层看来:上述过程(建立连接—>接收数据—>发
送数据)在系统底层就是读写事件。
如果采用阻塞调用的方式,当读写事件没有准备好时,那么就只能等待,当前
线程被挂起,等事件准备好了,才能进行读写事件。
如果采用非阻塞调用的方式:事件马上返回,告诉你事件还没准备好呢,过会
再来吧。过一会,再来检查一下事件,直到事件准备好了为止,在这期间,你
就可以先去做其它事情,然后再来看看事件好了没。虽然不阻塞了,但你得不
时地过来检查一下事件的状态,你可以做更多的事情了,但带来的开销也是不
小的。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程
(4)事件驱动:通信机制采用 epoll 模型,支持更大的并发连接。
非阻塞通过不断检查事件的状态来判断是否进行读写操作,这样带来的开销很
大,因此就有了异步非阻塞的事件处理机制。这种机制让你可以同时监控多个
事件,调用他们是非阻塞的,但可以设置超时时间,在超时时间之内,如果有
事件准备好了,就返回。这种机制解决了上面阻塞调用与非阻塞调用的两个问
题。
以 epoll 模型为例:当事件没有准备好时,就放入 epoll(队列)里面。如果有事件
准备好了,那么就去处理;当事件没有准备好时,才在 epoll 里面等着。这样,
我们就可以并发处理大量的并发了,当然,这里的并发请求,是指未处理完的
请求。线程只有一个,所以同时能处理的请求当然只有一个了,只是在请求之
间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的。这
里的切换是没有任何代价,你可以理解为循环处理多个准备好的事件。
多线程方式相比,这种事件处理方式是有很大的优势的,不需要创建线程,每
个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级,并发数
再多也不会导致无谓的资源浪费(上下文切换)。对于 apache 服务器,每个请
求会独占一个工作线程,当并发数上到几千时,就同时有几千的线程在处理请
求了。这对操作系统来说,是个不小的挑战:因为线程带来的内存占用非常大,
线程的上下文切换带来的 cpu 开销很大,自然性能就上不去,从而导致在高并
发场景下性能下降严重。
总结:通过异步非阻塞的事件处理机制,Nginx 实现由进程循环处理多个准备好
的事件,从而实现高并发和轻量级。
(5)Master/Worker 结构:一个 master 进程,生成一个或多个 worker 进程。
注:Master-Worker 设计模式主要包含两个主要组件 Master 和 Worker,Master
维护着 Worker 队列,Worker 主要进行实际用户请求处理。
nginx 采用这种进程模型有什么好处?采用独立的进程,可以让互相之间不会影
响,一个进程退出后,其它进程还在工作,服务不会中断,Master 进程则很快
重新启动新的 Worker 进程。当然,Worker 进程的异常退出,肯定是程序有 bug
了,异常退出,会导致当前 Worker 上的所有请求失败,不过不会影响到所有请
求,所以降低了风险。
(6)内存消耗小:处理大并发的请求内存消耗非常小。在 3 万并发连接下,开
启的 10 个 Nginx 进程才消耗 150M 内存(15M*10=150M)。
(7)内置的健康检查功能:如果 Nginx 代理的后端的某台 Web 服务器宕机
了,不会影响前端访问。
(8)节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
(9)稳定性高:用于反向代理,宕机的概率微乎其微。
2.2、 Nginx 的 upstream 负载的 5 种策略
nginx 一般用来做反向代理和负载均衡,将客户端请求发送到后端的 tomcat,
并将 tomcat 的响应发送给客户端。后端的 tomcat 通常不止一个,nginx 根据配
置来选择其中一个 tomcat,比较常见的选择策略是轮询。
剩余39页未读,继续阅读
资源评论
cfjbctkk
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功