做电商业务开发这几年,我学到的系统稳定性建设方法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 文章总结了电商业务开发中保障系统稳定性的关键方法,包括代码健壮性、安全变更、系统链路梳理、接口降级与限流、定期降级演练、预案准备、系统压测、日常巡检、中间件巡检、值班制度和告警机制,强调了稳定性建设是一个长期任务,需要持续迭代优化,并保持对生产系统的敬畏之心。

一、背景

作为开发人员,系统稳定性是一个绕不开的话题,特别是做电商业务系统这几年,几乎天天都要关注稳定性,一旦出现故障对于公司来说都是一场灾难,因此保障系统稳定是最关键的要求,本文将根据最近几年负责电商系统涉及到的稳定性建设常用方法做一次总结。

二、什么是系统稳定性?

对于业务系统来说,不管有什么因素对我们的系统干扰,都要尽可能的提供高可用性不影响系统功能用户体验

影响稳定性有哪些因素呢?

1、人为操作

比如不合理的系统变更,外部的攻击,访问流量突增

2、自然灾害

比如网线光纤被挖

3、硬件故障

比如自然硬盘损坏,内存网络

从以往经验来看,其实影响系统稳定性最多的原因是人为因素造成的。

二、这些年学到的稳定性方法

1、注重代码健壮性,注重codereview

代码开发需要考虑可观测,可降级,考虑异常容错性,合理使用缓存,线程池等,对于外部依赖需要超时机制

2、安全变更,遵守sop

任何生产环境的变更都要按公司规范操作,做到可灰度可监控可回滚

3、系统链路梳理,强弱依赖梳理

把系统核心链路流程梳理,分析系统的出强弱依赖,分析是否有损降级

4、接口降级,限流,熔断,超时设置

需要对下游依赖设置可降级,可熔断超时,避免外部系统性能或者故障拖垮服务

对本服务接口设置必要的限流,一般有网关层总限流单机限流,防止突发流程冲击系统

5、定期业务系统降级演练

需要定期对系统的业务功能进行降级演练,只有真实演练过了,线上有问题的时候才可以临危不乱。

6、系统预案准备充分

业务功能上线前都需要做好降级预案,包括技术和业务层面的准备,这样出现问题可以快速恢复止血

7、系统或全链路压测

新功能上线需要做压测摸高,日常也需要常态化压测,通过压测用于合理评估系统资源是否合理,可以及时消除容量和性能瓶颈隐患

8、业务系统日常巡检

  • 业务指标巡检

对于业务系统这点是非常重要的,我们需要观察业务指标趋势,业务指标一般有一定的规律,如果变化比较大可能业务有调整,可以评估是否正常的业务。

  • 业务流量qps巡检

巡检qps的环比变化,发现异常的流量,防止业务或者流量突增对系统冲击

  • 接口响应时间rt巡检

发现系统响应时间的变化,主动发现问题

  • 系统异常巡检

自动发现系统的错误,提早评估业务影响

9、中间件巡检

  • Mysql巡检

mysql慢查询

mysql的cpu繁忙度

mysql磁盘空间大小与增长情况

mysql的主键或者分布式id是否将达到阈值

上面这些是需要重点关注的部分,通过巡检提前发现系统隐患,降低故障发生概率,提高可用性。

  • redis巡检

redis的cpu繁忙度

redis热点key的变化

redis大key的变化

redis的数据分布均衡情况

上面几个点是关注多的,如果使用的云上的产品,都有比较好的可视化监控能力,我们通过监控面板发现问题。

10、系统值班

针对重要节假日,预估会有流量高峰的时间,安排相关人员值守,重点关注系统水位,比如流量qps,cpu有无异常等,还关注客服响应群,保障有问题时可以及时响应

11、告警

配置核心告警群,把系统核心告警统一到群里,系统相关人需要在群里,需要将重要的业务情况同步播报在群里,系统异常情况告警出来,方便快速发现问题

三、总结

本文结合作者工作中稳定性建设相关的经验做了总结,存在不足欢迎补充或者指正,欢迎大家在评论区分享下自己是如何落地稳定性建设的。

稳定性建设是一个长期的任务,不可能一朝一夕就把稳定性做好,而是需要持续不断的迭代优化。

作为开发人员,我们应该始终对生产系统保持敬畏之心

关注我们一起学习技术吧,坚持相信有输入一定要有输出,希望我们的技术能力越来越强大。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
18天前
|
开发框架 运维 Cloud Native
核心系统转型问题之提升研发效能和保障研发质量如何解决
核心系统转型问题之提升研发效能和保障研发质量如何解决
|
4月前
|
监控 数据挖掘 API
阿里巴巴API接口技术揭秘:轻松驾驭电商数据,提升业务效率
阿里巴巴API接口技术揭秘:轻松驾驭电商数据,提升业务效率
121 1
|
11月前
|
存储 监控 架构师
十年业务开发总结,如何做好高效高质量的价值交付
软件交付是一个非常复杂的过程和体系,需要保障好每个阶段的质量和效率才能保障最终的质量和效率。本文将尝试从需求交付的前、中、后三个环节来阐述一下如何做高效高质量的价值交付。
142339 2
|
数据采集 前端开发 算法
技术与业务同行:做业务的技术人
本文结合了作者的工作经验提出了一些建议,希望每一位技术同学都可以找到适合自己的成长方向和路径。
8154 0
|
安全 搜索推荐
「业务架构」从业务架构角度看自媒体运营
「业务架构」从业务架构角度看自媒体运营
|
传感器 人工智能 算法
关于技术、业务、产品的一点思考
关于技术、业务、产品的一点思考
330 0
|
容灾 测试技术 调度
一对一直播系统开发,稳定的系统更具发展优势
一对一直播系统开发,稳定的系统更具发展优势
|
供应链
制造业现场管理的核心问题和痛点有哪些?如何解决?
在制造行业,关于这个领域的做法,有很多标准化的体系。如何维持这个体系,以实现品质的维持管理和持续改进,就是制造现场的核心工作之一。
制造业现场管理的核心问题和痛点有哪些?如何解决?
|
运维 前端开发 数据挖掘
万象:打造以“场景”为核心的质量保障平台
万象:打造以“场景”为核心的质量保障平台
1145 0
万象:打造以“场景”为核心的质量保障平台
|
缓存 供应链 调度
系统从初期到支撑亿级流量,都经历了哪些架构上的演变?
随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。总体来说,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。当然,很多互联网企业的系统架构已经向Service Mesh(服务化网格)演变。今天,我们就一起来聊聊关于系统架构的演变这个话题。
190 0
系统从初期到支撑亿级流量,都经历了哪些架构上的演变?