交易系统承担了整个交易链路上的所有交易相关的流量,同时交易系统上时常会组织一些营销,大促相关的活动,所以需要面对着因大促造成的瞬时流量激增的情况。

所以如何做好服务拆分后的交易系统稳定性也就尤为重要。

主要方式一般是:自动预案,限流保护。

当我们对系统进行了微服务拆分之后,服务之间有了良好的边界,可以有效的进行服务故障隔离,防止因雪崩造成的系统崩溃。

而针对于流量激增情况时,系统会有什么表现呢?

流量激增时会伴随着因激增流量造成的系统CPU / Load的飙高,机器告警频繁。

一些热点商品缓存可能会被击穿,如果系统依赖于MQ进行通信,可能伴随着消息积压,处理延迟。

限流是面对瞬时流量激增的通用方案,在商业大促和社会化爆点新闻相关的系统中都会用到,同时也是系统常态下有效的保护手段,在因系统面对大于自己所能处理的流量时,先拒绝为敬。

在进行限流操作之前,我们需要考虑限流的目的是什么?是采用单机限流,还是集群限流?限流的资源有哪些,网关?应用?DB?水位线怎么来的?限流阈值是多少?

拒绝处理上有两种方式,主动拒绝,或者降级到请求队列,总之是防止因为超预期的流量将系统打垮。

限流可以保护服务永远处理自己承受范围之内的流量,起到自我保护作用。

但是在一个链路过长的交易系统中,势必会有一些系统因各种原因不能很好的服务于链路请求,这种情况可以依据系统优先级,在系统稳定性受到挑战时进行降级,而确保核心路径不受影响。

系统对于降级常见的处理方式有两种:手动降级,自动降级。

手动降级一般是配置一个降级开开关,在需要的时候进行降级开关的操作。

为了可以更好或是更有效的控制系统降级,建议还是采用自动降级方案,因为他更有效,更适合于链路上的真实情况。

自动降级是基于熔断手段,采集时间窗口内服务的调用情况,调用失败 / 成功次数,依照失败率而操作是否进行自动降级。

做降级处理之前,我们需要考虑,系统接口之间的依赖关系,是强依赖还是弱依赖?哪些功能,服务可以降级掉?是否需要通知PM制定一定的话术?采用自动熔断还是手动熔断?哪些服务在降级之后需要做兜底操作?如何做兜底?

所以限流是一种主动干预流量,防止系统打挂,熔断降级是防止因运行时各种不稳定因素造成的系统超时等待,指标飙高,防止故障级联传导的防御措施。

当然具体系统或是业务中哪些环节,哪些接口需要做降级处理,是需要提前梳理的,千万不要轻易对核心流程做降级,因为毕竟是有损的。

在设置了降级措施之后,需要做相应的压测或故障注入,以确保降级,限流策略有效,而不至于真实情况发生时防御策略失效,造成系统可怕的结果。

系统可用性中很重要的一个点就是防止单点。

单点的系统永远存在可用性风险,小到主从数据库,数据多副本,多无状态服务,多机房,异地容灾,如果要求登记很高的金融场景,比如支付宝,则需要做到三地五中心的异地多活架构。

为什么要搞异地多活呢?业界无外乎以下原因:

  1. 单机房容量受到了限制

  2. 机房单点问题,造成系统可用性问题,进而造成经济损失

一个成熟的互联网架构体系,需要具备多层次,多维度,端到端的完备的监控体系。

健康检查是监控体系中很重要的一个环节。

主要实现方式可以是服务端轮询和客户端主动上报两种方式。

两者各有优缺点,Mysql服务这种无法主动上报,除非借助于三方代理,但是主动的端口健康检查也很难识别进程假死的情况。

健康体系,谷歌提出来四项黄金指标:

  1. 延迟:响应时间

  2. 流量:请求量,QPS

  3. 错误:错误数,错误率

  4. 饱和度:资源利用率

云原生时代监控体系的实现往往是通过应用 / 节点暴露端点,监控服务采用pull方式采集指标,比如prometheus监控系统最近比较火。也可以借助前面文章中提到的agent上报到服务端。

监控能力提升之后,告警系统能力也很重要,在阈值配置之后,告警触发极其灵敏度就很重要,阈值太高太低都不合适。

为了有效进行故障定位和快速处理,对现有服务依赖进行梳理就显得尤为重要。

好的服务依赖关系可以帮助我们快速定位问题,快速进行容量评估,减少资源浪费,友好的链路追踪。

如果服务之间,在其中一个可用性受到威胁时,传递到另一个系统上,并影响其可用性,则两个服务之间就是强依赖。

如果其中一个故障,另一个不影响主流程或核心流程,则两者是弱依赖。

梳理好系统之间的强弱依赖,可以更好的配置降级,限流阈值。针对于弱依赖的服务可以直接降级掉,或者返回兜底默认值。

上面说了系统稳定性的宏观层次,限流,熔断,降级,以及单点问题。其实稳定性很大一部分程度是需要在工作流程和工作方式上展开的。

比如你的代码或者新需求,是否可以做到快速回滚,快速应急处理降低损失。

简单总结下来可以从下面几个角度分析:

  1. 新功能是否可回滚 / 是否可快速减少损失

  2. 新功能是否可灰度,在技术角度和运营角度进行灰度

  3. 是否可监控,包括技术指标,告警和运营指标,收益

