如何做好稳定性

如何做好前端稳定性监控? 阅读详情

电商类的网站不可避免要面对大促的话题,每次大促对系统的可用性要求很高,是对技术人的一次考验,所以要做好整套的方案来保证。

我所在的公司为手机公司,每年新品销售的时候,流量也是非常大,是平时的10倍,甚至上百倍,今天来聊一聊稳定性相关的话题,谈下如何做好稳定性。

 

 

一、梳理主链路,保证主链路的可用性

电商类的主链路就是从商品浏览,到添加购物车,保存订单,支付等完整下单链路。梳理主链中的目的有:

1、避免单点

一般来说要尽量避免在主链路中访问数据库,因为数据库扩容比较麻烦,当然如果公司的分库分表做的很好了,也是可以的,主要是保证每一个节点都可以水平扩容。

 

2、梳理强弱依赖

什么是强、弱依赖,这个网上已经有不少介绍了,即如果调用某个服务挂了不影响主流程,或者可以通过其它手段恢复,则不要返回错误给用户,或者可以通过开关降级掉。

举个例子:添加用户地址时,需要发MQ记录操作流水,其中MQ如果发送失败应该只打印下日志,而不应该直接返回错误给用户。

 

3、避免不合理的调用

常见问题有:

循环调用服务;

调用接口过多(见到一个页面下来就调用4,5个接口的)

 

常见的方案有:

1)、缓存

一些访问量特别大的,对数据一致性要求没那么高的,可以通过缓存来降低压力。

像商品详情页的获取商品详情接口,我们一般将接口缓存一段时间的。

 

2)、静态化

一些数据如果可以通过静态化的,尽量不要通过接口。

如添加地址时每一个省下面有多少市,市下面有多少区,这些地址信息就不要调用接口了,完全可以放入到js中,然后放上CDN,就可以大大降低系统交互了。

 

3)接口合并

将一些小的接口做聚合,尽量减少和后端的交互。

 

 

二、快速失败、防止雪崩

1、超时参数

连接各种中间件参数,如Mysql、Redis、RabbitMQ等,保证中间件出问题不要出现雪崩;

还要调用其他服务的,大部分公司会采用微服务,服务之间调用需要保证超时时间,现在最新的方案是逐层动态计算,即一个接口要串联调用5个服务,总的超时时间设置为5秒,在调用第一个服务后还剩下4.8秒,则在调用第2个服务的时候会把4.8作为超时时间传下去,有兴趣的大家可以网上搜索下。

 

 

2、限流

主要方案分几层:

接入层:可以在接入层中间件上,如nginx做限流,笔者公司自己开发过nginx插件,可以针对每个URL进行保护;

服务层面,注意线程池等相关参数的设置,可以用Hystrix进行保护。

 

 

三、削峰

一些关键场景同时访问量特别大,就需要采用削峰了,像添加购物车型、保存订单按钮,常用做法有:

1、验证码

2、排队

3、随机延迟

即点按钮后,随机延迟1-3秒才提交请求

 

这个可以根据自己的业务情况去选择。

 

四、做好Checklist

每次大促需要做好多准备工作,很多细节,一般前面已经加班好久了,真正到大促那天好多人已经非常疲惫了,为了保证发布的有序,需要把所有线上操作全部合成一个大的Checklist,保证现场发布有序进行。

 

五、做好故障预案

出了问题之后,如果还要去想做哪些事情,可想而知故障处理的时效是无法保证的,所以要提前做故障预案做好,做到快速止损。

 

评价一个故障预案是否好有几个标准:

1、是否可执行

即每一项做的事情一定是具体的步骤,如执行什么shell命令,还是在某个后台操作什么东西

 

2、责任到人

 

3、要覆盖所有核心场景

一般分2种:可预知的和不可预知的,对于可预知的,故障范围已知的,事先明确操作步骤,像一些中间件没做高可用,还需要现场做一些操作的,请提前写明做哪些事情;

针对只知道现象,不知道什么原因的,也要明确标准操作流程,如先降级,再限流等

 

 

还有一些通用的其它方案:如容量评估、监控等就不在这里细说了。

 

 

最后说下最佳实践:

一、现场所有人坐在一起

开发、运维现场一定要坐到一起,有条件的可以专门坐到一个密封的办公室里,这样出了问题之后大家可以快速沟通,执行Checklist也非常高效。

 

二、保证现场有序

一定要有一个人坐镇全局,出问题的时候要不要采取措施,都由这个人来做统一指挥,这样可以保证现场的秩序是可控的。

