Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【可靠性工程】GCP 可靠性核心原则

【可靠性工程】GCP 可靠性核心原则

作者头像
架构师研究会
发布于 2022-09-26 08:25:53
发布于 2022-09-26 08:25:53
7900
举报
文章被收录于专栏:超级架构师超级架构师

Google Cloud Architecture Framework 中的这份文档解释了在云平台上运行可靠服务的一些核心原则。这些原则有助于您在阅读架构框架的其他部分时达成共识,这些部分向您展示了一些 Google Cloud 产品和功能如何支持可靠的服务。

关键术语

在架构框架可靠性类别中,使用了以下术语。这些术语提供了对如何运行可靠服务的关键理解。

服务水平指示器 (SLI)

服务水平指标 (SLI) 是对正在提供的服务水平的某些方面进行仔细定义的定量测量。它是一个指标,而不是一个目标。

服务水平目标 (SLO)

服务级别目标 (SLO) 指定服务可靠性的目标级别。SLO 是 SLI 的目标值。当 SLI 等于或优于该值时,该服务被认为是“足够可靠”。由于 SLO 是制定有关可靠性的数据驱动决策的关键,因此它们是站点可靠性工程 (SRE) 实践的焦点。

错误预算

错误预算计算为 100% – SLO 在一段时间内。错误预算会告诉您,您的系统在特定时间窗口内是否比所需的可靠性更高或更低,以及在此期间允许停机多少分钟。

例如,如果您的可用性 SLO 为 99.9%,则 30 天期间的错误预算为 (1 - 0.999) ✕ 30 天 ✕ 24 小时 ✕ 60 分钟 = 43.2 分钟。每当系统不可用时,系统的错误预算就会被消耗或烧毁。使用前面的示例,如果系统在过去 30 天内有 10 分钟的停机时间,并且在 43.2 分钟的全部预算未使用的情况下开始了 30 天的周期,则剩余的错误预算将减少到 33.2 分钟。

我们建议在计算总错误预算和错误预算消耗率时使用 30 天的滚动窗口。

服务水平协议 (SLA)

服务水平协议 (SLA) 是与您的用户签订的明示或隐含合同,其中包括您遇到或错过合同中引用的 SLO 时的后果。

核心原则

Google 的可靠性方法基于以下核心原则。

可靠性是您的首要功能

新产品功能有时是您短期内的首要任务。但是,从长远来看,可靠性是您的首要产品功能,因为如果产品速度太慢或长时间不可用,您的用户可能会离开,从而使其他产品功能变得无关紧要。

可靠性由用户定义

对于面向用户的工作负载,衡量用户体验。用户必须对您的服务执行方式感到满意。例如,衡量用户请求的成功率,而不仅仅是 CPU 使用率等服务器指标。

对于批处理和流式工作负载,您可能需要衡量数据吞吐量的关键性能指标 (KPI),例如每个时间窗口扫描的行数,而不是服务器指标,例如磁盘使用情况。吞吐量 KPI 有助于确保按时完成用户所需的每日或季度报告。

100% 的可靠性是错误的目标

你的系统应该足够可靠,让用户满意,但又不能过于可靠,以至于投资不合理。定义设置所需可靠性阈值的 SLO,然后使用错误预算来管理适当的变化率。

仅当该产品或应用程序的 SLO 证明成本合理时,才将该框架中的设计和操作原则应用于产品。

可靠性与快速创新相辅相成

使用错误预算在系统稳定性和开发人员敏捷性之间取得平衡。以下指南可帮助您确定何时快速或慢速移动:

  • 当有足够的错误预算可用时,您可以快速创新并改进产品或添加产品功能。
  • 当错误预算减少时,放慢速度并专注于可靠性功能。

设计和操作原则

为了最大限度地提高系统可靠性,以下设计和操作原则适用。在架构框架可靠性类别的其余部分中详细讨论了这些原则中的每一个。

定义您的可靠性目标

架构框架的这一部分涵盖的最佳实践包括以下内容:

  • 选择适当的 SLI。
  • 根据用户体验设置 SLO。
  • 迭代改进 SLO。
  • 使用严格的内部 SLO。
  • 使用错误预算来管理开发速度。

有关详细信息,请参阅在架构框架可靠性类别中定义您的可靠性目标。

在您的基础架构和应用程序中构建可观察性

架构框架的这一部分涵盖了以下设计原则:

  • 检测您的代码以最大限度地提高可观察性。

有关更多信息,请参阅架构框架可靠性类别中的在基础架构和应用程序中构建可观察性。

为规模和高可用性而设计

