通常我们谈到稳定性,必然能够想到SLA,谈到SLA离不开SLO、SLI这两个,SLI是衡量系统稳定性的指标,SLO是服务等级目标,也是我们设置的稳定性目标,例如3个9、4个9等,那么SLA更多是其实对付费的客户的承诺,多数情况下我们聊的是SLO服务等级目标,通过衡量SLO来判断系统的稳定性。

SLA与可用性

通过上节了解SLA,如何选择合适的SLI指标,也就知道SLO对应的SLI要实现的目标,那么如果通过SLO计算系统的可用性,这涉及到整体系统的可用性两种计算方式,第一种是从故障角度出发,以时长维度对系统进行稳定性评估;第二种是从成功请求占比角度出发,以请求维度对系统进行稳定性评估。通常会选择第二种,也就是根据成功请求的比例来衡量稳定性:

Availability = Successful request / Total request

通常情况下不是看单次请求的成功与否,而是看整体情况,所以我们会把成功请求的占比设定为一个可以接受的目标,也就是我们常说的3个9或4个9这样的可量化的数字。

那么,这个“确定成功请求条件,设定达成占比目标”的过程,其实就是设定稳定性衡量标准的 SLI 和 SLO 的过程。

成功定义计算

成功率计算,通过计算成功次数占比总次数的比例,如一个请求的返回状态码必须非5XX才算成功,也可以,但是在某些情况下并不能满足需求,可以要求延迟不低于80MS,当然还可增加其它条件,作为综合判定,公式表示如下:

  • Successful = (状态码非 5XX) & (时延 <= 80MS)

但是这种计算方式存在问题是,对于单次请求的成功与否判定太过严格,很容易出现误判,例如延迟,我们一般会设置取决,如 90% 延时小于等于200MS,用这种计算方式很难体现处理,而且对于状态码的成功率和延时成功率容忍度,通常也不太一样,这种方式不太准确,所以采用第二种方式,下面一起了解下,

SLO方式计算

每个服务的SLO服务等级目标可能均不同,故计算方式也需要更灵活,可随意调整定义,如下列一组SLO服务等级目标:

  • 服务A的SLO:99%、计算状态成功率
  • 服务B的SLO:90% Latency <= 80ms
  • 服务C的SLO:99% Latency <= 200ms

该公式表示:

  • Availability = 服务A的SLO & 服务B的SLO & 服务C的SLO

只有当三者均满足时,整个系统的稳定性才算达标,如果一个不满足,则该可用性则不满足,每个服务自身的场景和业务也均不相同,可以将SLO灵活的设置合理性与可用性结合起来。

对于第一种计算方式通常会被利用在第三方提供的服务承诺中,对于这部分用户来说,客户群体非常大,很难面向每一家制定不同的SLO这么细粒度的稳定性目标,每家客户对稳定性需求也不同,无法统一,在这种情况下,第一种计算方式就相对简单。

信任手段

SLO也可用于团队服务之间相互沟通机制,通过SLO对双方达成一种承诺,对于错综复杂的服务中,每个服务的SLA对系统的可用性变得尤其重要,如果依赖的服务未能达到SLA要求,那么其自身的SLA也能难保证,因此SLO的意义在于服务间通信的一种信任,依据该SLA并相信它,才能够有信心设置自身服务的期望值和SLO,SLO也可用划分边界,使各个团队明确职责和责任。例如:服务A依赖服务B,服务B的SLO是响应时长不超100MS,那么服务A依据服务B提供SLO对服务A进行架构设计,满足业务需求并对外声明自身的SLO,一旦服务B的SLO未满足的情况下,势必会影响服务A的SLO。

服务诊断

不论是对外提供产品或者服务声明SLA,本身是下层所有服务提供SLO计算而成,无论系统还是服务其本身都依赖不同服务(数据库、缓存、消息队列)来实现,系统的整个稳定性都依赖底层所有服务的SLO,那么保证每个服务的SLO其本身就是在做稳定性建设;SLO还可用于服务诊断,如果某个服务出现故障或者性能问题,那么首先要排查的是依赖的服务是否SLO是否满足,如果未满足,这首先就是我们要着手的地方,看是否是该SLO未满足的原因等等,如:Mysql慢查询、CPU飙升、延迟、响应耗时等等。

小结

