• Nginx(一):Nginx初识


    产生背景

    • 互联网的数据量快速增长

      • 互联网的快速普及
      • 全球化
      • 物联网
    • 摩尔定律性能提升

      • 摩尔定律的失效:之前服务跑在1G赫兹,当一年半以后,更新到2G赫兹的CPU时可以预测到性能有两倍的性能提升。但是到了本世纪处,摩尔定律在单颗cpu的频率上已经失效了,cpu开始向着多核方向发展。 这个时候,服务是跑在8核CPU上时,一年半以后,换到了16核CPU,服务的性能通常是不会有成倍的提升的。那么这些性能究竟是损耗在哪里呢?主要是操作系统和大量的软件没有做好服务于多核架构的准备。
    • 低效的Apache

      • 一个进程只能服务于一个链接Apache的架构模型一个进程同一时间只会处理一个链接一个请求,处理完以后才会处理下一个请求。这有什么潜台词呢?它实际上在使用操作系统的进程间切换的特性,因为操作系统微观上只有有限的CPU,但是操作系统被设计为同时服务数百甚至上千的进程,而Apache一个进程只能服务于一个链接,这样的模式会导致当Apache需要面对几十万、几百万链接的时候,它没有办法去开几十万、几百万的进程;而进程间切换的代价成本又太高了,当并发的连接数越多,这种无谓的进程间切换引发的性能消耗也就越大,而Nginx是专门为了这样的应用场景而生的。Nginx可以处理数百万甚至上千万的并发链接。
         

    Nginx是什么?

    • 轻量级、占有内存少、并发能力强

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

      • 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
      • 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
      • 作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

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

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

    Nginx的优点?

    • 高并发、高性能

      • 只要我们对每个链接使用的内存足够少就能实现高并发;既要达到高并发又要达到高性能,往往需要很好的设计。
      • 比如现在的主流云服务器,nginx 在32核64G的配置中可以轻松达到数千万的并发链接;如果是处理简单的静态资源请求,nginx 可以达到100w 的 rps 。
    • 可扩展性好

      • 可扩展性主要体现在模块化设计;模块化设计非常稳定,使得 Nginx 的生态圈、第三方模块非常丰富。甚至于有 Tengine、OpenResty 这样的第三方插件在他的基础之上又生成了新的生态圈。丰富的生态圈和第三方模块为 Nginx 的丰富功能提供了保证。
    • 高可靠性

      • 高可靠性指的是 Nginx 可以服务器上持续不间断的运行数年,而很多web服务器往往运行几周or几个月,就需要进行一次重启。对于 Nginx 这样一个高并发、高性能的反向代理服务器而言,往往运行在企业内网的边缘节点上,这个时候如果我们企业想提供4个9、5个9、甚至更高的高可用性时,对于 Nginx 持续运行能够宕机的时间一年可能只能以秒来计,所以在这样一个角色中,Nginx 的高可靠性给我们提供了非常好的保证。
    • 热部署

      • 热部署是指在不停止服务的情况下升级Nginx。这个功能对于 Nginx 来说非常重要,因为在服务器上跑了数百万的并发链接,如果是普通的服务器,我们只能 kill 掉进程再重启的方式进行升级操作。但是对于 Nginx 而言,因为直接 kill 掉 nginx 进程会给所有的已经建立链接的客户端一个很不好的体验。
    • BSD许可证
      • BSD许可证是指 Nginx 不只是开源的、免费的,而且我们可以在有定制需求的场景下,去修改 Nginx 的源码,再运行在我们的商业场景下且属于合法的。

    Nginx应用场景

    • http服务器
      • Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
    • 反向代理、负载均衡、缓存
      • 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
    • 配置安全管理
      • 比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。
    • API服务
      • OpenResty

     

    学习文档:点击进入

  • 相关阅读:
    点图换说明文字
    酷酷的图片预览带加载效果
    阿里巴巴右侧6滑块VS雅虎右侧6滑块VS自定义6滑块
    绝对经典的滑轮新闻显示(javascript+css)
    一个城市、日历选择功能
    比较两个日期大小
    我对委托/事件的理解
    今天写信息采集小程序时实现程序中同时只允许5个线程运行
    Web页面接受客户端POST数据,并且返回数据
    项目中用到的一个树控件[经过修改]
  • 原文地址:https://www.cnblogs.com/kongliuyi/p/11494588.html
Copyright © 2020-2023  润新知