高并发解决方案

导读:本篇文章讲解 高并发解决方案,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

什么是DNS解析域名

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

Nginx

Nginx的作用

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

应用场景

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

什么是反向代理

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

如何配置反向代理

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

常用Nginx的相关配置

upstream负载均衡配置。
server [IP] [weight] [backup] 配置tomcat集群。
proxy_connect_timeout、proxy_read_timeout、proxy_send_timeout连接时间、真实服务器响应时间、返回结果时间。
location 匹配用户请求的url,根据不同请求转发到不同的服务器。
root配置本地资源路径。
proxy_pass 配置真实服务器地址。

如何配置负载均衡

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

Nginx如何实现动态负载均衡

四层代理、七层代理

LVS与Nginx区别

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

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

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

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

LVS、F5

负载均衡有哪些算法

轮询算法

按照实际顺序分配到不同的服务器,当其中一台服务器宕机则被自动剔除,切换到正常的服务器。

权重算法

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

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

服务器分布式后,产生的问题

分布式锁

可以使用redis setnx分布式锁,解决多个服务器并发访问同一个创建、修改操作(该操作必须串行操作)。

分布式全局ID

分布式Session一致性问题

分布式事务

分布式任务掉

可以通过在数据库中设置定时任务名称即执行状态,如果有机器执行了定时任务,修改数据库中状态,后来的服务器先查询任务状态,如果已经在执行或者执行完成就不会再去执行任务。

分布式日志收集

分布式配置中心

Keepalived

LVS与Keepalived区别

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

作用

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

如何实现双机主从热备

Nginx+Tomcat:在upsteam中配置多台服务器,从服务器后加backup。
Keepalived+Nginx:在多台nginx服务器上安装keepalived,将主服务器的state设置为MASTER,从服务器state设置为BACKUP,主服务器的优先级高于从服务器。

LVS+Keepalived+Nginx架构流程图

在这里插入图片描述

项目的高可用

项目发布如何不影响正常用户访问

可用两台服务器互为热备,平时各自负责各自的服务。在做线上更新的时候,关闭一台服务器的tomcat后,Nginx自动把流量切换到另外一台热备服务器上,从而实现无痛更新,保持了服务的高可用性。

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

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

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

一般的服务器是强制F5进行刷新或者是清除缓存,最有效的方法是在请求资源后面加上时间戳或者随机数。

参考

https://blog.csdn.net/q15102780705/article/details/100586366

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100376.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!