对于稳定性,首先要做的是保证各个服务满足自身的SLA、SLO;SLO通常情况下可以用于团队内部之间沟通信任的手段,也可通过SLO进行故障排查,一旦发现未满足SLO,首先考虑从这里定位和排查,对于每个团队而言要做的就是尽力保证自身对外的承诺即SLO,同时对下游依赖做好兜底容错降级机制,一旦下游未满足SLO,尽可能避免自身的影响,或减少伤害和损失。

第二十三篇:稳定性之服务SLA相关推荐

  1. 九宫怎么排列和使用_广告视频配音剪映零基础入门教程第二十三篇:剪辑之九宫格教程...

    朋友圈最火九宫格视频你们知道是怎样制作的吗?我们常常在玩朋友圈的时候想用九宫格照片,但是你们有没有遇到这种情况,想玩九宫格却发现找不到那么多能用的照片,那这时候怎么办呢?玩腻了平常图片的发法,今天我们 ...

  2. STM32F429第二十三篇之电容按键

    文章目录 前言 硬件分析 原理 源程序 主函数 TpadInit GetTimeUntoched GetTimeCharge TpadScan 前言 本文主要介绍电容按键的原理与使用方法,主要使用的A ...

  3. 第二十三篇:在SOUI中使用LUA脚本开发界面

    像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...

  4. SpringBoot第二十三篇:安全性之Spring Security

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11350255.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   系统的安全 ...

  5. 【Java成王之路】EE初阶第二十三篇: HTTP协议和Tomcat

    目录 前言 HTTP 协议 什么是HTTP协议 回顾一下应用层协议 理解 HTTP 协议的工作过程 抓包工具的使用 HTTP协议的详细格式 + 信息 HTTP请求的格式 HTTP响应的格式 HTTP协 ...

  6. 【第二十三篇】Spring Boot集成redis

    1.1 简介 REmote DIctionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言 ...

  7. SpringBoot第二十三篇: 异步方法

    这篇文章主要介绍在springboot 使用异步方法,去请求github api. 创建工程 在pom文件引入相关依赖: <dependency><groupId>org.sp ...

  8. Avalonia跨平台入门第二十三篇之滚动字幕

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果.Expande ...

  9. “睡服”面试官系列第二十三篇之修饰器(建议收藏学习)

    目录 1. 类的修饰 2. 方法的修饰 3. 为什么修饰器不能用于函数? 4. core-decorators.js 4.1@autobind 4.2@readonly 4.3@override 4. ...

  10. python学习ajax_Python开发【第二十三篇】:AJAX全套

    概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...

最新文章

  1. 总结下我所学 设计模式
  2. teraterm 执行sql命令_tera term的ttl脚本使用方法 | 学步园
  3. 使用摄像头录像后,需要删除系统缓存数据!
  4. Bootstrap下拉菜单分隔线
  5. c语言猜拳游戏实验报告,《猜拳小游戏》--一个c语言写的小项目
  6. 【转】基于SQL的Web系统安全防范——SQL注入漏洞
  7. c#期末考试知识点_c#期末考试复习题及答案
  8. SqlSessionFactory和SqlSessionTemplate
  9. 解决升级到Android Studio 3 Beta版本编译异常
  10. android translateanimation动画,Android 动画之TranslateAnimation应用详解
  11. 索尼计算机bios正确设置,索尼bios设置图解教程
  12. [转] Node.js 服务端实践之 GraphQL 初探
  13. jquery实现菜单点击左右滑动效果
  14. pythonend什么意思_Python中的 \t 和 end=” 是什么意思?
  15. 关于桌面程序被安全软件误判为HEUR:Trojan.Win32.Generic的解决方案
  16. JS实现闪烁星空效果
  17. 人工智能ai写作系统,ai智能写作机器人
  18. 微分方程零解稳定性matlab,微分方程零解及稳定性.doc
  19. 笔记本120赫兹输出html,120Hz显示器vs.60Hz显示器盲测
  20. 【九日集训】《LeetCode刷题报告》题解内容 Ⅲ

热门文章

  1. C语言数组总结与反思
  2. 第三十七周学习生活总结
  3. NLP揭秘:除了宝石,女儿也是灭霸的真爱(附代码)
  4. 程序员不应该错过的 7 大导航
  5. RHEL8破解root密码
  6. 六、数据库管理与维护
  7. 计算机一级windows7操作,高校计算机一级考试指导书(Windows7+Office2010)
  8. ubuntu20安装google拼音
  9. IT行业发展趋势及就业前景?
  10. 12款华丽的Admin管理后台模板