如果一出问题全跑到运维那里,那个时间运维的压力特别大,很容易出错。

 

三、提前操作完毕

即所有Checklist的东西至少一定要在大促开始前1小时全部做完,因为如果临到活动开始前还在不停的操作,一定会手忙脚乱,很容易出问题。

这就需要架构上、方案上要做好,保证所有东西一定能提前发布,这里很多细节,像需要发布的页面提前发布上去做好灰度,准点开放自动解除灰度。

 

 

 

从一次线上故障来看redis删除机制

一次线上Mysql死锁分析

RabbitMQ网络框架代码分析

RabbitMQ网络框架代码分析二:命令分发

蘑菇街背后系统的稳定性保障实践 - 蘑菇街技术经理 - 苏武 电商每年有大促的考验,电商业务复杂,电商系统比业务更复杂,大促高峰期系统的压力远大于平时,怎么才能保障系统在高峰期的稳定性;如何从业务目标出发,比较准确的预估每个系统的峰值;如何在准备阶段做系统架构风险梳理和系统改造,如何做系统的压力测试才能得到准确的系统数据,如何做峰值时系统的限流和有损服务,本文将一一讲解。 演讲提纲: 1.大促的特点; 2.蘑菇街稳定性保障方法论; 3.业务目标分解,峰值评估; 4.系统架构梳理和依赖分析; 5.全链路压测; 6.限流降级,开关和预案的准备; 7.总结; 听众受益: 1.对电商大促稳定性保障玩法的了解; 2.学习稳定性保障的方法论; 3.了解具体稳定性系统的实现方式,如限流降级系统,开关系统,全链路跟踪和压测系统等; 立即下载

相关推荐

CSP-J 复试考点

可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。枚举算法是指,列举出所有可能的取值,从中找出最优解。

GuanHeTian的博客 2214

如何做大促稳定性保障

如何做好大促的一个稳定性的一个保障

qq_35756444的博客 351

西门子S7-200 SMART 实战解析:滑动平均值滤波算法在模拟量信号处理中的应用

本文详细解析了在西门子S7-200 SMART PLC中实现滑动平均值滤波算法的实战应用。通过处理模拟量信号如温度、压力等,该算法有效抑制信号干扰,提升系统稳定性。文章涵盖算法原理、程序框架、信号采集及调试优化,为工业自动化工程师提供实用指南。

gitlab7runner的博客 1151

【分布式】分布式场景下的稳定性保障

稳定性保障简单理解就是不让系统出现不可用的情况,或者不可用的情况每年只能发生几十分钟。为什么要稳定性保障?因为现在很多的电商和支付系统已经属于社会基础系统,持续一段时间不可用会影响比较大,同时也损失了用户的信任。稳定性保障的场景非常多,只要流量非常大的业务就需要系统性的进行稳定性保障,包括直播、电商秒杀、电商大促等场景。2022年9月3日晚刘德华“把我唱给你听”线上演唱会,最终这场线上演唱会的在线观看人次达到3.5亿,那么支持3.5亿人次观看就是一种稳定性保障场景。

DreamSun的博客 786

[Vue][面试]谈谈你对MVC、MVP和MVVM的理解

谈谈你对MVC、MVP和MVVM的理解 答题思路:此题涉及知识点很多,很难说清楚,说透彻,因为MVC,MVP这些我们前端程序员自己甚至都没用过。但是恰恰反映了前端这些年从无到有, 从有到优的变迁过程,因此沿此思路回答将十分清除。 Web1.0时代 在web1.0时代,并没有前端的概念。开发一个web应用多数采用ASP.NET/Java/PHP编写,项目通常由多个aspx/jsp/php文件构成,每个文件中同时包含了HTML、CSS、JavaScript、C#/Java/PHP代码, 系统整体架构可能如下图所

你好,欢迎光临! 723

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

funfan的博客 5196

爆肝整理,性能测试-双十一等大促活动稳定性保障分析,一篇通透...

大促典型场景及优化方案1、云资源稳定性保障单云模式存在一定稳定性风险,混合云架构在容灾方面效果更好;核心链路梳理,可以将历史大促或者峰值的访问URL存储起来,经过处理后作为核心链路参考;验证线上的性能容量搭建单独的仿真环境,为了避免和线上不一致,可通过一套标准的脚本来进行检查配置;弹性伸缩容:设置动态扩缩容,超过固定的比例阈值,进行动态扩容(双十一零点峰值时候慎用);

