为什么高并发这么难?非停事故频频发生?一天宕机三次?【B站、唯品会也难幸免】我们该怎么做?

宕机事件

 原因解析:


1、一方面故障是不可避免的,有人为的故障(是人就容易出错的)和非人为的故障(机器 Failure)。这些是无法避免的停机,还有有计划的停机,如发布新系统、升级维护、更新硬件等。这也是为什么行业中即使部分公司做得再好也只能说自己能做到多少个 9,而非 100% 的主要原因。
2、另一方面,从分布式架构设计来说,世界上的软件都是有故障的,当故障发生时,大家首先希望故障不要蔓延开,能够控制得住,其次还希望故障的时间越短越好,不要太长。
然而,架构系统也有很多的依赖,如基础设施 DNS、CDN、运营商、机房等等,想要实现稳定,需要大家一起实现。

该怎么做:

高并发的难点主要体现在以下几个方面:

1. 资源限制:高并发情况下,系统需要同时处理大量的请求,这就需要系统具备足够的资源来支撑。例如,服务器的处理能力、网络带宽、数据库连接数等都需要满足高并发的需求,而这些资源往往是有限的。

2. 系统设计:高并发场景下,系统的设计需要考虑到并发请求的处理方式、请求的分发和负载均衡等问题。如果系统设计不合理,容易导致某些请求被集中到某个节点,造成性能瓶颈或宕机。

3. 数据一致性:在高并发场景下,多个请求同时对同一份数据进行读写操作,容易引发数据一致性的问题。例如,同时有多个请求对同一份数据进行修改,可能会导致数据错误或冲突。

4. 锁竞争:在高并发情况下,多个请求同时竞争某个资源的锁,容易导致锁竞争问题。如果锁竞争过于激烈,可能会导致请求排队等待,进而影响系统的响应时间和并发能力。

5. 缓存一致性:高并发场景下,缓存的使用非常重要,可以减轻数据库的压力,提高系统的性能。但是,缓存的使用也需要考虑到缓存的一致性问题,即缓存与数据库之间的数据同步和更新。

综上所述,高并发的难点主要集中在资源限制、系统设计、数据一致性、锁竞争和缓存一致性等方面,需要综合考虑多个因素来解决高并发带来的问题。

在运维方面,可以采取一些措施来应对故障,如:

监控系统:建立有效的监控系统,及时发现故障并采取措施进行修复。
容灾备份:建立冗余的系统架构和备份机制,当主系统出现故障时,能够快速切换到备用系统。
自动化运维:通过自动化工具和脚本来管理和维护系统,减少人为操作失误的风险。
在架构设计方面,可以采取一些措施来提高系统的稳定性和可用性,如:

分布式架构:将系统拆分为多个独立的服务,通过负载均衡和容错机制来提高系统的容量和可用性。
异步处理:将一些耗时的操作异步化,减少对系统的阻塞和影响。
缓存和数据分片:使用缓存来减轻数据库的压力,并采用数据分片的方式来提高数据的读写性能和并发能力。
总之,故障是高并发系统中不可避免的一部分。为了提高系统的稳定性和可用性,需要在运维和架构设计方面做出相应的规划和准备,以应对故障带来的影响。这也是为什么即使部分公司做得再好也只能说自己能做到多少个9,而非100%的主要原因。

 思考:

1、你的系统达到了几个9?你知道你的系统最大并发?

2、对于故障治愈、故障熔断您是否已实践过了?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值