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

news2024/11/22 19:30:03

宕机事件

 原因解析:


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

该怎么做:

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

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

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

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

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

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

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

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

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

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

 思考:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/703534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP 的 Logo 为什么是大象?

因为大象是世界上最好的动物。 当然,这只是开玩笑,那么为什么PHP的LOGO是大象呢?还有哪些关于PHP的LOGO的有趣的事情呢? 吉祥物-大象 ElePHPant 是一款可爱的 PHP 吉祥物,其设计中有一头大象。 最初的LOGO 1998 年…

golang,OpenGL,计算机图形学(一)

开发环境与依赖 github.com/go-gl/gl/v4.1-core/gl github.com/go-gl/glfw/v3.2/glfw OpenGL只提供了绘图功能,创建窗口是需要自己完成的。这就需要学习相应操作系统的创建窗口方法,比较复杂,并且每个操作系统都不同。为简化创建窗口的过程…

JavaScript ,16种常用数组方法

前言 📗众所周知,向后端请求数据,处理数据是前端工程师必备的技能,从后端请求回来的数据往往是数组的形式返回到前端,因此数组处理方法的重要性可想而知;每次在处理对应数据都需要查阅一下因此记录一下使用…

MVVM框架代码逻辑整合

文章目录 逻辑总结为什么要将业务和视图分开为了解耦数据不同数据层数据冗余视图层非业务数据业务数据再处理 保证各层数据的封闭性 逻辑总结 将前端分为视图层,中间层,业务层。 视图层负责页面渲染业务层负责数据处理中间层负责业务层和视图层的关系 …

Mariadb读写分离

zzhttps://mp.csdn.net/mp_blog/creation/editor/131087599https://mp.csdn.net/mp_blog/creation/editor/131087599准本环境 systemctl stop firewalld setenforce 0 #关闭防火墙 iptables -F 192.168.1.2 #主库服务器 192.168.1.3 #从库服…

【Flutter】Flutter 使用 json_serializable 进行 JSON 序列化

文章目录 一、前言二、 json_serializable 简介三、如何在 Flutter 中安装和配置 json_serializable四、json_serializable 的基本使用五、一个实际的 Flutter 应用示例六、版本信息七、总结 一、前言 嗯啊,你好呀!欢迎来到我的博客。 今天我们要聊聊的…

基于安卓的初中英语语法APP设计与实现(源码+文档+PPT)

智能手机的普及使移动学习成为一种全新的学习方式,越来越受到研究者与学习者的关注。调查显示,移动学习对英语学习特别是应用英语的学习有良好的效果。基于Android设计开发的英语语法APP包含“练习题册”、“语法分析”、“搜索语法”三大功能模块,能够帮助学生利用碎片时间学习…

HBase(11):shell管理操作

1 status 例如:显示服务器状态 2 whoami 显示HBase当前用户,例如: 3 list 显示当前所有的表 4 count 统计指定表的记录数,例如: 5 describe 展示表结构信息 6 exists 检查表是否存在,适用于表量特别多的情况

nginxWebUI 远程命令执行漏洞

漏洞介绍 nginxWebUI是一款图形化管理nginx配置的工具,能通过网页快速配置nginx的各种功能,包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置,配置完成后可以一键生成nginx.conf文件&#xff0c…

Adobe中修改注释签名

控制面板-> 系统和安全-> 管理工具-> 计算机管理-> 打开“计算机管理”对话框-> 在左边栏的系统工具下选择本地用户和组-> 点击“用户”->选择要改的用户名->右键重命名 打开Adobe Acrobat->点击"编辑"->首选项->注释 ->把 “登…

vue实现复制文本格式化

vue全局方法 实现复制文本格式化,方法简单实用易懂,100%成功 先上效果图 实现步骤 第一步 ,在main.js 插入以下代码 Vue.prototype.copys = function copys(text) {var isRTL = document.documentElement.getAttribute(dir) === rtl;var element = document.createElemen…

【半监督图像分割 2022 CVPR】UCC

文章目录 【半监督图像分割 2022 CVPR】UCC摘要1. 简介2. 相关工作2.1 半监督分类2.2 半监督语义分割。 3. 交叉头协同训练的半监督学习3.1 整体预览3.2 弱增强和强增强3.3 动态交叉集复制粘贴策略3.4 不确定度估计 4. 实验4.1 实验设置4.2 对比sota4.3 消融实验 5. 总结 【半监…

《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序的编写方法

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Linux下的分布式迁移工具dsync使用

一、Linux下的分布式迁移工具dsync使用 dsync 是一个在 Linux 系统上用于迁移文件和目录的工具。它可以在不同的存储设备之间进行数据同步和迁移操作。dsync 是 rsync 工具的一个衍生版本,专注于在本地文件系统之间进行数据迁移。 这里是官网:dsync 1、…

【强化学习】常用算法之一 “DQN”

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

5、多层感知机:过拟合解决方法:权重衰退、丢弃法

1、权重衰退 1. 基础概念 实际上,限制特征的数量是缓解过拟合的一种常用技术。然而,简单地丢弃特征对这项工作来说可能过于生硬。我们继续思考多项式回归的例子,考虑高维输入可能发生的情况。多项式对多变量数据的自然扩展称为单项式&#…

微信小程序学习记录3 案例分享<蓝牙小车UI>

效果 页面1 一键连接蓝牙 页面2 控制页面 思路 页面1 旋转动画一键连接蓝牙(写死了device id和uuid) 页面2 轮播图按键 按键绑定不同事件即可

多模态大语言模型综述来啦!一文带你理清多模态关键技术

夕小瑶科技说 原创 作者 | 智商掉了一地、Python 随着 ChatGPT 在各领域展现出非凡能力,多模态大型语言模型(MLLM)近来也成为了研究的热点,它利用强大的大型语言模型(LLM)作为“大脑”,可以执…

Linux卸载OpenJDK

1、JDK版本 java -version2、查看当前系统OPENJDK rpm -qa | grep jdk3、卸载 sudo rpm -e --nodeps java-1.8.0-openjdk sudo rpm -e --nodeps java-1.8.0-openjdk-headless sudo rpm -e --nodeps java-1.8.0-openjdk-devel sudo rpm -e --nodeps copy-jdk-configs4、其他 …

爬虫入门指南(3):Python网络请求及常见反爬虫策略应对方法

文章目录 引言HTTP协议与请求方法HTTP协议请求方法 使用Python进行网络请求安装Requests库发送GET请求发送POST请求 反爬虫与应对策略IP限制使用代理IP: 用户代理检测设置User-Agent头部: 验证码参考方案 动态页面请求频率限制未完待续.... 引言 在当今…