大佬云集技术答疑交流群:743262921(进群暗号:222) 1006

宇树G1开发实践--PPT汇报(遥控版)

本文介绍了一种基于遥控器交互的机器人演示控制系统。系统通过DDS中间件接收遥控器信号,采用位掩码边沿检测技术实现按键精准响应,将不同按键映射为播放控制命令(暂停/重播、跳转、跳过等)。核心交互逻辑包含主播放循环、命令处理和暂停机制,支持播放过程中的实时控制。与自动顺序播放版相比,该系统显著提升了演示灵活性,适用于需要人机互动的演讲场景。使用前需确保网络连接和设备安全,并熟悉按键功能映射。该系统实现了专业级的人机协同演示体验。

m0_47999117的博客 680

面对突发流量,保证服务可用的4个手段

不知道你有没有这样的经历,线上的系统突然来了很大的流量,有可能是黑客的攻击,也有可能是业务量远远大于你的预估,如果你的系统没有做任何的防护措施,这时候系统负载过高,系统资源慢慢耗尽,接口响应越来越慢,直至不可用,这又导致了调用你接口的上游系统发生资源耗尽的情况,最终导致系统雪崩。想想就知道,这是一个灾难性的后果,那么有什么方法呢?面对这种突发流量的场景,核心思路就是要优先保证优核心业务和优先保证绝大部分用户。常见的应对手段有四种,降级、熔断、限流和排队,下面我会一一讲解。

m0_73311735的博客 314

第10章: MMU notifier与HMM的协作

本文摘要: HMM(Heterogeneous Memory Management)是Linux内核提供的异构内存管理框架,用于统一CPU与设备(如GPU、DSP等)的内存访问。它通过镜像页表技术实现虚拟地址空间共享,自动同步CPU和设备页表变化,支持透明的内存迁移和设备内存管理。HMM构建在mmu_interval_notifier机制上,利用序列号检测页表修改冲突,提供高效并发控制。核心数据结构包括hmm_range和HMM PFN标志位,通过hmm_range_fault()实现页表遍历和缺页处理。

图形/计算GPU的驱动与虚拟化技术分享园地 3088

第 0 篇|开篇:为什么我们要从 RNN 讲到 Transformer?

本文介绍了NLP模型的发展历程,从早期规则式方法到如今Transformer模型的演进脉络。文章强调理解NLP技术需要从基础模型入手,重点分析了传统机器学习的局限性(无法处理变长有序输入和深层语义关联),以及RNN如何通过循环结构首次实现顺序依赖捕捉。作者指出Transformer之所以成为主流,是因为它通过自注意力机制解决了RNN的核心痛点(低效串行处理和长距离依赖问题)。专栏将采用"从问题到解决方案"的讲解方式,帮助读者建立完整的NLP知识体系,避免孤立学习和盲目追新。全文旨在为初学

记录 IT 领域经验与见解的博客 73

一文读懂大促备战:亿级核心流量系统稳定性保障指南

亿级核心流量系统稳定保障,需多管齐下:容量预估要结合业务增长规划存储;高可用治理关注超时、限流等 “八大注意”;梳理网络拓扑,按规则优化;优化系统架构,遵循读写分离等原则;搭建全景监控大屏,实时掌握系统状态;制定灵活降级预案,分级响应,兼顾核心业务与用户体验,全方位确保大促系统平稳运行。

技术人宝哥 947

第133章 PCL OrientedBoundingBox 有向包围盒

中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。

yumeiguo的博客 263

【稳定性】浅谈团队如何做好系统稳定性

3.

BASK2312的博客 1353

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

稳定性全系列(一)——如何做好系统稳定性建设

目录 一、背景介绍 二、故障源的分类 三、稳定性建设四要素 第一要素:人 第二要素:工具 第三要素:预案 第四要素:目标 四、稳定性建设四个方向 第一个方向:根基要抓牢(45%) 第二个方向:工作在日常(30%) 第三个方向:预案是关键(15%) 第四个方向:容量是核心(10%) 五、总结 一、背景介绍 在移动互联网时代,用户群的积累比之前更容易,但同样,也会因为糟糕...

大步流星的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

如何做好稳定性建设

稳定性全系列(一):如何做好系统稳定性建设-InfoQ 高德打车稳定性建设 - AIQ 稳定性保障6步走:高可用系统大促作战指南! ZLJ卖场-全链路压测演进

qq_43519025的博客 587

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

面对系统的稳定性、我们如何做好系统稳定性建设?

