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

高并发解决方案相关面试题什么是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)
blank

相关推荐

  • Mysql日期和时间函数不求人

    Mysql日期和时间函数不求人

  • 叙事传输的说服机制_简述传输层实现可靠传输措施

    叙事传输的说服机制_简述传输层实现可靠传输措施博文《PUSCH上行跳频(1)-Type1频率跳频》里提到了为什么要使用PUSCH跳频,以及详细介绍了Type1方式的跳频,本文继续这个话题,介绍Type2方式的跳频。1.采用PUSCH跳频时需要注意的问题在上行子帧中,PUCCH信道处于带宽的高低两侧,或者说位于频带的边缘,PUSCH信道则位于带宽的中间。PUCCH信道也以RB对为基本单位,每个RB在频域上是12个子载波,时域上是1个时隙。需要注意PUCCH信道每个RB对的两个RB位置:第一个时隙的PUCCH信道位于带宽的低频位置,第二个时隙的

  • Docker 开启API:2375[通俗易懂]

    Docker 开启API:2375[通俗易懂]Docker开启APIDocker默认文件位置:/usr/lib/systemd/system/docker.servicecd/usr/lib/systemd/system/vimdocker.service修改[Service]区ExecStart行为下面的内容[Service]Type=notify#thedefaultisnottousesy…

  • 医学图形图像处理(医学影像和医学图像处理)

    文章目录1图像和数字图像1图像和数字图像  数字图像:被定义为一个二维函数,f(x,y),其中x,y代表空间坐标,f代表点(x,y)处的强度或灰度级。和普通的笛卡尔坐标系有区别,在计算机中坐标系左上角为原点:  图像数字化:图像进入计算机后,对图像进行数字化(映射)。数字图像三要素:  (1)像素:大小决定了图像存储、显示的清晰度;  (2)灰度值:通常为0-255,因为在计算机中通常用一个字节来表示一个像素,即28。  (3)坐标  图像存储在计算机中会丢失信息,因为是从一个连续的

  • webstorm 2021激活码【2021.8最新】

    (webstorm 2021激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • Arduino使用HC05蓝牙模块与手机连接[通俗易懂]

    Arduino使用HC05蓝牙模块与手机连接[通俗易懂]通过本文,可以了解到以下内容:进入AT模式进行蓝牙基本参数设置Arduino蓝牙控制LED电路设计以及代码编写利用Andorid蓝牙串口调试软件测试功能进入At模式进行蓝牙基本参数设置想要使用Arduino的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用USB-TTL连接电脑使用串口调试软

发表回复

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

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