第二课时:Nginx适用于哪些场景

 

  一条红色的线从Web服务走下来以后,会先经过Nginx,再到我们的应用服务,然后再去访问Redis或Mysql 提供基本的数据功能,这里有一个问题,由于我们的应用服务开发效率要求非常的高,所以它的运行效率是很低的,它的吞吐量和并发都是受限的,所以我们需要把许多这样的应用服务构成集群,向用户提供高可用性,而一旦很多服务构成集群的时候,我们需要Nginx具有反向代理功能,可以把动态请求传到给应用服务,而很多应用服务构成集群,它一定会带来两个需求:第一:动态的扩容;第二:有些服务出问题的时候我们需要做容灾;这样我们的反向代理就需要有负载均衡功能,其次,在上图的链路中,Nginx是处在企业内网的边缘节点,随着我们网络链路的增长,用户体验到的时延会增加,所以我们把一些所有用户看起来不变的或者很长时间才会变动的内容缓存在Nginx部分,由Nginx直接向用户提供访问;这样 用户时延就会减少很多,所以反向代理会延伸出另外一个功能叫缓存;它能够加速我们的访问,而很多时候我们在访问css,js的时候,或者一些小图片的时候,那么这些静态的资源的时候,是没有必要由我们的硬件服务来访问的,它 只需要通过本地文件系统上放置的静态资源,直接由Nginx提供访问就可以了,这是Nginx的静态资源服务功能;

  第三个应用场景则是由于应用服务它本身的性能由于有很多的问题;但是数据库服务要比应用服务好得多,因为它的业务场景比较简单,它的并发和吞吐量都要远高于应用服务;所以我们衍生出第三个应用场景,由Nginx直接去访问数据库,或者Redis,利用Nginx强大的并发性能实现如Web防火墙等复杂的业务功能来提供给用户;这要求我们的API服务有非常强大的业务处理功能;

posted @ 2020-02-24 13:11  痞子胥  阅读(313)  评论(0)    收藏  举报