速度和可靠性是可以两全其美的

news2024/11/17 11:45:51

通过采用整体方法并利用工程原理和实践,我们可以两全其美——速度和可靠性。

当涉及到在线服务时,正常运行时间是至关重要的,但这并不是唯一需要考虑的事情。想象一下,经营一家网上商店——让你的网站99.9%的时间都可用听起来不错,但如果0.1%的停机时间发生在假日购物季呢?这可能意味着失去大笔销售额。如果你的大多数客户只对少数受欢迎的商品感兴趣呢?如果这些页面不可用,那么网站的其他部分是否正常工作也没关系。
在这里插入图片描述
为了取得成功,重要的是不仅要保持正常运行时间,还要为重大事件做好准备。一些团队在关键时间之前实施变更冻结,如黄金日、黑色星期五或网络星期一。这种方法是合理的,但它可能是有限的,因为它不允许团队对意外的机会或关键情况做出快速反应。此外,并不是所有的需求都可以预测,也不总是清楚这些高影响事件何时会发生。这就是“重要时的可靠性”的用武之地。我们需要能够适应和快速响应客户需求的变化,而不会被代码冻结期所阻碍,并为不可预见的情况做好准备。

通过将时间视为一种宝贵的资源,并了解不同时刻的相对重要性,组织可以更好地转化客户价值,并相应地调整风险和可用性预算。这种方法使组织能够灵活应对需求变化,而不会错过关键功能或机会。最后,这是关于当运气来临时做好准备。

需要注意的是,一个系统不是静态的,而是不断变化的。系统本身、托管的基础设施和工程组织都会随着时间的推移而变化。这意味着有关系统的知识也会发生变化,这可能会影响可靠性。

除此之外,无论我们如何努力防止事故和停机,事故和停机都是不可避免的。错误将被发送,错误的配置将被部署,并且会发生人为错误。也可能存在相互依赖性,从而导致停机。一个事件很少有单一的原因,通常是多种因素共同作用的结果。解决方案也是如此,当它们涉及到原则和实践的结合,以减轻停机的影响时,这些解决方案是最有效的。

操作系统通常意味着要应对现实世界的压力,如时间、市场和管理需求,以更快地交付。这可能导致走捷径,并可能损害系统的可靠性。用户群和组织的增长和扩展也会带来额外的复杂性,并导致意外或不可预见的行为和故障模式。然而,通过采用整体方法并利用我将在下面介绍的工程原理和实践,我们可以两全其美——速度和可靠性。这不是非此即彼的情况,而是两者之间微妙的平衡。

1、什么是可靠性

在这里插入图片描述
可靠性是任何系统的重要组成部分,因为它不仅保证可用性,而且保证正常运行。一个系统可能是可访问的,但如果它不能准确地运行,它就缺乏可靠性。目标是在系统内实现可用性和准确性,这需要控制故障并将其影响降至最低。然而,并非所有故障都具有同等的重要性。例如,阻止结账和付款的问题远比图像加载中的小故障更重要。重要的是要专注于确保重要功能在关键时刻正确工作。

换句话说,我们希望专注于在高峰时段保持可用性和正确运行,为最重要的功能提供服务,无论是流行页面还是流程的关键部分。确保系统在繁忙时期正常工作是很困难的,但重要的是要以深思熟虑和彻底的方式来处理。这包括对系统的技术、操作和组织方面的思考。

这种方法的关键部分包括:

设计具有弹性、容错和自我修复能力的系统。

在极端条件下主动测试系统,以识别潜在的弱点并防止倒退。

有效的操作实践:定义托管拓扑、自动扩展、自动化部署/回滚、实施更改管理、监控和事件响应协议。

应对增长、市场需求和工程质量的竞争压力。

培养一种重视协作、知识共享、开放、简单和工艺的文化。它还需要关注结果,以避免犹豫不决,并为客户提供尽可能好的体验。

此外,我们将扩展“重要时的可靠性(Reliability when it matters)”的概念,并为组织提供切实可行的步骤,以确保关键时刻的可用性和功能。我们将讨论关键要素,如设计可靠性系统、主动测试和监控,并深入研究自动化部署和事件响应协议等实际步骤。

2、可靠性度量:优化的重要工具

在这里插入图片描述
在优化服务或系统时,首先定义目标并建立监控进度的方法至关重要。您选择的指标应能让您全面了解系统的可靠性,易于理解、共享,并突出需要改进的领域。

以下是一些常见的可靠性指标:

事件频率:每单位时间内发生的事件数。
事件持续时间:事件持续的总时间。
虽然这些指标是一个很好的起点,但它们并没有显示事故对客户的影响。让我们考虑以下图表:
在这里插入图片描述
假设我们有两个事件,一个在凌晨1点,另一个在下午2点,每个事件都导致大约10%的请求在30分钟内失败。将这些事件视为对可靠性同样有影响,并不能反映它们对客户的真实影响。通过考虑交通量,可靠性指标可以更好地表明高峰交通期间的事件具有更大的影响,值得更高的优先级。

