Nginx负载均衡的实现(科普篇)

Nginx负载均衡

双十一将至,一年一度的剁手活动再次进入预热阶段,每秒数亿次的点击量的背后是如何运作的,可有小伙伴思考过?创作初衷:一方面为科普一下BAT(现MAT)互联网巨头如何去应对大流量访问,另一方面巩固一下时隔两年之久的高并发知识,距上次更新博文也将近一个月了,失踪人口回归,为你带来莫名奇妙的知识,内容量比较大,为方便食用,初步估计九个篇幅分三次更新,预计11.8号前结篇,娱乐科普,部分概念含糊的地方,望海涵,也欢迎大牛评论补充

一、Nginx产生背景

我们在日常生活中会遇见的一些问题

  • 大学选课,报名系统(手动狗头,不吐槽)
  • 12306 网站
  • 双11购物狂欢节
  • 过年过节游戏炸服

上述场景产生的主要有 2 大原因:

1.巨大流量

2.单台服务器资源和能力有限

在海量并发的环境下,用户每一次请求服务器,都需要创建大量线程,每一次线程都必须分配资源(CPU、内存、带宽、磁盘 IO 等),当资源不足的时候就会使得服务器宕机而无法提供服务。

那么如何保证网站在流量峰值时能够顺利运作???

下拉继续食用

二、Nginx负载均衡

在阐述负载均衡之前先解释一下高并发的概念。

2-1、高并发

见名知意,高(大量的),并发就是可以使用多个线程或者多个进程,同时处理(就是并发)不同的操作。简而言之就是每秒内有多少个请求同时访问。

2-2、负载均衡(Load Balance)

负载均衡:将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】,也是分布式系统架构设计中必须考虑的因素之一。

2-3、tomca并发图

使用过 tomcat 做过并发测试的伙伴应该知道其负载,当每秒 300 个请求同时访问tomcat 时,tomcat 已经开始承受不住,出现波动,那么大型网站是如何处理高并发的呢?

以下是高并发场景下,实现负载均衡的一个分布式架构图。常见互联网分布式架构,分为客户端层、反向代理 nginx 层、站点层、服务层、数据层。只需要实现“将请求/数据均匀分摊到多个操作单元上执行”,就能实现负载均衡。

查看源图像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxyjQigL-1603335011075)(http://www.yulongjun.com/images/15040982600418.jpg)]

@Author:lanyy699

三、Nginx背景初探

3-0、时代背景

没有听过Nginx?那么一定听过它的"同行"Apache吧,Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个WEB服务器有着各自鲜明的特点。

Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它是不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。

这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。

3-1、Nginx详细概述

Nginx 是一款轻量级的使用C语言开发的Web反向代理服务器【后面有介

绍】及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师

Igor Sysoev 在为Rambler Media工作期间所开发,Nginx作为WEB服务器一直为Rambler Media提供出色而又稳定的服务。其特点是占有内存少,并发能力强,nginx 的并发能力确实在同类型的网页服务器中表现非常好。其后Igor Sysoev将Nginx代码开源,并且赋予自由软件许可证。

  • 2004 年 10 月 4 日 第一个公开版本 0.1.0 发布。其将源代码以类 BSD 许可证的形式发布,高度的模块化和自由软件许可证使得第三方模块层出不穷(ps:开源改变世界)
  • 官方测试 nginx 能够支撑 5万并发链接,并且 CPU、内存等资源消耗却非常低,运行非常稳定。
  • Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上

3-2、Nginx用武之地

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。在这里插入图片描述

@Author:lanyy699

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会撸代码的懒羊羊

打赏5元,买杯咖啡醒,继续创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值