开发漫谈:BAT都在用的Nginx到底是啥?

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

如果你混迹IT圈儿,你可能听说过,或见过Nginx,IT技术人员对她都会有所耳闻,云计算工程师因为要应对负载均衡问题,需要更深入的了解Nginx,而Nginx也是百度、阿里、腾讯等企业IT架构中的常客。今天,笔者就与大家一起来探究一下,Nginx究竟是什么。

Nginx是什么?

根据维基百科的定义,Nginx(发音同engine x)是一个网页服务器,它能反向代理HTTP,HTTPS,SMTP,POP和IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。

其初始版本发于12年前(2004年10月4日),起初只是供俄罗斯大型门户网站及搜索引擎Rambler(Рамблер)使用,后再2011年俄罗斯Nginx公司获得300万美元风投,也在国内外获得了大量的追随者,国内的BAT、新浪、搜狐都有应用,国外的Facebook、TechCrunch、Groupon和WordPress等公司,也是Nginx的簇拥。

此软件BSD-like协议下发行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中均可运行。技术创始人为为Igor Sysoev。

特性如何

Nginx之所以能够受到世界各大互联网公司的青睐,当然是基于前面提过的在BSD-like协议下发行,更重要的还是Nginx拥有高性能的特点,主要体现在占用内存少,稳定性高等方面。

正因为这个特点,Nginx在四年前,就被某宝内部系统广泛使用。同时Nginx在处理并发服务能力方面十分优异,整体采用模块化设计,在处理负载均衡方面有着出色表现。根据Nginx的官方测试结果显示,Nginx可以支持五万个平行链接,而在实际运作中,可以支持2万至4万个平行链接。

架构如何

Nginx高性能的特点很大原因要归功于Nginx的架构与设计方式。当我们启动Nginx之后,会出现一个Master进程和多个Wocker进程,Master进程主要用来管理Wocker进程,放Wocker进程异常退出后,会自动重新启动新的Wocker进程。多个Wocker进程之间是对等的,同时也是相互独立的。

开发漫谈:BAT都在用的Nginx到底是啥?

另外,Nginx使用了最新的epoll和kqueue网络IO模型,这种模型在高并发的情况下,时间模型能够有更高的效率。与多线程相比,这种事件处理方式优势明显,能够不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理十分轻量级。

结束语

五年前,Nginx技术创始人做了家公司,冲击了微软IIS(互联网信息服务器Internet Information Server),如今,互联网在快速发展中,高并发、高负载情况愈加平常,Nginx依然焕发着自己的活力。

如果你混迹IT圈儿,你可能听说过,或见过Nginx,IT技术人员对她都会有所耳闻,云计算工程师因为要应对负载均衡问题,需要更深入的了解Nginx,而Nginx也是百度、阿里、腾讯等企业IT架构中的常客。今天,笔者就与大家一起来探究一下,Nginx究竟是什么。

本文转自d1net(转载)

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
12月前
|
关系型数据库 MySQL 应用服务中间件
Mac PHP-Nginx-Mysql 本地开发日常启动流程
Mac PHP-Nginx-Mysql 本地开发日常启动流程
60 1
|
12月前
浅谈基于openresty(nginx+lua)开发轻量级,按流量控制的灰度模块(下)
浅谈基于openresty(nginx+lua)开发轻量级,按流量控制的灰度模块
121 0
|
5天前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
19 2
|
2月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
68 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
|
3月前
|
应用服务中间件 nginx Windows
windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
39 0
|
应用服务中间件 API nginx
在内网开发中使用Nginx代理来访问钉钉新版服务端API
在内网开发中使用Nginx代理来访问钉钉新版服务端API
632 1
|
12月前
|
负载均衡 应用服务中间件 测试技术
浅谈基于openresty(nginx+lua)开发轻量级,按流量控制的灰度模块(上)
浅谈基于openresty(nginx+lua)开发轻量级,按流量控制的灰度模块
404 0
|
负载均衡 前端开发 JavaScript
【Node.js实战】一文带你开发博客项目之联调(导入HTML、Nginx反向代理、CORS解决跨域、与前端联调)
【Node.js实战】一文带你开发博客项目之联调(导入HTML、Nginx反向代理、CORS解决跨域、与前端联调)
221 1
|
应用服务中间件 nginx
window重启Nginx的BAT脚本
window重启Nginx的BAT脚本
313 0
|
JSON Java 应用服务中间件
GIS开发:nginx发布常用数据
GIS开发:nginx发布常用数据
323 0