我们的目标是有一个明确的信号,表明高峰交通期间的事故是一个应该解决的主要问题。这种区别有助于确定任务的优先级,并确保资源得到有效利用。例如,它可以防止营销团队为吸引更多访客所做的努力被浪费。此外,跟踪每个发布的事件频率可以帮助改进部署和测试过程,并减少意外问题。最终,这将导致更快的交付和更低的风险。

3、深入挖掘指标

要更深入地了解这些指标并找到需要改进的地方,请尝试跟踪以下内容:

检测时间:注意到一个事件需要多长时间。
通知时间:通知相关方需要多长时间。
修复时间:修复一个事件需要多长时间。
事件间隔时间:这可以揭示系统故障的模式或趋势。
操作项完成率:完成任务的百分比。
行动项目解决时间:实施解决方案所需的时间。
高严重事故的百分比:这衡量系统的总体可靠性。
最后,在每周运营期间定期审查这些指标有助于关注进展、识别成功并确定优先级。通过将此作为您文化的常规组成部分,您可以使用这些指标中的数据来推动更好的决策并逐步优化系统。

记住,衡量标准的有用性在于从中采取的行动及其推动进步的能力。这是一个不断完善数据和行动项目的反馈循环,以保持系统的改进。

4、弹性设计

一个没有弹性的系统可能无法顺利处理高峰时间。以下是一些有助于确保系统在各种条件下的可靠性的注意事项:
在这里插入图片描述

要做的:

为组件故障做好准备:通过划分服务或使用隔离,可以限制爆炸半径并减少故障的影响。
实现容错:实现重试、请求对冲和背压等机制将提高系统的可用性和性能。
使用速率限制和流量配额:不要仅仅依靠上游依赖关系来保护自己。使用速率限制和流量配额来确保您的系统保持可靠。
分类功能: 通过将职能划分为“关键”、“正常”和“尽最大努力”类别来确定职能的优先级。这将有助于在高需求期间不惜一切代价保持基本功能的可用性。
实现错误定步和甩负荷:这些机制有助于防止或减轻流量滥用或滥用。
持续挑战系统:持续挑战系统并考虑潜在故障,以确定需要改进的领域。
恢复计划:实施故障转移机制,并在发生故障时计划恢复。这将有助于减少停机时间,并确保在具有挑战性的条件下提供基本服务。
进行战略权衡:在具有挑战性的外部条件下,进行战略权衡并优先考虑基本服务。

不要做的:

不要以为调用者会按预期使用您的服务。
不要忽视罕见但潜在的失败;规划和设计预防措施。
不要忽视硬件故障的可能性。

总结

确保系统的可靠性是一项全面的工作,包括找出正确的指标,考虑到弹性进行设计,以及实施可靠性测试和操作。通过关注可用性、功能性和满足最重要的需求,组织可以更好地转化客户价值,并相应地调整风险和优先级。

建立和维护一个即使在最恶劣的条件下也能处理的系统,不仅有助于推动业务成功并取悦客户,而且还能给从事该系统的人带来成就感。可靠性是一个持续的过程,需要关注、技能和纪律。通过遵循最佳实践,不断挑战系统,培养有韧性的心态,团队和组织可以创建强大可靠的系统,能够承受任何挑战。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10个很少人知道的 JavaScript 控制台方法

您肯定听说过 console.log() 并且可能一直在使用它。它非常流行,像 Visual Studio Intellicode 这样的工具通常会在 IDE 中输入时在任何其他控制台方法之前推荐它: 在今天这篇文章中,我们将探讨一些最有用的控制台方法及其在数据可视化、调试…

服装产业数字化升级,低代码赋能企业柔性生产

一、前言 随着消费者个性化需求不断增加,我国服装行业正面临着前所未有的挑战。此外,电商渠道占比不断提高,订单碎片化程度进一步放大,传统计划性生产的供应链流程已无法适应不断变化的着衣需求,使得服装品牌商在供应…

6.MapReduce的框架原理

本章节将分为InputFormat,split,OutputFormat三个小章节来介绍框架原理 1.InputFormat 1.1 切片: 将输入数据分成几份,每份交给一个MapTask去处理(getSplit方法) 对于MapRedcue,切片发生在客户端,任务提交的时候 机制:MapTask并行度决定机制 切了多少片,就开启多少个M…

记录一次heap.bin文件分析

背景:生产服务运行OA系统服务,用户使用过程中,突然发现服务不能访问,接到用户反馈后,第一时间登陆服务器,发现东方通进程在、端口在,服务器CPU使用率并不高,为不影响用户正常开展业务…

记录bingAI解答pyjwt参数和头部的问题

python jwt.encode()函数的参数是哪些 正在搜索: python jwt.encode()函数的参数 正在为你生成答案… 已收到消息. 在Python中,jwt.encode()函数的参数有三个:第一个是payload,主要用来存放有效的信息,例如用户名,过期…

去后厂村开游戏厅吧!基于PP-TinyPose的简易体感游戏开发框架

