高并发高可用7种解决方案详解
随着用户数量的不断增加和业务需求的提升,系统必须能够处理大量的并发请求,并保证持续可用性。为了解决这些问题,开发者们提出了各种解决方案。本文将详细介绍七种常见的高并发高可用解决方案。
1、图片服务器分离器
图片消耗资源。因此,我们有必要将图片与页面分开,这基本上是大型网站采用的策略。他们都有独立的甚至许多图片服务器。这种架构可以降低提供页面访问请求的服务器系统的压力,并确保系统不会因为图片问题而崩溃。
2、镜像
镜像是大型网站经常使用的提高性能和数据安全的方法。镜像技术可以解决不同网络访问者和地区带来的用户访问速度差异,促使许多网站在教育网络中建立镜像网站,定期更新或实时更新数据。在镜像技术的细节方面,这里没有解释太深,有许多专业的现成解决方案和产品可供选择。
3、CDN加速技术
CDN的实现可分为三类:镜像、高速缓存、专线。
镜像站点(MirrorSite),它是最常见的,它允许内容直接发布,适用于静态和准动态的数据同步。但购买和维护新服务器的成本较高,必须在不同地区设置镜像服务器,并配备专业技术人员进行管理和维护。对于大型网站来说,更新带宽的成本也大大提高了。
高速缓存,成本低,适用于静态内容。互联网统计显示,超过80%的用户经常访问20%的网站内容。在这种规律下,缓存服务器可以处理大多数客户的静态请求,而原始服务器只需处理约20%的非缓存请求和动态请求,大大加快了客户请求的响应时间,减轻了原始服务器的负载。
缓存服务器通常放置在全国关键节点上。
专线,让用户直接访问数据源,可实现数据的动态同步。
4、分层
分层是企业应用系统中最常见的架构模式之一。系统在水平维度上分为几个部分,每个部分负责相对简单和相对单一的责任,然后通过上层对下层的依赖和调度形成一个完整的系统。
在网站的分层架构中,常见的有三层,即应用层、服务层和数据层。分层架构是合乎逻辑的。在物理部署中,三层架构可以部署在同一个物理机器上。然而,随着网站业务的发展,必须对分层模块进行分离和部署,即三层结构分别部署在不同的服务器上,即网站拥有更多的计算资源来应对越来越多的用户访问。
因此,虽然分层架构模式的最初目的是规划软件清晰的逻辑结构,以便于开发和维护,但在网站开发过程中,分层结构对网站向分布式方向的发展至关重要。
5、限流
在开发高并发高可用解决方案系统时,有三种锋利的工具来保护系统:缓存、降级和流量限制。缓存的目的是提高系统访问速度,增加系统可以处理的容量,可以说是抗高并发流量的银弹;当服务问题或影响核心流程性能时,需要暂时屏蔽,待高峰或问题解决后打开;有些场景不能通过缓存和降级来解决,如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁复杂的查询(评论的最后几页),因此有必要限制这些场景的并发/请求,即限流。
限流的目的是通过限制并发访问/请求或时间窗口中的请求来保护系统。一旦达到限速,可以拒绝服务(定向到错误页面或告知资源不见了)、排队或等待(如秒杀、评论、下单)、降级(返回底部数据或默认数据,如商品详情页库存默认有货)。
6、超时重试
在实际开发过程中,我们看到太多的故障是由于没有设置加班或设置错误造成的,这些故障是由于没有意识到加班设置的重要性造成的。如果应用程序没有设置加班,可能会导致请求响应缓慢,请求积累缓慢,导致连锁反应,甚至导致应用程序雪崩。一些中间件或框架在加班后重新测试(例如,dubbo默认重新测试两次),阅读服务自然适合重新测试,但大多数服务不能重新测试(如订单、付款等)。重新测试的次数太多会导致多次请求流量。
7、应急预案
系统压力测试后发现一些系统瓶颈,系统优化后提高系统吞吐量,降低响应时间,保证系统可用性,但仍存在网络抖动、机器负荷过高、服务慢、数据库Load值过高等风险,为了防止系统雪崩,需要制定应急预案,解决紧急情况。
应急预案可按以下步骤进行:先进行系统分级,再进行全环节分析、配置监控,最后制定应急预案。