初识Nginx
很多同学可能没有使用nginx,但是你肯定使用Apache搭建过服务器,用Tomcat搭建过动态服务器,用Lvs搭建过服务器集群,那么Nginx最重要的应用场景是啥了?
Nginx的三个应用场景
-
静态资源 -
API服务 -
反向代理
在这张图里,用户请求先经过Nginx,再到应用服务比如Tomcat,django ,再去访问数据库比如redis,mysql提供基本的数据功能。
应用场景一
我们的应用服务要求开发效率高,所以它的运行效率比较低,它的qps,tps,并发等都是受限的,所以我们经常将这样的应用服务组成一个集群,向用户提供高可用性,组成集群的时候我们要求Nginx具有反向代理
功能,可以将动态请求传给应用服务。
在构成集群时,一般服务器具有两个需求:动态扩容;服务出问题的时候需要做容载,现在反向代理必须具有负载均衡
功能。在这样的一个链路中,Nginx处于企业内网的边缘节点,随着链路的增长,用户体会到的时延会增加。如果我们能把长时间不变的动态内容缓存在Nginx上,由Nginx向用户提供访问,这样用户时延会减少很多。所以反向代理会出现缓存
功能。
应用场景二
比如css,js,图片这些文件没必要由引用服务器提供访问,它只需要由本地文件上放置的静态资源
,这是Nginx的静态资源
功能。
应用场景三
由于数据库服务器的性能要比应用服务器好的多,业务场景简单,并发场景和tps都要远高于应用服务,所以这里我们引申出第三个功能:由Nginx直接访问数据库服务器或者redis,应用服务,所以利用Nginx实现web防火墙这样复杂的业务功能,所以提供了OpenResty这样的API服务
。
Nginx为甚么会出现
被称为计算机第一定律的摩尔定律是指IC上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。摩尔定律是由英特尔(lntel)名誉董事长戈登·摩尔( Gordon moore)经过长期观察总结的经验。 -百度百科
比如 我把服务跑在1ghz的cpu上,一年半后跑在2ghz的cpu上,性能会提升一倍。现在是多核cpu的时代,你把服务放在8核的CPU上,然后一年半后放在16核的CPU上,你的服务性能通常不会有1倍的提升。
我想这是因为操作系统和大量的软件没有做好服务于多核架构的准备,比如Apache是低效的,一个连接只对应一个进程。它是在使用操作系统进程间切换的一个特性,操作系统微观上只有有限的cpu,但是操作系统服务于上千上百的进程。而Apache一个进程只服务于一个连接,针对几百万的连接时,它没有开上百万的进程,进程间切换的代价又太高了,当并发的连接数越多,性能消耗也就越大,Nginx就是为了解决这样的应用场景而生的,它可以处理上千万的并发连接
。