‍ 项目简介 近年来,随着虚拟现实技术和计算机图形学技术的迅猛发展,越来越多的体感游戏在市场上出现并受到欢迎。要让体感游戏具备良好的表现,就需要使用大量的传感器,甚至需要使用高性能的计算机和图形处理器。这不仅会增加游戏…

单链表leetcode——C语言

203. 移除链表元素 难度简单1230收藏分享切换为英文接收动态反馈 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6…

java_java基础语法

注释 什么是注释 简单来说注释就是在程序中对代码进行解释说明的文字,方便自己和其他人理解,查看,不会影响程序的正常执行注释有哪些 单行注释// 注释内容只能写一行多行注释/* 注释内容1 注释内容2 */文档注释/** 注释内容 注释内容 */字面量 告诉程序员,数据在程序中的书写…

C++中常用的四种类型转换方式

C中常用的四种类型转换方式 一、相关概念二、static_cast 转换2.1、说明2.2、返回值2.3、示例 三、const_cast 转换3.1、说明3.2、返回值3.3、示例 四、dynamic_cast 转换4.1、说明4.2、返回值4.3、示例 五、reinterpret_cast 转换5.1、说明5.2、返回值5.3、示例 总结 一、相关…

【大数据之Hadoop】十八、MapReduce之压缩

1 概述 优点:减少磁盘IO、减少磁盘存储空间。 缺点:因为压缩解压缩都需要cpu处理,所以增加CPU开销。 原则:运算密集型的Job,少用压缩;IO密集型的Job,多用压缩。 2 压缩算法对比 压缩方式选择时…

深入浅出DPDK-1.1主流包处理硬件平台

DPDK用软件的方式在通用多核处理器上演绎着数据包处理的新篇章,而对于数据包处理,多核处理器显然不是唯一的平台。支撑包处理的主流硬件平台大致可分为三个方向:硬件加速器、网络处理器、多核处理器。 根据处理内容、复杂度、成本、量产规模…

【数据结构】- 链表之单链表(上)

文章目录 前言一、链表1.1链表的概念及结构1.2链表的分类 二、单链表(上)2.1单链表的实现2.2单链表实现的两种结构解析2.3单链表的接口实现2.3.1头插2.3.2温馨提醒 宝子~2.3.3头插完整版代码2.3.4尾插2.3.5温馨提醒 宝子~2.3.6总而言之 总结 前言 “偶尔失意 是为了压住翘起的…

web事件循环

事件循环的应用:计时器 promise ajax node 单线程是异步产生的原因,事件循环时异步的实现方式 1.浏览器进程模型 进程:程序运行需要自己专属的内存空间,可以把这块内存空间简单的理解为进程。 每个应用至少又一个进程&#xff…

头文件stdafx.h的作用(常见错误),以及如何在空项目中添加该头文件

头文件stdafx.h的作用(常见错误),以及如何在空项目中添加该头文件 预编译头文件 stdafx.hfatal error C1083: 无法打开包括文件:“stdafx.h”: No such file or directoryfatal error C1083: 无法打开预编译头文件:“Debug\Win32RegistryClas…

【LeetCode】72. 编辑距离

72. 编辑距离(困难) 思路 状态定义:「dp[i][j] 表示第一个字符串到 i ,第二个字符串到 j,要想使得 word1 word2 ,最少的修改次数」。状态转移方程: 当第 i 位和第 j 位对应的字符相同时&#x…

【youcans 的 OpenCV 学习课】21. Haar 小波变换与 Haar 特征检测(上)

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】21. Haar 小波变换与 Haar 特征检测(上) 1. 小波变换1.1 小波变换基本概念例程 17_1:常用小波族…

学会这几个Word技巧,让你办公省时又省力(一)

如果在学习,或者工作上,你经常需要用到Word文档,那下面这几个Word技巧一定要学习收藏,提升工作效率不是一点点。 ​1. 快速定位对象 有时候文档的内容很长,涉及很多表格、图片、图表,想要检查一下所有的图…

linux从入门到精通 第一章centos7里tomcat,jdk,httpd,mysql57,mysql80的安装

配置centos运行环境 一 安装httpd,tomcat,jdk,mysql1 安装httpd2 安装tomcat3 安装jdk 三 MySql的安装1 克隆出来两台虚拟机2 配置虚拟机3 链接xhsell4 链接xftp5 mysql8的安装6 mysql5.7的安装 一 安装httpd,tomcat,jdk,mysql 1 安装httpd 下载httpd yum -y install httpd关…

微信小程序php+vue校园达达互助平台快递代取系统

校园快递互助平台所要实现的功能分析,对于现在网络方便,校园快递互助平台要实现管理员、学生、兼职者可以直接在平台上进行查看自己所需数据信息,这样既能节省管理的时间,不用再像传统的方式,如果用户想要进行交流信息…

精读《利用 GPT 解读 PDF》

hatPDF 最近比较火,上传 PDF 文件后,即可通过问答的方式让他帮你总结内容,比如让它帮你概括核心观点、询问问题,或者做观点判断。 背后用到了几个比较时髦的技术,还好有 ChatGPT for YOUR OWN PDF files with LangCha…