架构框架的这一部分涵盖了以下设计原则:

  • 创建冗余以提高可用性。
  • 跨区域复制数据以进行灾难恢复。
  • 设计多区域架构以应对区域中断。
  • 消除可扩展性瓶颈。
  • 过载时优雅地降低服务级别。
  • 防止和缓解流量高峰。
  • 清理和验证输入。
  • 以保留系统功能的方式进行故障保护。
  • API 调用和操作命令设计为可重试。
  • 识别和管理系统依赖项。
  • 最小化关键依赖。
  • 确保每次更改都可以回滚。

有关详细信息,请参阅架构框架可靠性类别中的规模和高可用性设计。

创建可靠的操作流程和工具

架构框架的这一部分涵盖了以下操作原则:

  • 为应用程序和服务选择好的名称。
  • 通过金丝雀测试程序实施渐进式部署。
  • 分散流量以进行定时促销和发布。
  • 自动化构建、测试和部署过程。
  • 防止操作员错误。
  • 测试故障恢复程序。
  • 进行灾难恢复测试。
  • 练习混沌工程

有关详细信息,请参阅架构框架可靠性类别中的创建可靠的操作流程和工具。

建立有效的警报

架构框架的这一部分涵盖了以下操作原则:

  • 优化警报延迟。
  • 警惕症状,而不是原因。
  • 警惕异常值,而不是平均值。

有关详细信息,请参阅架构框架可靠性类别中的构建高效警报。

建立协作事件管理流程

架构框架的这一部分涵盖了以下操作原则:

  • 分配明确的服务所有权。
  • 通过精心调整的警报缩短检测时间 (TTD)。
  • 通过事件管理计划和培训缩短缓解时间 (TTM)。
  • 设计仪表板布局和内容以最小化 TTM。
  • 记录已知中断情况的诊断程序和缓解措施。
  • 使用无可指责的事后分析从中断中学习并防止再次发生。