反推回来,我们需要在团队执行上落地一些做法和手段,比如:

  1. 做好业务分析,需求评审,系统设计,容量规划,避免风险,SQL审核(是否加索引了)

  2. 指定上线,发版的sop,做好流程制约和控制,提升自动化工具进行风险代码的扫描和检查

  3. 做好code review,减少风险上线

  4. 自动化用例覆盖,防止改新影响老业务

  5. 提高自动化,工具化,避免人肉

拆解交易系统--服务稳定性相关推荐

  1. 拆解交易系统--服务高可用

    系统稳定性和系统可用性是对在线系统很重要的两个评价指标,也是最重要的系统能力,系统可用性或者成熟度不足,将会造成重大的事故或者经济损失. 系统故障在研发团队一般的生命周期如下: 原则按照事前事中事后来 ...

  2. 服务稳定性及应用防护方案

    服务稳定性及应用防护方案 一. 服务稳定性 1. 基本监控 基本监控推荐使用Zabbix,开源分布式企业级监控系统,能满足目前我们监控的需求 a. 系统监控,包括CPU.内存.磁盘.网络等,能够对系统 ...

  3. 阿里云栖开发者沙龙PHP技术专场-聊聊服务稳定性保障这些事

    本文主要带大家了解服务稳定性的重要性和相关策略.策略大概分两部分,第一方面从架构层面介绍保障服务稳定性的常见策略(限流,降级,隔离,超时,重试和集群).第二个方面是从流程方面(code review, ...

  4. 小日期时间型_利于就业的汽车拆解技术服务师证报名时间、考试流程分几个级别?...

    汽车拆解技术服务师证报名入口是哪个?报名截止日期 维修技术人员不可能将数千种车型的维修资料.数据.程序记忆在大脑中.汽车拆解技术服务师证报名入口是哪个?报名截止日期对营销来说,在营销过程中,有一个好的 ...

  5. 拆解交易系统--如何做好稳定性

    快速发展的互联网业务往往存在一段"快,糙,猛"的阶段,业务的高速发展过程中大家的注意力都集中在了业务快速迭代,系统功能快速实现,而忽略了稳定性相关的问题. 这一阶段往往故障比较多, ...

  6. 拆解交易系统--性能优化,安全加固与弹性扩缩容

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 前几篇文章我们拆解了交易系统架构层次的设计方案,对于代码细节我们讨论很很少,今天基于几个方面简短的介绍一下,未来有时间可以针 ...

  7. 拆解交易系统--模块拆解与服务化

    用户高速发展阶段如何做好稳定性 围绕做好稳定性可以从几个角度做,而不是简单的监控,压测,告警和容量规划. 第一件事 :设计方案尽量简单 做好架构很重要的一个原则是,大系统做小,精简设计方案.在众多可能 ...

  8. 服务稳定性保障手段与规范

    服务的稳定性,对于任何一个在线提供服务给用户的公司来说,都是非常重要的.任何一次线上事故,都可能会给公司带来显而易见的损失.因为相比于其他部门,负责基础技术.公共服务的同学,发生事故的时候很容易暴露在 ...

  9. OneAlert助力车行易提升事件响应效率,保障服务稳定性

    权威数据显示,目前国内汽车后服务市场的规模已达万亿级别.而在车主日常用车的多种生活场景中,与车辆违章相关的细分业务使用频度仅次于导航.停车.洗车等三项车后服务,这也是极具发展潜力的一个细分市场.「车行 ...

最新文章

  1. 空车上路,Waymo拿下加州首个“真”无人驾驶许可证
  2. 如何打造园本特色_立足城市特色 打造赛事品牌——年轻成马如何走向国际化...
  3. Windows 下 Anaconda3 的安装配置
  4. 触发器三(行级DML触发器)(学习笔记)
  5. vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值?
  6. Eigen官网教程(7)geometry几何模块的实践
  7. github创建maven项目过程
  8. 类与对象、引用传递、封装、构造方法、匿名对象笔记
  9. 一个校园网络的规划与设计
  10. C++ freopen 打开txt文件,读取,写入txt文件
  11. 坐标变换(5)—用旋转轴和旋转角表示旋转
  12. 中国移动下月发布5G套餐:“三不一快”策略方便终端入网
  13. 为什么未来是全栈工程师的世界?
  14. 上门洗车软件的核心功能和技术选型
  15. 区块链应用场景:物联网和物流供应链
  16. 去年12月份挑错经验总结
  17. SQL SERVER 变量赋值
  18. 算法-回溯backtrack
  19. Arduino驱动oled显示动画
  20. powerbi使用说明_PowerBI动态报告嵌入到PPT中,这个方法推荐给你

热门文章

  1. 《算法竞赛中的初等数论》(二)正文 0x20同余(ACM / OI / MO)(十五万字符数论书)
  2. 9.67最不下降子序列
  3. Java中创建线程需要使用的类_如何通过使用Java中的匿名类创建线程?
  4. 121.买卖股票的最佳时机
  5. python使用opencv查找轮廓_(八)OpenCV-Python学习—轮廓查找,绘制和拟合
  6. 能量平衡_巴夏:平衡自己的能量,疗愈自己,疗愈世界
  7. [译] Spring 的分布式事务实现-使用和不使用XA — 第三部分
  8. Linux TOP 命令显示详情
  9. websocket客户端
  10. [算法也疯狂]实现假装商品抢购繁忙的效果(php版)