Web - 负载均衡、高并发

负载均衡(Load Balance)

是建立在现有网络结构之上,提供一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性.

意思是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务.

 Web - 负载均衡、高并发

                   负载均衡示意图

负载均衡的算法

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

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

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

高并发

高并发的演进思路

高并发系统各不相同.比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统.

在应对高并发的时候,因为系统各自自身特点的不同,所以应对架构都是不一样的.

一个最简单的系统架构

 Web - 负载均衡、高并发

系统集群化部署

 Web - 负载均衡、高并发

数据库分库分表+读写分离

 Web - 负载均衡、高并发

缓存集群引入

 Web - 负载均衡、高并发

引入消息中间件集群

 Web - 负载均衡、高并发

  高并发这个话题本身是非常复杂的,远远不是一些文章可以说的清楚的,他的本质就在于,真实的支撑复杂业务场景的高并发系统架构其实是非常复杂的;

  比如说每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统、支撑几亿用户的大规模高并发电商平台架构,等等;

  各种复杂系统呈现出来的架构复杂度会远远超出大部分没接触过的同学的想象;

1、 进程、线程、协程、异步,非阻塞;——了解使用

2、 Mysql、redis、mongoDB;——理解和使用;

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

DNS解析域名

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

Nginx

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

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

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

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

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

应用场景:做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配置真实服务器地址

请画图展示反向代理流程:

 Web - 负载均衡、高并发

LVS与Nginx区别

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

location的作用:

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

Nginx中如何配置负载均衡:

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

 

 

相关推荐