高并发会带来哪些问题?如何解决这些问题?

您所在的位置:网站首页 数据库中并发访问控制面临哪些问题 高并发会带来哪些问题?如何解决这些问题?

高并发会带来哪些问题?如何解决这些问题?

2024-03-13 23:09| 来源: 网络整理| 查看: 265

高并发是什么

高并发是指在线高峰期服务器收到高负荷访问和大量并发请求,需要服务器在单位时间同时处理任务的能力尽可能的高。对应到研发系统中,要在短时间能支持大量访问请求的情况。

相关指标 吞吐率throughtput:单位时间内处理的请求数量 qps(query per second):每秒响应的请求数 并发数:同时承载正常使用系统功能的用户数量 响应时间(response time):系统对请求作出响应的时间 高并发会带来哪些问题? 系统故障

最基础的问题,高请求量下会直接把服务打挂。

解决思路:集群化

一个系统拆分成多个系统,配合负载均衡策略,使用集群策略。可以将当前系统拆分,也可以建立mysql/redis/mq集群。

解决思路:缓存

对于读多写少的场景,适合引入缓存集群。用缓存集群承载大部分读请求,被用户大量访问的静态资源也可以缓存在CDN中。

解决思路:中间件

使用MQ集群进行异步,实现削峰效果

解决思路:流控

对流量进行控制。如计数器算法、漏桶算法、滑动窗口算法。

数据的不一致

一旦涉及到缓存,就会出现数据一致性问题。 数据不仅存储在数据库中,也会存储在缓存中加快访问速度。更新时如果先修改数据库,再删除缓存,如果缓存失败,那么缓存中就是旧数据,导致数据不一致。 如果先删除缓存,再修改数据库,如果数据库修改失败,尽管数据库修改失败,但不会出现数据不一致的情况。 因此具体的应用场景需要根据业务取舍

负载均衡如何实现?

单机的并发量和数据量有限,会使用多台服务器构成集群对外提供服务。如何分配客户端的请求到多台服务器上,就是负载均衡。 负载均衡的思路是建立一对多的映射机制,一个请求入口映射到多个处理请求的节点。

一致性哈希。主要适用于对上下文(如实例本地缓存)依赖程度高的场景,如希望同一个类型的请求打到同一台机器,则可使用该负载均衡方法。

存储节点的ip地址和数据对2^32取模,映射到哈希环上。数据顺时针方向遇到的第一个存储节点就是对应数据的存储节点。如果对实例扩缩容,只会影响该哈希环上顺时针相邻的后继数据,不会影响其他数据。 为每个节点设置多个虚拟节点,虚拟节点均匀分布,节点移除后虚拟节点后的节点共同分担,避免节点分布集中,节点移除后导致下一个节点崩溃。

不同服务器给予不同权重轮询/随机权重轮询/轮询

根据每次ping的最短时间选择

根据节点的活跃请求数选择

http负载均衡

根据用户的http请求计算出真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器

image.png

DNS负载均衡

DNS服务器上配置多个域名对应IP的记录

image.png

反向代理负载均衡

在防火墙外面放代理服务器,在防火墙里面放真正的内容服务器。反向代理转发http请求,扮演了浏览器和后台web服务器中转的角色。 根据负载请求算法将请求的浏览器访问转发到不同的web服务器处理,处理结果经过反向服务器返回给浏览器。

image.png

CDN内容分发网络

在同一个域名映射为多ip的基础上更进一步,按照制定规则映射域名的ip,一般按照地理位置,返回离用户最近的ip

IP负载均衡

ip工作在网络层和传输鞥,对ip数据包的ip地址和端口信息进行修改达到负载均衡。 用户访问请求到达负载均衡服务器,负载均衡服务器在操作系统内核进程获取网络数据包,根据算法得到一台真实服务器地址,然后将用户请求的目标地址修改成该真实服务器地址,数据处理完后返回给负载均衡服务器,负载均衡服务器收到响应后将自身的地址修改成原用户访问地址后返回数据。类似于反向服务器负载均衡。 image.png 开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情

参考

zhuanlan.zhihu.com/p/187336277 cloud.tencent.com/developer/a… www.cnblogs.com/aspirant/p/…



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3