Nginx系列教程(04) - 基础理论

1.负载均衡

学习Nginx之前,我们先来了解一个概念“负载均衡”:

  • 负载均衡 :建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
  • 负载均衡 :英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

在这里插入图片描述
当然负载均衡也有它的缺点:

使用负载均衡后,实际用到的服务器会被集群多台,那么这时候就会产生很多分布式相关问题,比如:

  • 分布式Session一致性问题
  • 分布式定时任务调度幂等性问题
  • 分布式生成全局订单ID

如果想更加深入的理解负载均衡,可以参考文章:《快速理解负载均衡技术原理》

那么要做到负载均衡,那么有什么解决方案呢?

没错,首选Nginx

2.Nginx

2.1 Nginx是什么?

1. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师IgorSysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

2. Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型。

3. 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

4. 作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器 (最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

5.Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器:
Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在
不间断服务的情况下进行软件版本的升级。

6. Nginx一般用户七层负载均衡,其吞吐量有一定的限制。为了提高整体的吞吐量,会在DNS和Nginx之间引入LVS(软件负载均衡器)、F5(硬负载均衡器)可以做四层负载均衡,首先DNS解析到LVS(F5),让后LVS(F5)转发给Nginx,再有Nginx转发给真实的服务器。

2.1.1 网络模型图
OSI中的层功能TCP/IP协议族
应用层文件传输、电子邮件、文件服务、虚拟终端TFTP、HTTP、SNMP、FTP、SMTP、DNS、RIP、Telnet
表示层数据格式化、代码转换、数据加密没有协议
会话层接触或建立与别的节点联系没有协议
传输层提供端对端的接口TCP、UDP
网络层为数据包选择路由IP、ICMP、OSPF、BGP、IGMP、ARP、RARP
数据链路层传输有地址的帧以及错误检测功能SLIP、CSLIP、PPP、MTU、ARP、RARP
物理层以二进制数据形式在物理媒体上传输数据ISO2110、IEEE802、IEEE802.2
2.1.2 四层和七层负载均衡的区别
  • 四层负载均衡,在网络模型中的传输层中,基于主要是基于tcp协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。

  • 七层负载均衡,在网络模型中应用层中,基于URL或者HTTP协议实现负载均衡,Web服务器。

2.1.3 Nginx配置负载均衡
  1. Nginx负载均衡提供上游服务器(真实业务逻辑访问的服务器),负载均衡、故障转移、失败重试、容错、健康检查等。

  2. 上游服务器(真实业务逻辑访问的服务器) 发生故障时,可以转移到其他上游服务器(真实业务逻辑访问的服务器)。

2.2 Nginx应用场景

1. http服务器:Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

2. 虚拟主机:可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

3. 反向代理,负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

4. nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

2.3 Nginx目录结构

进入nginx安装目录,我们可以看到目录结构:
在这里插入图片描述

Nginx-
|_  conf   配置目录
|_  contrib
|_  docs 文档目录
|_  logs  日志目录
|_  temp 临时文件目录
|_  html 静态页面目录
|_  nginx.exe 主程序

如果要进行静态资源访问,可以把静态资源存放在nginx的html页面。

3.知识回顾

另外,Nginx在《分布式电商项目》里有讲过,如果没有Nginx基础的同学,可以按以下顺序阅读(回顾即可),接下来的文章也会详细讲解:

哈哈,其实博主也忘记的七七八八了,也是需要重新搭建环境回顾下😀

手比眼高,多实践,知行合一才能对知识有一个更全面理解,才会提升自己的知识高度!

总结

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值