聊一聊大型网站稳定性建设思路

news2024/12/25 22:40:36

目录

架构阶段的稳定性建设项目

编码阶段的稳定性建设

测试阶段的稳定性建设

发布阶段的稳定性建设

运行阶段的稳定性建设项目

故障发生时的稳定性建设


网站稳定性的建设是一项综合的系统工程,就像人的健康一样,如果平时不注意健康饮食、不注意锻炼,时间 长身体肯定会出问题,对稳定性的考量也是贯穿整个研发生命周期的如下图:


在网站的架构设计时就要考虑稳定性 考虑到网络光纤有可能被挖断,如果只有一个 房那就悲剧了, 100% 流量都没了 甚至要考虑自然灾害的影响而多地建设机房稳定性的建设中有两个重要因素:一是思想上重视,开发人员对稳定性的重视(也就是敬畏之心)可以避免 70% 的故障;二是规范和工具的建设,用以保障稳定性。

架构阶段的稳定性建设项目

一个网站要有好的稳定性,必须在架构设计阶段就做长远考虑,就像建房子要先打好基础一样,否则楼建得越高越危险。
建设高稳定性的架构必须注意以下几点
避免单点: 高可用架构设计的第一条就是要避免单点,从概率出发来 ,无论是机器还是人,没有什么东西是不会犯错的, 避免某个完整的环节成为单点是架构设计的原则但是,在某些场景中,有些功能必须放在同一个应用中,例如统一登录、 网关 、安全过滤等 ,此时要保证尽 按照人群来划分,不要在逻辑上出现单点;或者尽 把服务拆成组件迁到不同的端上执行,例如,可以把安全服务作为 个模块集成 Nginx 或者应用机器中,而不是把它做成一个远程服务接口。
分组隔离: 把应用拆得更细一点,不同的功能模块做成单独的分组,每个分组占用一部分机器集群,这样可以做到服务分组隔离,避免不太重要的分组对重要分组的 现在非常流行的微服务就是一种非常好的分组隔离的实践。
异步化: 在系统设计中要让尽可能多的远程调用异步化,这 是一项重要原则很多时候会因为一个不太重要的功能的强依赖拖垮了整个应用,所以要尽量把不太重要的依赖改成异步调用,避免影响主调用链路的稳定性。
异地容灾 :考虑到很多不可抗力因素 影响,我 需要设计网站的 地容灾甚至全球部署策略,这些不可抗力的事件往往会影响网站的整个架构,必须做长远打算。

编码阶段的稳定性建设

编程阶段的稳定性建设尤其重要, 个好的程序在编码阶段就决定了整个应用系统的质 ,所以在编码阶段要注意下面一些规则:
错误捕获 :一个优雅的系统必然有一套优雅的异常处理机制,在适当的地方如I/O 处理、远程调用、多线程等关键处捕获异常非常重要,防御性编程可以更好地保证系统的健壮性;
异步线程: 在一些批处理调用的地方采用异步线程可以保证主请求的正常返回,同样也可以做到部分的隔离,防止部分请求挂起整个应用;
超时处理 :在远程调用或者调用外围设备时,非常有必要设定超时时间,这样可以保证所有的请求都有一个可预知的返回结果;
限流保护: 每个应用都有一个承载极限,超过这个极限就会带来很大的不确定性,因此,设置自我保护机制可以保证程序的健壮性;

测试阶段的稳定性建设

测试是程序上线前的最后一道保障,测试也是验证程序是否达到预期功能的手段,在本阶段要注意以下事项
自动化对比测试 对比测试就是用线上真实的环境和数据与预发环境对相同的业务接口做返回值的比较,以此判断新上线的代码是否符合预期。
Beta 测试 在线上的真实环境中选取若干台机器,通过绑定 VIP 的方式访问此机器上的数据,以此验证程序是否正确。

发布阶段的稳定性建设

发布阶段稳定性建设应留意以下事项:
分批发布 分批发布可以降低发布风险,不仅可以减少系统部署重启引起的RT 抖动,也可以在发现问题时 即终止发布
多版本发布 合并部署是将多个应用系统同时部署在同 Web 容器实例中共享同 个进程,每个应用之间相互隔离,但是应用之间的 RPC 是通过本地调用而不通过网络调用。

