稳定性小结
发布日期:2021-06-30 18:34:42 浏览次数:3 分类:技术文章

本文共 2792 字,大约阅读时间需要 9 分钟。

凌云时刻

背景

业务研发同学经常缺少全局视角,只能是单方面、单角度的关注事情,因为负责的事情只是仅此一块。希望业务研发同学能够提高视野,能够关注全链路,关注整体。因为业务研发同学是最贴近业务的,具有天然的优势,所以只要有稳定性意识,加上一些常用的手段来做,一定会做的很好。

措施

在做业务项目的时候,主要还是从两方面进行治理的,分别是可用性和资损。

这治理可用性和资损之前,要根据业务梳理出详细的用例,然后根据用例梳理出清晰的链路,此时的链路一定要端到端全链路的,而不是某部分链路,这里就是经常看待事情角度的问题,多拔拔高,提升下,明确自己负责链路在全链路中的位置。这个问题其实在业务同学视野中问题不大,关注点放在端到端全链路上即可。业务研发同学具有天然的优势,熟悉业务链路,亲手研发的业务功能。

 可用性治理

可用性还分为三趴,一趴是容量保障,一趴是功能保障,一趴是监控报警。

容量保障

先来说容量保障这趴:遵循最重要的路径是 容量预估 -> 扩容机器 -> 单压 -> 全链路压测 -> 限流

容量预估

根据产品运营同学给出的量+参考现有的量 给出一个大概的预估数据。产品运营同学给出的一般都是日活量,PV、UV等数据,其中还有注意发push的量。这些要有一套严格的计算的公式,结合一些指标数据,这样可信度比较高。参考现有的量,通过看一些现有的一些监控数据即可。

扩容机器

根据容量预估出来的数据,其中主要是增量,根据增量看下链路以及链路到下游的扩散比,分别对下游的增量是多少。下游的增量需要评估到增量不仅仅是你这一方,而是所有方。但是你只需要把你的这条链路对下游的增量是多少,压力有多大就可以了。然后根据以往数据进行扩容。

单压

扩容完,就需要压测了。压测模型尽量逼真,不要是一个数据,而且很多数据。否则,就会造成某个节点是热点,从而反映不出真实的压力情况。压测的时候要有监控大盘,机器核心指标监控,从而判断压测是否符合预期。压测要有压测报告。

全链路压测

单压一般都是在低峰期进行压测,很难反映出在高峰期时的状况。只有加入全链路压测,才能够真切的反映出高峰期的状况,从而更好的评估,流量对系统的压力,系统可否承载这么大的流量。

限流

限流是对系统的一种兜底的保护措施,当流量洪峰来了,不至于把系统打垮,需要加系统限流。这个可以在单压的时候进行看限流是否生效。

功能保障

再来说功能保障这趴:

根据链路梳理出,强弱依赖,将弱依赖增加降级开关,最好把降级开关加到预案平台,并加以说明降级之后的影响。防止随着业务人员的更新,组织架构的调整,这些预案被遗弃,当真正需要的时候不敢执行。

若是强依赖,则需要在整体功能入口加个降级,防止当出现问题时,没有相应的应对方案。

其中也要识别到降级开关的关联性,是否两个开关AB、必须先A后B,还是怎样,最贴近业务的是研发同学,这种重要的小事情要做好。

其实这里最重要的就是根据强弱依赖和功能梳理出预案,然后针对预案进行演练,保障真实可执行。预案是救命的,一定得是可执行的。最好的方式是以后也要定期演练,根据链路的重要性(可根据产生P级事故来区分)来确定演练的频次。

监控报警

监控报警,也就是发现问题的手段。

监控报警= 业务监控(QPS、耗时、成功率)+ 业务打点(核心业务链路的打点)+ 中间件(各个中间件指标不同)+ 基础设施(CPU、内存、DISK)

业务监控:

业务监控一般都是针对接口维度的,针对接口有三个黄金指标:QPS、耗时、成功率。这三个黄金指标基本都能覆盖各种异常情况。

业务打点:

核心链路打点,渠道打点,错误码打点,强依赖调用失败/重试在失败打点,超出阈值打点等等。

中间件:

DB:主从延迟、慢SQL

缓存:命中率、容量

消息队列:延迟、堵消息

基础设施:

主要用于业务机器上,主要的指标也是三个:CPU、内存、磁盘。

监控报警是发现问题的手段,仅仅是发现问题远远是不够的,核心链路上的问题,一定要有相应手段去解决。

报警的信息太多就成骚扰了,重要的报警信息会被淹没,从而发现不了真正的问题。希望大家在业务的同时,将自己的报警进行降噪。

监控收口的背景&目的

1. 监控统一化、统一收口

2. 观察一周,无大问题,拉各位研发测试入群。

3. 背景:

    一、报警信息不统一,消息闭塞,稳定性同学有些没有触达到。

    二、稳定性相关事情,之前先通过leader沟通,再协作人员跟进,稳定性工作也没有具体的收口,效率较低。

4. 目的:

    一、传达报警信息,防止处理报警时,消息闭塞,稳定性同学能够及时关注,参与,跟进,解决,优化,防止出现P级事故。

    二、便于稳定性相关工作推动,大家相互监督,流程规范化,标准化。

 资损防控 

做到可用性这里的前置条件是需求清晰,链路清晰。针对资损链路主要从两个方面来做的:一部分业务后台;一部分业务前台。

业务后台

● 针对配置要有合理性的检查

● 某个预算超了,要及时熔断。

业务前台

● 平账:上下游数据一致性的核对。若负责业务落库,就需要该业务与涉及到的上下游进行数据核对。

● 规则:针对某规则才会有某种奖励或执行某种规则,若得到某种奖励或规则的话,就需要根据数据重新校验是否符合规则。

● 趋势:涉及到资产的还需要铺资金异动,从宏观上看资金的整体情况。

其他

其中铺的一些发现手段(不限于核对,监控打点等等),只是为了发现问题,但是问题还是需要解决的,需要针对发现的问题进行修复,比如数据工厂批量修复,单个数据订正走预案。

对于发现的问题,应该与解决问题形成闭环,简单来讲就是:发现了问题,问题有一些重要的参数数据,然后针对这些参数数据就可以解决问题。

大部分业务研发同学,对可用性治理还是比较容易理解的,但是对于资损防控,意识上还是很难意识到的。我在做的过程中,经常会遇到业务研发的反驳,反驳的理由基本就是:我已经有了层层保障,为何还要加个核对。说服的理由就是:这些都是正向的流程,需要逆向的流程把这层做厚,防止出现问题不能及时发现,对于不可控的因素做到可控,例如:数据被乱写、被误删,这种如何发现?只有将发现能力这层做厚基本上就能提前发现问题。多说一句:红蓝攻防很重要的一部分就是根据数据注入来做的。

可遵循的规则

 变更三板斧

可灰度、可监控、可应急

 应急四件套

回滚、重启、降级、切流

结语

稳定性是一个领域,是建立在业务基础之上的。虽然描绘了这么多当然不仅限于此,但是在每个细分场景下都是一块子领域,做好每一块子领域并不容易。上面这些内容仅是抛转,希望更优秀有见解的同学提出建设性意见。当每个业务做好了稳定性,那么理论上整体就是稳定的。加油!

作者|蓝竹

END

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

投稿及合作请联系邮箱:lingyunshike@163.com

转载地址:https://lingyun.blog.csdn.net/article/details/117433569 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:为什么我十分喜欢C,却很不喜欢C++
下一篇:雷军:年轻人入职半年内不要提意见,不靠谱;微信表情新彩蛋遭疯狂吐槽:满屏“炸屎”;谷歌正式推出 Fuchsia OS...

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月07日 13时35分00秒