Nginx面试题总结

 

  1. 高可用、高并发、高性能概述

    高并发(High Concurrency)
    是互联网分布式系统架构设计中必须考虑的因素之一,
    它通常是指,通过设计保证系统能够同时并行处理很多请求。
    高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。
    响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
    吞吐量:单位时间内处理的请求数量。
    QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
    并发用户数:同时承载正常使用系统功能的用户数量。
    ​
    高可用(High Availability)  
    通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
    ​
    高性能
    是指服务响应时间快,(CPU/处理器/内存)特别是在高并发下响应时间不会急剧增加。

     

  2. 什么是Nginx

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,
    ​
    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

     

  3. Nginx应用场景

    需求1: 静态资源
    静态配置文件处理
    ​
    需求2:反向代理
    让nginx进行转发,即所谓的反向代理 访问localhost时转到tomcat
    ​
    需求3: 动静分离

     

  4. 正向代理和反向代理区别

    反向代理:
    ​
    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
    ​
    正向代理:
    ​
    是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

     

  5. 长连接和短连接区别

    1、长连接是client方与server方先建立连接,连接建立后不断开,而短连接的Client方与server每进行一次报文收发交易时才进行通讯连接;
    2、短连接多用于操作频繁,点对点的通讯,而且长连接数不能太多的情况。
    ​

     

  6. HTTP和HTTPS的区别

     1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    ​
     2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    ​
     3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    ​
     4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

     

  7. 什么是集群

    将一个应用程序,部署到多台服务器上面,然后在这些服务器的前面通过负载均衡服务器来择优选择哪一台服务器去执行;(保证高可用)

     

  8. 什么是负载均衡

    将服务器接收到的请求按照规则分发的过程,称为负载均衡

     

  9. Nginx负载均衡的规则有哪些

    1、轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
    ​
    2、指定轮询几率
    weight和访问比率成正比,用于后端服务器性能不均的情况默认选项,当weight不指定时,各服务器weight
    相同, (weight=1)数字越大,表明请求到的机会越大
    ​
    3、ip_hash
    每个请求按访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。
    ​
    4、url_hash(第三方)
    nginx按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器、文件服务器、静态服务器时比较有效。缺点是当后端服务器宕机的时候,url_hash不会自动跳转的其他缓存服务器,而是返回给用户一个503错误。
    ​
    5、fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配

     

  10. 集群分布式Session解决方案

    Session保持(也有人叫黏性Session)、
    Session保持(会话保持)就是将用户锁定到某一个服务器上。比如上面说的例子,用户第一次请求时,负载均衡器(Nginx)将用户的请求分发到了A服务器上,如果负载均衡器(Nginx)设置了Session保持的话,那么用户以后的每次请求都会分发到A服务器上,相当于把用户和A服务器粘到了一块,这就是Session保持的原理。Session保持方案在所有的负载均衡器都有对应的实现。而且这是在负载均衡这一层就可以解决Session问题。
    优点:非常简单,不需要对session做任何处理。
    缺点:1、负责不均衡了:由于使用了Session保持,很显然就无法保证负载的均衡。2、缺乏容错性:如果后端某台服务器宕机,那么这台服务器的Session丢失,被分配到这台服务请求的用户还是需要重新登录,所以没有彻底的解决问题。
    实现方式:以Nginx为例,在upstream模块配置ip_hash属性即可实现粘性Session
    ​
    Session复制。
    针对Session保持的容错性缺点,我们可以在所有服务器上都保存一份用户的Session信息。这种将每个服务器中的Session信息复制到其它服务器上的处理办法就称为会话复制。当任何一台服务器上的session发生改变时,该节点会把session的所有内容序列化,然后广播给所有其它节点,不管其他服务器需不需要session,以此来保证Session同步。
    优点:可容错,各个服务器间的Session能够实时响应。
    缺点:将session广播同步给成员,会对网络负荷造成一定压力
    实现方式:tomcat本身已支持该功能**
    tomcat的会话复制分为两种:
    全局复制(DeltaManager):复制会话中的变更信息到集群中的所有其他节点。
    非全局复制(BackupManager):它会把Session复制给一个指定的备份节点。
    ​
    Session共享。
    SpringSession+Redis方式实现
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值