有关详细信息,请参阅架构框架可靠性类别中的构建协作事件管理流程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 首席架构师智库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
我的ROS2开发环境
想要验证一个功能包,但却需要安装各种依赖。装就装吧!但是安装的依赖可能更新本机中的一些配置或软件版本,导致过去可以运行的软件这么折腾一下后就不能再运行了。
首飞
2022/06/05
1.4K0
我的ROS2开发环境
[Docker] DevContainer高效开发(第一篇):基于remote container开发
docker和容器化技术让运维有了质的飞跃,从此,部署软件再也无需担心软件运行所需的繁杂环境,只要拉取镜像然后运行就可以将应用连带其部署的环境一步到位。
Freedom123
2024/03/29
2.4K0
[Docker] DevContainer高效开发(第一篇):基于remote container开发
[docker] DevContainer高效开发(第二篇):前端开发体验
(2) 按快捷键 command + shift + p 打开命令面板,输入 add container configuration
Freedom123
2024/03/29
8860
[docker] DevContainer高效开发(第二篇):前端开发体验
使用VS Code进行远程开发
今天,我们很高兴地宣布Visual Studio Code的三个新扩展的预览版发布,它们支持在容器中、远程物理或虚拟机上以及在Windows中的Linux子系统(WSL)上进行无缝开发。你可以通过安装远程开发扩展包立即开始使用。
猿哥
2019/06/19
4.2K0
使用VS Code进行远程开发
使用 GitHub Codespaces 加速 Elixir 开发环境工作速度
使用 Elixir 开发点小玩意的时候,面对经常需要走外网下载依赖 (Elixir 的镜像站 UPYUN 使用有时候也经常抽风) 的时候,为了避免需要不断的进行网络代理配置,有想到之前经常使用 GitHub Codespaces 来在浏览器里面通过云环境来写博客文章,也可以做点开发:
Cloud-Cloudys
2024/02/20
1950
使用 GitHub Codespaces 加速 Elixir 开发环境工作速度
使用 VSCODE 连接远程服务器上的容器
自从 VSCODE 出现以来,我就立马从 pycharm 转入了。厌倦了 pycharm 的笨重,用了 vscode 之后只能说是真香,编辑器界的 flask。但是和 flask 一样,虽然轻便,但是自然基本上一切都需要你自己去配置,各种插件和扩展。有些功能 pycharm 可能自带,但是 VSCODE 就需要自己各种折腾,比如说本文的主题:本地连接远程服务器上的容器。
Alan Lee
2020/03/18
9.5K1
使用 VSCODE 连接远程服务器上的容器
GitHub Codespace中开发容器配置的深入解析
在今天这个快速发展的软件开发时代,开发工具和环境的便捷性、灵活性和可配置性成为了提升开发效率的关键因素。GitHub Codespaces,作为一项革命性的云端开发环境服务,为广大开发者提供了一个强大的、基于浏览器的开发环境,使得在任何设备上编写、运行和调试代码变得前所未有的简单。本文将深入探讨GitHub Codespaces中开发容器配置的特性,帮助我们更好地理解和利用这一强大工具,提升我们的软件开发效率和质量。
运维开发王义杰
2024/03/07
2990
GitHub Codespace中开发容器配置的深入解析
【物联网设备端开发】使用QEMU模拟ESP硬件运行ESP-IDF
进入乐鑫 ESP-IDF Windows Installer Download 下载页面,选择ESP-IDF v4.4.8离线安装包,然后进行安装。
帐篷Li-物联网布道师
2024/08/09
3940
【物联网设备端开发】使用QEMU模拟ESP硬件运行ESP-IDF
使用Visual Studio Code编写Vue的札记
前言 Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop a
梁源
2017/04/28
39.4K5
使用Visual Studio Code编写Vue的札记
envoy vscode调试环境搭建
经过一周的反复折腾,终于能顺利 debug envoy 源码,中途踩了无数坑,在此记录一下。
kinnylee
2021/12/06
2.7K0
使用 VS Code 在容器中开发 | Linux 中国
在继续之前,请确保你的红帽企业 Linux(RHEL)或 Fedora 工作站已经更新了最新的补丁,并且安装了 VS Code 和 “Remote - Containers” 扩展。(参见 VS Code 网站了解更多安装信息)
用户8639654
2021/09/06
1.8K0
Visual Studio Code 1.72 正式发布
出品 | OSC开源社区(ID:oschina2013) Visual Studio Code 是一个开源的代码编辑器,支持 IntelliSense、调试、Git 和代码片断。可在 Windows、Linux 和 macOS 上下载使用。支持常见的脚本和编程语言,还可以通过安装扩展来获得更多语言和功能的支持。 近日微软发布了 1.72 版本,更新内容如下: 工具栏自定义:隐藏 / 显示工具栏操作 用户现在可以从工具栏上隐藏操作。右键单击工具栏中的任何操作,并选择其隐藏命令或任何切换命令即可。被隐藏的操作会
程序猿DD
2022/10/11
1.4K0
Visual Studio Code 1.72 正式发布
「 工具篇 」VS Code
之前部门想要统一代码编辑器, 最后决定统一用 VS Code,需要一篇比较系统的介绍文章。
皮小蛋
2021/05/10
3K0
「 工具篇 」VS Code
使用vscode Container开发调试envoy
由于我最近在研究 envoy 这个项目,这是个cpp的项目,对于我这种cpp新人来说还是比较有压力的,感觉处处都是坑,开个引导文章记录一下。
luozhiyun
2022/05/09
1.3K0
使用vscode Container开发调试envoy
VS Code 使用
1.打开setting,在搜索框中输入renderControlCharacters,选中勾选框,即可显示tab
DevOps在路上
2023/05/16
9470
VS Code 使用
爽爆了!我搞了一个网页版 VS Code
VS Code 想必大家都听说过吧,VS Code 凭借其强大的插件生态简直把自己玩出花来了,现在我身边越来越多的程序员朋友现在都转向使用 VS Code 来写代码了,我也不例外。
AirPython
2021/07/12
9120
爽爆了!我搞了一个网页版 VS Code
27 个实用的 Visual Studio Code 扩展插件,让工作效率翻倍
Visual Studio Code ( VS Code )是一个知名且评价很高的代码编辑器,具有大量功能和扩展以增强开发体验。使用 VS Code 的主要好处之一是它的灵活性,允许开发人员根据他们的特定需求对其进行自定义。
zz_jesse
2023/08/21
17.3K0
27 个实用的 Visual Studio Code 扩展插件,让工作效率翻倍
如何使用Visual Studio Code开发Django项目
安装Python 2.7 及 Python 3.5,Windows下可以安装至 c:python27 及 c:python35。注意环境变量PATH的设置,建议只在PATH中添加一个版本的Python路径。Python 安装完后需要使用pip命令安装virtualenv模块,该模块负责隔离不同项目开发之间的模块依赖。
forxtz
2020/10/10
4K0
如何使用Visual Studio Code开发Django项目
在Win上做Python开发?当然是用官方的MS Terminal和VS Code了
使用 Windows 系统一大好处是它的应用太丰富了,甚至强大的 GPU 也能在闲暇时间做点其它「工作」。然而与 Linux 或 macOS 不同,在 Windows 上做开发总会遇到很多挑战,不论是文件编码、环境控制还是项目编译,开发过程中总会有一些神奇的收获。
机器之心
2019/08/26
4.8K0
在Win上做Python开发?当然是用官方的MS Terminal和VS Code了
Visual Studio Code 1.35更新:远程开发终于来啦
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/91358602
乐百川
2019/07/02
9770
Visual Studio Code 1.35更新:远程开发终于来啦
推荐阅读
相关推荐
我的ROS2开发环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文