运行阶段的稳定性建设项目

运行阶段稳定性建设要做好几件事:实时监控报警、过载保护和自动降级、实时数据对账,核心原则是实时发现问题,提供必要的保护措施。
实时监控报警 线上监控必须包含系统监控,主要是监控服务器的 CPU Loa磁盘、内存等一些系统指标的异常情况;应用监控主要是监控响应时间、 QPS异常错误等;业务监控主要是监控一些业务指标是否有异常(如实时的下单量、司机和乘客的在线数量业务指标)。
过载保护和自动降级 线上运行中的系统需要有一些保护措施,如系统的某些指标达到瓶颈时要有必要的保护 Loa 达到系统的最高瓶颈时需要拒绝一些请求,以防止系统被压垮;涉及 些远程调用时可以设置最大并发数,一旦超过该阀值就自动 fast fail 以保护系统。
实时数据对账 这属于业务监控范围 在涉及 些敏感信息时,为了确保正确性,需要有实时的对账校验,最典型的就是资金数据,以及涉及跨单元数据复制时对数据一致性的对账检查.

故障发生时的稳定性建设

一旦发生故障,最重要的就是快速止损、定位故障并快速恢复 按照经验,当故障发生时,第一反应就是快速回滚了解故障现象,根据故障现象判读故障原因,进而找出解决办法。
减少故障的定位时间和快速恢复策略在故障发生时是至关重要的。
故障定位 快速定位故障可以缩短故障的恢复时间 如何定位故障?据统计,90% 的故障都是由变更所致,所以快速收集变更信息和线上机器的异常数据非常重要,但难点在于这些数据往往散落在各个 方,井且格式多样。
快速恢复 影响故障恢复时间的一是故障定位时间,二是所采用的快速恢复的手段 例如在多版本部署出现故障时,可以通过快速切换版本来恢复;在异地多活的情况下可以把流量切换到不同的单元来止损。
 

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

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

相关文章

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,fr…

C++入门(05-2)从命令行执行C++编译器_GCC

文章目录 GCC编译器1. 下载MinGW-w64,安装(不推荐)2. 使用MSYS2安装MinGW-w64(推荐)2.1 安装MSYS22.2 初始化和更新2.3 安装MinGW-w64编译器2.3 在MSYS2 Shell中导航到代码目录2.4 使用 g 编译2.5 运行可执行文件 GCC编…

【Qt】qt发布Release版本,打包.exe可执行文件

前言:Qt编译的可执行程序,如果直接运行,会出现0xc000007b报错,或者“由于占不到Qt5Network.dll,无法继续执行代码。重新安装程序可能会解决此问题”的报错,因为缺少相关的依赖包和动态库。 1、第一步:找到…

仕考网:大三能考公务员吗?

本科生在大三阶段不具备报考资格,因为尚未完成学业并不是应届生。专科生在大三时则属于应届生,有资格参加公务员考试。 公务员报考条件包括: 1.国籍; 2.年龄于18至35周岁之间,对于当年毕业的硕士或博士研究生,年龄限…

Python: #!/usr/bin/python3 #!/usr/bin/env python3

只能放在第一行,第二行就没有效果了。 1. 路径不同 #!/usr/bin/python3&& #!/usr/bin/env python3写在脚本语言第一行的目的是 想要以什么可执行程序去运行这个文件中的代码。 #!/usr/bin/python3是告诉操作系统执行这个脚本的时候,调用/usr/bin…

Linux之ebpf(3)uprobe与ebpf

Linux之ebpf(3)uprobe简要使用 Author: Once Day Date: 2024年9月5日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: Linux基础知识_Once-Day的博客…

心脑血管科张景龙医生:冠状动脉狭窄的症状与检查方法

