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

2023-11-02

什么是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的作用

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • VM1550 installHook.js:1860 在控制台中记录为双行

    我正在使用反应应用程序并构建一个简单的应用程序 当我使用 console log 方法在控制台上记录某些内容时 控制台上会出现第二条日志 它似乎来自第 1860 行的文件名 installHook js 我已经尝试过寻找它 但我没有找到 我
  • 如何判断是哪个控件导致ViewState加载失败?

    我的页面面临 Viewstate 加载问题 页面有一个登录工具来登录管理员和非管理员用户 当非管理员用户登录页面并单击启用了自动回发的复选框时 会出现奇怪的行为 错误详情如下 后来我发现 在左侧的导航面板中 承载链接 侧边栏如下图所示 Se
  • 用于网站的 Git / 接收后 / 测试站点和生产站点的分离

    我使用 Git 来管理网站的源代码和部署 目前测试站点和实时站点在同一个机器上运行 关注此资源http toroid org ams git website howto http toroid org ams git website how
  • IIS 7.5:对网站的初始请求永远不会加载

    当我第一次浏览我的网站时 互联网不断旋转 加载 如果我两秒钟后尝试再次加载它 一切都会正常 就好像它 睡着了 一样 我想这一定和 回收 有关 我已将 空闲超时 设置为 0 将回收 定期时间间隔 设置为 0 在浏览我的网站之前 我查看了 工作
  • URL中的gs_upl是什么意思?

    在任何谷歌搜索 URL 中 gs upl 是什么意思 例如 那么 gs upl 1045l1663l0l3648l4l4l0l0l0l0l258l682l0 3 1l4l0 在这里意味着什么 从构建的脚本gs upl j 我找到 funct
  • 使用 hg 存储库作为网站

    这与我的安全问题有些相关here https stackoverflow com questions 2361626 security deny access to hg via mod rewrite 对实时网站使用 hg Mercuri
  • 电话链接在 iframe 中不起作用,但在 iOS 9 Web 中的 div 中起作用。如何使电话链接在 iOS 9 safari 中正常工作?

    您好 我正在尝试 iOS9 中 iframe 内的电话链接 iOS9 中的 safari 中无法打开手机应用程序 当我在里面尝试相同的链接时 它就在那里工作 我正在尝试下面的锚标记 将此代码放入 div 中时会打开手机应用程序 但同样的代码
  • WebUSB 和 RFID 读取器

    我想知道是否有人有让 RFID 读取器通过 WebUSB 工作的经验 我使用的阅读器是https www parallax com product 28340 https www parallax com product 28340 根据我
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • 如何保护我的网站免遭 HTTrack 或其他软件的翻录?

    我最近获得了批准的网站模板主题森林 http themeforest net 我的网站流量过多 并注意到我在 Themeforest 上的演示被 HTTrack 等某些软件破坏 如果这种情况持续下去 该产品的销量最终可能会下降 那么 有什么
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 在 Blogger 中使用相对链接

    我正在使用博主 当我需要在我的博客文章中提到一个链接并且该链接实际上是我自己的博客文章的链接时 我在其旁边提到标签 www my blog name blogspot in 12 2013 how to do html if i chang
  • MVC4更新部分视图

    我正在开发一个简单的 MVC 应用程序 我有主视图 部分视图和控制器 这是我的主要视图 model partitalViewTest Models Qset div class transbox style height 1 Html Pa
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • powershell Invoke-WebRequest WebSession 不起作用

    我无法让以下代码工作 它似乎已登录 但随后返回带有 response 的登录页面 我猜这与回发有关 有办法解决这个问题吗 谢谢 login Invoke WebRequest Uri http www sqlpass org UserLog
  • 给定数十亿个 URL,如何确定重复内容 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在一次编程面试中被问到这个问题 我在下面详细描述了这个问题 这是一个开放式问题 给定数十亿个 URL 深层链接 我如何对哪些 URL
  • 为什么 [System.ComponentModel.ToolboxItem(false)] 默认出现在 Asp.net Web 服务中

    谁能告诉我为什么 System ComponentModel ToolboxItem false 是在Asp net Web服务中使用的吗 或许你可以在这里找到一些答案 NET API 浏览器 ToolboxItemAttribute 布尔
  • wix 安装程序/创建网站并分配新的或现有的 Web 应用程序池

    我尝试使用 wix 安装创建一个新网站 没关系 没有问题 但我无法将新的或现有的网络应用程序池分配给新网站 iis website 标记不包含 WebAppPool 属性 我如何将网络应用程序池分配给网站 你可以在下面看到我的代码 感谢您的

