美文网首页
互联网研发运维都必用的Nginx到底是什么呢?

互联网研发运维都必用的Nginx到底是什么呢?

作者: AI课工场 | 来源:发表于2020-12-09 14:13 被阅读0次

    如果说有一款工具是互联网公司必备的,那一定是Nginx,作为一款优秀的开源web服务器软件,因为性能稳定、适合多个场景、使用简单等优点,在各互联网公司,大到上万人的阿里京东腾讯头条滴滴美团,小到几十百人的创业团队,从研发都运维,它都是最炙手可热的。在web服务应用中,它可以实现静态资源、PHP等网站的搭建;在后端代理服务中,它支持tcp/udp、http、grpc、fastcgi(PHP语言使用的协议)等协议的转发处理;在缓存场景中,它自身可以缓存历史数据;在API网关应用中,它提供了身份认证、鉴权等操作。在云计算、大数据的海量高并发场景下,更是需要Nginx来协同工作。

    简单的介绍了Nginx的功能后,我们来看看Nginx背后的架构是怎么样的它是如何进行设计的?在Nginx的架构中包含master节点、worker节点、缓存、第三方(web服务器、应用服务器)。Nginx启动之后,前端每传来一个用户请求,master主进程都会生成一个子进程worker去进行处理,worker负责监听事件,处理任务,比如将请求基于http等通信协议转发给webserver。在nginx启动的同时,会开启缓存功能,创建cacheloader进程,cacheloader进程将磁盘缓存的对象加载在内存当中,供nginx使用。此外Nginx采用异步非阻塞通信模式,即进程接收到请求之后,客户端不用等待响应,可以去处理其它任务,等待操作完成之后再将数据返回给到客户端。

    此外,Nginx的逻辑架构设计还采用了当下最流行的设计思想,即基于事件驱动。在Nginx的整个逻辑架构中,包含核心模块、http模块、配置模块、第三方模块等,核心模块处理Nginx的核心任务,如进程管理、权限控制,http模块处理http任务,如与第三方进行通信,第三方模块提供Nginx的扩展功能,开发者可以根据自己需求进行二次开发。

    介绍完了Nginx的架构之后,我们来看看Nginx的使用用途。因为Nginx非常的强大,它的用途自然也非常的广,而当下最热门的技术理念莫过于DevOps,最热的事件莫过于双十一大促春节抢票了,那我们就从这两个场景来进行讲解吧。

    DevOps理念倡导的是微服务模式,快速开发,快速迭代,持续集成,持续交付。也就是说会随着业务的不断扩展,衍生出很多的新业务,并且会拆分的非常原子化,由不同团队负责不同模块的开发与上线。对于大公司来说,如果技术体系成熟,顺其自然的拆分微服务架构即可,但对于技术体系不成熟或历史包袱比较重的公司,基于Nginx也可以很好的实现DevOps。如下图所示,业务拆分成了电影、酒店、商超、旅游部分,通过Redis将不同业务的key存储起来,用户请求来了之后,经过Nginx负载均衡去请求不同业务的ID,再把请求做转发,如果再有新的业务扩展,在redis中增加一条记录即可。

    双十一大促和春运都面临的一个问题是海量请求高并发,双十一是很多人抢东西,春运是很多人抢票,当请求突然爆发性的增长时,如果没有应急措施,很有可能会造成服务瘫痪,业务不可用。作为技术部门的研发运维都必须要保证服务的高可用,借助Nginx,当业务请求量正常时,访问正常业务集群,同时也把数据备份到降级集群中,当业务访问量异常发生故障时,通过Nginx将业务切到降级集群,恢复之后再把用户切回,简简单单的保证了业务的高可用。

    除了上述两个最应景的场景之外,其实Nginx还可以用来做运营运维数据的统计分析。你想想看啊,所有的请求都是通过Nginx的入口转发的,那自然可以统计到用户最长访问的URL、接口,进而可以获取到用户最长访问的服务、业务、模块,根据访问量、请求量来做对应模块的性能优化与业务运维了。所以你也可以看到,不只是前端可以获取用户访问数据,后端也是可以获取的哟。

    通过本文,相信大家对Nginx已经有了比较清楚的了解了,高并发、性能好、用途广,难怪滴滴美团阿里头条内部各业务线各技术部门都纷纷使用,青睐有加呢,在中小型创业公司它的使用也不赖噢。此外。如果你的业务正在遭遇高并发崩溃问题,抑或是正面临技术架构转型,微服务落地,devops实践等问题,那么你不妨考虑使用Nginx。它真的很简单,也真的很好用。对于加入互联网公司的研发运维人员,熟练掌握Nginx也是一门技巧噢。

    相关文章

      网友评论

          本文标题:互联网研发运维都必用的Nginx到底是什么呢?

          本文链接:https://www.haomeiwen.com/subject/fapzwktx.html