冠状动脉狭窄作为一种常见的心血管疾病,其症状的出现往往与心肌供血不足密切相关。了解这些症状以及如何进行准确的检查,对于及早发现、诊断和治疗冠状动脉狭窄至关重要。本文将详细介绍冠状动脉狭窄的常见症状及检查方法。 冠状动脉狭窄的常见症状 1、…

电路笔记 控制(PID):Proportional–integral–derivative controller 比例-积分-微分控制器与仿真

PID控制(Proportional-Integral-Derivative Control)是一种常用的反馈控制算法,广泛应用于自动控制系统中。PID控制器通过对比例、积分和微分三项的计算,生成控制输出来调节系统的行为,以使其达到期望的目标值。 PID控…

利用人类反馈优化文本摘要质量

人工智能咨询培训老师叶梓 转载标明出处 精准评估和提升模型生成文本的质量,尤其是自动文摘的质量,成为了一个日益突出的挑战。传统的评估方法,如ROUGE指标,虽然在一定程度上能够衡量摘要的相关性,但往往无法全面反映…

Java算法:最大间距

前言 在处理数据密集型应用时,提高查询性能显得尤为关键。 解决最大间隔问题——即确定一组数值中最宽的相邻元素距离——是此类任务中的一大挑战。 该问题不仅在算法竞赛中常见,也是软件工程师面试的一个焦点,解决方法多样,包…

【B题第三套完整论文已出】2024数模国赛B题第三套完整论文+可运行代码参考(无偿分享)

基于多阶段优化的电子产品质量控制与成本管理研究 摘要 随着现代制造业和智能化生产的发展,质量控制和生产优化问题成为工业管理中的重要研究课题。本文针对电子产品生产过程中质量控制和成本优化中的问题,基于系统优化和决策分析思想,通过…

【C++ Primer Plus习题】12.1

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "Cow.h" u…

空气能热泵热水器

空气能热泵热水器压缩机把低温低压气态冷媒转换成高压高温气态&#xff0c;压缩机压缩功能转化的热量为q1&#xff0c;高温高压的气态冷媒与水进行热交换&#xff0c;高压的冷媒在常温下被冷却、冷凝为液态。这过程中&#xff0c;冷媒放出热量用来加热水&#xff0c;使水升温变…

机器学习数学公式推导之降维

文章目录 降维线性降维-主成分分析 PCA损失函数SVD 与 PCoASVD 的基本形式SVD 的计算p-PCA 小结 P22 (系列五) 降维1-背景 本文参考 B站UP: shuhuai008 &#x1f339;&#x1f339; 降维 我们知道&#xff0c;解决过拟合的问题除了正则化和添加数据之外&#xff0c;降维就是最…

数据链路层与ARP协议

一.认识识以太网 "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内 容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等; 以太网中的网线必须使用双绞线; 传输速率有 10M, 100M, 1000M 等; 以太网是当前应用…

【最新华为OD机试E卷-支持在线评测】机器人活动区域(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

2024年【金属非金属矿山(露天矿山)安全管理人员】考试题及金属非金属矿山(露天矿山)安全管理人员最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;露天矿山&#xff09;安全管理人员考试题参考答案及金属非金属矿山&#xff08;露天矿山&#xff09;安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山&#xf…

Java魔板游戏软件(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【第0007页 · 数组】数组中重复的数据(如何实现数组的原地修改)

【前言】本文以及之后的一些题解都会陆续整理到目录中&#xff0c;若想了解全部题解整理&#xff0c;请看这里&#xff1a; 第0007页 数组中重复的数据 今天&#xff0c;我们来看一个在实际工作中运用不多&#xff0c;但是对于一些算法题还是有必要的奇技淫巧——数组的原地修…

基于开源链动 2 + 1 模式、AI 智能名片与 S2B2C 商城小程序的用户忠诚度计划

摘要&#xff1a;本文深入探讨了在商业环境中执行用户忠诚度计划的创新途径。通过整合开源链动 2 1 模式、AI 智能名片以及 S2B2C 商城小程序等先进元素&#xff0c;从提供福利、解决问题和创造赚钱机会三个核心方面展开详细阐述。研究表明&#xff0c;这些新技术和新模式的有…