高并发解决方案相关面试题

高并发解决方案相关面试题什么是DNS解析域名DNS域名解析就是讲域名转化为不需要显示端口(二级域名的端口一般为80)的IP地址,域名解析的一般先去本地环境的host文件读取配置,解析成对应的IP地址,根据IP地址访问对应的服务器。若host文件未配置,则会去网络运营商获取对应的IP地址和域名.什么是NginxNginx是一个高级的轻量级的web服…

大家好,又见面了,我是你们的朋友全栈君。

什么是DNS解析域名

DNS域名解析就是讲域名转化为不需要显示端口(二级域名的端口一般为80)的IP地址,域名解析的一般先去本地环境的host文件读取配置,解析成对应的IP地址,根据IP地址访问对应的服务器。若host文件未配置,则会去网络运营商获取对应的IP地址和域名.

什么是Nginx

Nginx是一个高级的轻量级的web服务器,由俄罗斯科学家开发的,具有如下优点:

     1.占用内存少,并发量强,支持多种并发连接,效率高.

     2.能够作为负载均衡服务器和(内部直接支持 Rails 和 PHP)代理服务器。Nginx用C编写开销和CPU占有小.

     3.安装启动简单,配置简洁,bug少,一般几个月不需要重新启动且不会宕机,稳定性和安全性好.

Nginx的作用

反向代理、负载均衡、配置主备tomcat、动静分离

 

Nginx 应用场景

做HTTP服务器、反向代理服务器、静态资源服务器

 

什么是反向代理

代替真实服务器接收网络请求,然后将请求转发到真实服务器

 

反向代理的作用

隐藏真实服务器,使真实服务器只能通过内网访问,保护了真实服务器不被攻击。配置负载均衡,减轻单台真实服务器的压力。配置主备服务器,保持服务稳定运行。

 

Nginx如何配置反向代理

首先到DNS服务器做域名解析,如果是局域网在hosts文件中配置IP和域名对应关系。编辑nginx的nginx.conf文件,配置server_name为指向nginx服务器的域名,location拦截请求,如果是访问nginx本地资源则配置root,如果是反向代理到真实服务器则配置proxy_pass为服务器地址

 

说说常用Nginx的相关配置

upstream 负载均衡配置

server [IP] [weight] [backup] 配置tomcat集群

proxy_connect_timeout、proxy_read_timeout、proxy_send_timeout 连接时间、真实服务器响应时间、返回结果时间

location 匹配用户请求的url

root 配置本地资源路径

proxy_pass    配置真实服务器地址

 

请画图展示反向代理流程

高并发解决方案相关面试题

 

LVS与Nginx区别

LVS是四层反向代理,基于TCP和UDP协议,可用于管理Nginx集群,抗负载能力强。Nginx是七层反向代理,基于HTTP协议,用于管理真实服务器集群。

 

location的作用

匹配用户请求url,根据不同请求转发到不同的服务器。

 

Nginx中如何配置负载均衡

在upstream中配置多个server,在location的proxy_pass配置为http://+upstream名称

 

四层负载均衡与七层负载均衡区别

四层负载均衡基于TCP和UDP协议,通过IP+端口号接受请求并转发到服务器。七层负载均衡基于HTTP协议,通过url或主机名接收请求并转发到服务器。

 

四层负载均衡有那些实现方案

LVS、F5

 

负载均衡有那些算法

轮询算法:按照时间顺序分配到不同的服务器,当其中一台服务器宕机则被自动剔除,切换到正常的服务器。

权重算法:按照分配给服务器的权重比例来分发到不同服务器,权重比例越高,则访问几率越大。

IP绑定(ip_hash):根据访问的IP的哈希结果来判定,使同一个IP访问一台固定的后端服务器,同时解决动态页面的session问题.

 

服务器分布式后,会产生了那些问题

分布式锁

分布式全局ID

分布式Session一致性问题

分布式事务

分布式任务调度

分布式日志收集

分布式配置中心

 

什么是动态负载均衡

一般情况下,使用nginx搭建服务器集群,每次修改nginx.conf配置文件都需要重启nginx服务器。动态负载均衡就是修改nginx.conf配置文件后不必重启nginx而使配置生效。

 

Nginx如何实现动态负载均衡

搭建Nginx+Consul+Upsycn环境。Nginx实现服务的反向代理和负载均衡。Consul是一个开源的注册中心和服务发现的框架,通过HTTP API来发现服务,注册服务。同时支持故障发现,K/V存储,多数据中心,Raft算法等多种高可用特性。Consul在Nginx动态负载均衡作用是通过Http api注册和发现服务.Upsycn是新浪微博的开源框架,在Nginx动态负载均衡的作用是Consul的后端的server列表,即获取Nginx的上游服务器(Upstream server)信息,并动态更新Nginx的路由信息.

 

什么是Http协议

超文本传输协议

Http协议组成部分

Http协议是基于TCP协议封装成超文本传输协议,包括请求(request)和响应(response),http协议请求(request)分为请求参数(request params)和方法类型(request method)、请求头(request hearder)、请求体(request body) ,

响应(response)分为 响应状态(response state)、响应头(response header)、响应体(response body)等.

 

TCP与UDP区别

udp:

   a、是面向无连接, 将数据及源的封装成数据包中,不需要建立连接

    b、每个数据报的大小在限制64k内

    c、因无连接,是不可靠协议

    d、不需要建立连接,速度快

tcp:

   a、建议连接,形成传输数据的通道.

    b、在连接中进行大数据量传输,以字节流方式

    c 通过三次握手完成连接,是可靠协议

    d 必须建立连接m效率会稍低

 

谈谈七层网络模型