1.背景介绍 在移动互联网时代,用户群的积累比之前更容易,但同样,也会因为糟糕的用户体验,而快速流失用户,哪怕是号称独一无二的12306网站,也在不断优化系统来提升用户体验;而在后移动互联网的物联网时代,软件工程师需要和硬件工程师配合,来保证提供的服务稳定和可靠。对,我们的产品就是为了实现用户价值,并提供非凡用户体验! 如果说良好用户体验是增长的基础,那么良好的操作性、稳定的使用体验就是用户体验的基础,排除掉软件可操作性(这一块需要依靠专业的设计师),剩下的就是客户端(这里的客户端包括各种小程序、WebAp

jackl 3151

如何做好极端业务稳定性保障

稳定性保障需要一定的架构设计能力,又是微服务架构比较核心的部分。但我们该如何做好极端条件下的稳定性保障呢?

key_3_feng的博客 224

研发人员如何做好日常工作的稳定性保障

最近滴滴、阿里云的宕机时间,引发科技圈和用户的极大关注,对于研发来说,这就是我们系统的稳定性出现了极大问题,而且最近公司也在做些异地多活的事情,同样也是为了做好稳定性。那么稳定性是什么呢,稳定性就是系统不出故障,或者出故障的时间越短越好。1、指标1我们先这样定义上述图中数据的含义N:两次故障T1:无故障时间T2:故障等待修复时间T3:故障修复时间T21:故障发现时间T22:故障发现到定位时间T23:故障定位到处理时间T31:故障处理时间由此可以得出。

weixin_36098377的博客 1808

如何做好稳定性测试?我们的探索和实践

稳定性对产品的重要性不言而喻。而作为质量保障,在稳定性测试方面的探索也在不断演化。记得两年前我们做稳定性测试还是基于恒定的压力,7*24小时长时间运行,关注的指标无非是吞吐量TPS的抖动、响应时间的变化趋势,以及各种资源是否泄露。稳定性测试的场景设计简单,和线上实际运行有较大的出入。带来的直接结果是稳定性测试发现的问题比较有限,做完之后仍然没有特别大的信心。 那稳定性测试究竟该如何做?别人在怎么做...

weixin_43186951的博客 2451

聊一聊,如何做好垂直域稳定性

一个小小的故障就可能造成巨大的负面影响,因此稳定性工作复杂​却又至关重要。本文将通过故障预防、修复、复盘来讲解该如何建设一个稳定性体系。

阿里技术 2710

稳定性全系列(一):如何做好系统稳定性建设

系统稳定性是指系统要素在外界影响下表现出的某种稳定状态。为了方便,本文阐述的系统主要指软件系统。那么如何衡量系统稳定性的高与低呢?一个常用的指标就是服务可用时长占比,占比越高说明系统稳定性也越高,如果我们拿一整年的数据来看,常见的 4 个 9(99.99%)意味着我们系统提供的服务全年的不可用时长只有 52 分钟!它其实是一个综合指标,为什么这么说?因为我们在服务可用的定义上会有一些差别,常见的服务可用包括:服务无异常、服务响应时间低、服务有效(逻辑正确)、服务能正常触发 等。...

东境物语 5111

Android稳定性优化,你需要做好以下几点

/ 今日科技快讯 /近日,据日本经济新闻报道,日本宇宙航空研究开发机构的小行星探测器“隼鸟2号”从小行星“龙宫”带回地球的沙子样本中,发现了“生命之源”——氨基酸。这是首次在地球以外确认氨基酸的存在。/ 作者简介 /本篇文章转自程序员江同学的博客,文章主要分享了Android稳定性优化相关的内容,相信会对大家有所帮助!原文地址:https://juejin...

郭霖 469

极端业务场景下,我们应该如何做好稳定性保障?

从今天开始,和你分享我对微服务和分布式架构下的稳定性保障的理解。稳定性保障需要一定的架构设计能力,又是微服务架构比较核心的部分。在陈皓老师的“左耳听风”专栏,以及杨波老师的“微服务架构核心20讲”专栏都有非常详细的介绍。所以在我 的专栏里,我会结合特定的场景,并着重从运维和技术运营的角度来分享。我们所面对的极端业务场景首先,看一下我们当前所面对的极端业务场景,我把它大致分为两类。

阅读之后,对你有帮助,那就点个赞再走吧 657
上一篇: 分布式数据库OcceanBase介绍
下一篇: 扩展Redis:增加Redis命令
programwithebay
博客等级 码龄16年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值