随机推荐

  • python王者归来 pdf_OpenStack开源云:王者归来 PDF 下载

    资料目录 第1篇 基 础 篇 第1章 OpenStack概述 1 1 云计算简介 1 1 1 什么是云计算 1 1 2 什么是云存储 1 1 3 私有云与公有云 1 2 为什么使用云计算 1 2 1 方案1 简单的服务部署 1 2 2 方案
  • des加密算法c语言源码,des加密算法c语言源代码(11页)-原创力文档

    include int IP 64 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 3
  • Android-黑客技术-实现类似电脑版软件破解版

    首先先看看什么叫做Android的黑客技术效果 游戏 修改正版apk代码 实现破解免支付买道具 应用 修改添加自己的信息 和应用市场应用看起来一样 最近趁着清闲 学了段时间的Android逆向技术 发现了新世界 所以现在就算手机app也是可
  • jQuery实现省市联动

    一 需求 当点击一个选择框类的省份时 另一个选择框自动出现该省份的城市 使用jQuery实现 二 代码
  • 详细:git提交忽略已提交,未提交文件

    目录 目录 和同事都要忽略的文件 未提交到git远程仓库的文件 已提交到git远程仓库的文件 仅在自己本地忽略 不进行忽略但区分提交文件 和同事都要忽略的文件 未提交到git远程仓库的文件 直接添加到 gitignore 1 vim git
  • QT5通过按键选择打开电脑文件夹里文件

    QT5 通过按键打开本地文件 适用小白 1 功能描述 按键按下转到打开文件夹界面 2 详细步骤 新建一个名叫test项目 1 设计UI界面 在UI界面加入一个pushbutton 例如pushbutton的名字是pushBotton 7 方
  • linux 加密可逆,RSA加密是可逆的吗

    java rsa加密可逆吗可逆 有秘钥就成 linux上RSA加密每次都变化吗 加密解密的技术 对称加密 加密方和解密方使用是同一个密钥 加密解密的速度都很快 先将数据明文 分成数据块儿 一般来讲是大小相同的 如果到最后剩下的不能与其他数据
  • Windows下安装MySQL数据库(从完全卸载到安装使用图文详细步骤,附安装包)

    目录 友情提醒 第一章 如何完全卸载干净mysql教程 三个步骤完全卸载 1 步骤一 卸载程序 2 步骤二 删除文件 3 步骤三 删除注册表信息 第二章 下载软件两种方式 1 第一种方式 去官网下载 2 第二种方式 我的百度网盘下载 第三章
  • EduCoder_web实训作业--JavaScript学习手册十六:浏览器对象模型

    第一关 请在此处编写代码 Begin timeId window setTimeout timerTask 2000 End 第二关 请在此处编写代码 Begin window clearInterval timeId1 End 第三关 请
  • Java面试八股文宝典:序言

    序言 Java作为一门广泛应用于企业级应用开发的编程语言 一直以来都是技术面试中的重要话题 无论您是刚刚踏入编程世界的新手 还是经验丰富的Java开发工程师 都需要通过面试来展示自己的技能和知识 在面试中 除了技术知识 还需要展现出解决问题
  • 深度学习-图像物体检测模型发展总结

    转自 https github com hoya012 deep learning object detection
  • 一位年薪50W的测试被开除,回怼的一番话,令人沉思

    一位年薪35W测试工程师被开除回怼道 反正我有技术 在哪不一样 一技傍身 万事不愁 当我们掌握了一技之长后 在职场上说话就硬气了许多 不用担心被炒 反过来还可以炒了老板 这一点在码农界特别明显 许多测试人在辞职时 都有一种心态 烂公司 烂领
  • 用Python制作我的核酸检测日历

    用Python制作一份核酸检测日历 和大家一样 我是一个遵纪守法的好公民 一直按照居住地的防疫政策 按要求完成核酸检测 我的坐标是深圳 2022年以来 大部分时候要求24小时 少部分时候要求48小时 更少的时候要求72小时 没有更长的情况
  • Mac IDEA解决Maven项目命令行报错:command not found: mvn

    IDEA项目的maven包位置在 Applications IntelliJ IDEA app Contents plugins maven lib maven3 所以运行 步骤一 添加环境变量 我的环境变量在zshrc文件下 大家也可以修
  • VS code配置python虚拟环境

    点击右下角 选择需要的解释器
  • 深度学习模型训练问题(长久更新!!!)

    1 OSError WinError 1455 页面文件太小 无法完成操作 问题解决方法 寻找train代码中的num work设置部分 设置变量default 0 2 RuntimeError Failed to process stri
  • 在 Simscape Electrical 中对两区 MVDC 电动船的建模和仿真(Simulink实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink实现 1 概述 在Simscape Electrical中
  • hdoj1007

    由于这道题数据的特点 按照x排序会莫名其妙的TLE 按y排序就好了 也不需要什么辅助数组 一个p数组足矣 546ms AC 按照数组已经排序好的特点 如果从左边取一个点 它和右边取的一个点的y差值大于min d 就不需要继续从右边取点了 因
  • day29

    目录 01 反馈 02 回顾 03 并发访问MySQL 问题概述 并发访问的问题 04 并发访问MySQL 问题演示 05 并发访问MySQL read committed解决脏读问题 06 并发访问MySQL repeatable rea
  • 高并发解决方案相关面试题

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