文档章节

Nginx

天呀鲁哇
 天呀鲁哇
发布于 2017/07/11 13:56
字数 1220
阅读 15
收藏 0

1,反向代理服务容器的概念

    正常情况下,我们在发布/请求 应用的时候.直接把war放到应用服务器上,请求也是通过网络请求应用到服务器;但是随着时代发展  往往一个应用请求量  IO  网络效应会超过一个服务器的负载能力; 那么这个时候我们就要考虑负载均衡;负责均很的基础概念里已经看出应用代理是负载均衡中的一个手段; 那么反向代理服务容器就是应用代理是负载均衡中核心组件;

    反向代理容器和主要功能就是代理请求! 我们把请求发送到反向代理容器中,然后通过技术实现转发请求到正式应用服务器上,并且转发应用请求响应;

    一个反向代理服务容器可以向多个应用服务容器转发请求;当一个请求发送过来之后,反向代理容器会根据容器的配置项来决定到底发送请求到那个应用容器中;我们就是通过这个配置项来实现负载均均衡的;

    在实现负载均衡的同时,反向代理服务器还有一个重要特点---备灾! 在应用服务容器提供服务的时候,当出现莫个应用容器宕机,也不会对在线服务产生影响;

    同时,也为我们不停机更新带来可能!

 

2,nginx简介

    Nginx的进程模型:

    

        在Nginx启动的时候,他会启动一个master进程和N个worker进程; master进程是用来管理worker进程和监视work进程状态的管理进程,worker进程是实际处理请求的工作进程,当接受到请求后,work会采用公平的竞争模式来做竞争,对于一个请求只能在一个work中进行;至于work数配置多少 看具体情况定,默认配置文件中work是一个的;   建议配置work数和我们cpu核心数相同,如果少了会致使cpu资源浪费,如果多了其实是没有任何意义的(单核cpu处理多个进程的时候是需要排队等候的);

        在我们管理Nginx的时候,我们只需要管理master进程就好了,比如我们要关闭nginx的时候  直接kill master processor就ok;   在我们重新加载配置文件的时候,是直接和master交互的,master先加载配置文件,然后创建新的worker进程 并且通知老的进程不要在接受请求了!  当新的进程开始接受处理请求的时候,老的work进程就会killed;

         worker进程其实就是master进程的一个备份,worker进程是fork master进程的;

  Nginx请求处理流程:

        当一个请求发送过来,所有的work进程的listenfd都是可读状态,在worker进程开始读取的时候会向注册的master进程抢accept_mutex互斥锁;在抢到之后开始处理请求,并返回请求响应给客户端;

 

Nginx异步非堵塞处理机制

     (基础知识: IO处理模型)

 

Nginx模块划分:

nginx的模块根据其功能基本上可以分为以下几种类型:

event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
phase handler: 此类型的模块也被直接称为handler模块。主要负责处理客户端请求并产生待响应内容,比如ngx_http_static_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
output filter: 也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。
upstream: upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

 

 

    

        

    

 

    

© 著作权归作者所有

下一篇: Hadoop搭建-准备
天呀鲁哇
粉丝 8
博文 98
码字总数 42007
作品 0
长宁
程序员
私信 提问

暂无文章

基于CentOS7搭建GitLab

基于CentOS7搭建GitLab 12018.11.02 16:38:51字数 959阅读 3791 本文作者:蓝雄威,叩丁狼高级讲师。原创文章,转载请注明出处。 一、简介 Git Lab GitLab是利用 Ruby on Rails 一个开源的版...

linjin200
19分钟前
4
0
random生成随机数

随机生成0到100之间的10个随机数,然后使用冒泡排序将这10个数按从小到大的顺序排序 生成10个随机数 import randomnum = range(0, 100) # 范围在0到100之间,需要用到range()函数。nums...

彩色泡泡糖
23分钟前
3
0
kubernetes 环境搭建 —— kubeadm

主从节点需要安装的服务 Master 节点 Node 节点 etcd-master Control plane(如:calico,fannel) kube-apiserver kube-proxy kube-controller-manager other apps kube-dns Control plane(如:......

lemos
26分钟前
4
0
php将字符串中的中英文数字分割

$str = "php如何将字 符串中322的字母数字Asf f45d和中文_分割?"; $arr = preg_split("/([a-zA-Z0-9]+)/", $str, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); print_r($arr); Arr......

小小小壮
26分钟前
3
0
茑屋书店理解(一)

说到实体书店,你可能会想到两个字“难做”。一是电子书大为盛行,二是纸书作为标准品,完全可以在网上购买,因此国内许多实体书店的日子是举步维艰。但是在日本有这么一家实体书店,目前已经...

Idea
30分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部