应用层:客户端的各种应用、app;

表示层:进行数据的格式区分,如图片、编码;

会话层:本地主机与远程主机的会话管理;

传输层:定义传输数据的协议端口号,TCP和UDP是这一层的协议;

网络层:进行逻辑地址寻址;

数据链路层:建立逻辑连接,进行硬件地址寻址;

物理层:建立物理连接;

 

Nginx如何实现TCP四层负载均衡

在nginx.conf文件中配置tcp模块,在upstream块中定义socket服务器负载均衡,其余与nginx配置七层负载均衡相同。

tcp {

   ### 定义多个上游服务器

   upstream  itmayeidu{

      ### 定义TCP模块上游服务器

      server 192.168.5.165:80001;

  server 192.168.5.165:80002;

   }

    server {

        listen       9999;

        server_name  192.168.212.137;

### 反向代理upstream

        proxy_pass itmayeidu;

    }

}

 

lvs 与Nginx 区别

lvs工作在网络第四层,nginx工作在网络第七层;lvs比nginx抗负载能力强;lvs对网络依赖性强,nginx对网络依赖性弱;lvs几乎可以对所有应用做负载均衡,比如数据库。

 

lvs与keepalived区别

Lvs可以实现负载均衡,但是无法实现健康检查。Keepalived可以进行健康检查实现高可用。

 

keepalived 作用

keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题

 

如何实现双机主从热备

Nginx+Tomcat:在upstream中配置多台服务器,从服务器后加backup

Keepalived+Nginx:在多台nginx服务器上安装keepalived,将主服务器的state设置为MASTER,从服务器设置为BACKUP,主服务器的优先级要高于从服务器

 

lvs+Keepalived+Nginx架构流程图

高并发解决方案相关面试题

 

项目发布如何不影响到正常用户访问,实现7*24小时访问

可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性,从而保证服务器7*24小时运行。

 

项目如何发生故障宕机了,如何处理。

使用lvs+keepalived+Nginx做主从热备,lvs管理nginx集群,nginx管理服务器集群,在服务器宕机的情况下keepalived启动健康检测,多次重启无果可以短信通知运维人员及时维护。

 

动态网站与静态网站区别

在浏览器中打开一个网站,点击鼠标右键查看源码,多次请求后如果源码不产生变化就是静态网站,变化就是动态网站。

 

动态页面静态化的作用

便于搜索引擎抓取和排名

 

什么是动静分离架构模式

静态页面与动态页面分开不同系统访问的架构设计方法,静态页面与动态页面以不同域名区分。

 

如何搭建动静分离

以nginx服务器作为静态资源服务器,静态资源和动态资源访问分开配置,静态资源在location中使用本地文件路径配置方式,动态资源使用proxy_pass配置到后台服务器。

如:

    ###静态资源访问

    server {

      listen       80;

      server_name  static.itmayiedu.com;

      location /static/imgs {

           root F:/;

           index  index.html index.htm;

       }

    }

   ###动态资源访问

 server {

      listen       80;

      server_name  www.itmayiedu.com;

 

      location / {

         proxy_pass http://127.0.0.1:8080;

         index  index.html index.htm;

       }

    }

 

动静分离与前后分离区别

动静分离是将静态资源和动态资源存放在不同服务器中,前后分离是将前端和后台分离,前端通过api调用后台接口

 

如何控制浏览器静态资源缓存

静态资源存在缓存的原因是项目上线时,浏览器缓存中的静态资源导致与服务器将淘汰资源的代码发生冲突(或者是页面访问频繁访问同一资源,导致一些浏览器如IE(本人开发亲身经历过)返回默认的响应结果,与实际响应结果不符合),一般的服务器是强制F5进行刷新或者是清除缓存,最有效的解决方法就是在请求资源后面加上变量(如时间戳,随机数)

 

Http状态码304的作用

表示浏览器存在静态资源缓存就不从服务器获取静态资源

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143078.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pytest运行_ios12清除缓存

    pytest运行_ios12清除缓存前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

  • 计算机编程原理_如何编程

    计算机编程原理_如何编程一、Socket简介Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。几个定义:(1)IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP。(2)端口号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端口号,不同的进程端口号不同,因此在通

    2022年10月17日
  • 集群技术的简介_集群的分类

    集群技术的简介_集群的分类集群技术集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。中文名集群技术外文名…

  • 几乎所有互联网重要隐私都泄露了,想黑你还真的躲不掉

    几乎所有互联网重要隐私都泄露了,想黑你还真的躲不掉春节在家就是打麻将,不亦乐乎,赢了一点零花钱,无聊后,看手机,浏览StartupNews,看到《真想注销删除我的QQ号》这篇文章。作者因为看到了有人用泄露的QQ群(好多年前的)做出的关系图

  • 激活成功教程WEP密钥过程全解(上)[通俗易懂]

    激活成功教程WEP密钥过程全解(上)[通俗易懂]激活成功教程WEP密钥过程全解(上)

    2022年10月26日
  • Navicat Premium 15.0.26 MacOS[通俗易懂]

    Navicat Premium 15.0.26 MacOS[通俗易懂]Navicatpremium是一款强大的数据库管理软件,使用它可以轻松连接到MySQL、SQLite、Oracle、MariaDB、Mssql、及PostgreSQL数据库,让管理不同类型的数据库更加的方便。有了NavicatPremium,您不再需要为不同的数据库而切换不同的数据库工具。NavicatPremium结合了其他Navicat成员的功能。有了这种连接到不同数据库的能力,它可以在MySQL、SQLite、Oracle、MariaDB、Mssql、及PostgreSQL之间进行数据传输,同

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号