作者 | Eugene Retunsky
创新互联公司主要从事网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务红桥,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
策划 | 云昭
读者成长计划社群招募,咨询小助手(微信号:CTOjishuzhan)
通过采用整体方法并利用工程原理和实践,我们可以两全其美——速度和可靠性。
当涉及到在线服务时,正常运行时间是至关重要的,但这并不是唯一需要考虑的事情。想象一下,经营一家网上商店——让你的网站99.9%的时间都可用听起来不错,但如果0.1%的停机时间发生在假日购物季呢?这可能意味着失去大笔销售额。如果你的大多数客户只对少数受欢迎的商品感兴趣呢?如果这些页面不可用,那么网站的其他部分是否正常工作也没关系。
有时,“在高峰时刻随时待命”干系到你生意的成败。不仅仅是电子商务——一小部分机场处理着大部分的空中交通,只有极少数名人家喻户晓,每年只有少数卖座电影占据票房主导地位。到处都是相同的分布模式。
为了取得成功,重要的是不仅要保持正常运行时间,还要为重大事件做好准备。一些团队在关键时间之前实施变更冻结,如黄金日、黑色星期五或网络星期一。这种方法是合理的,但它可能是有限的,因为它不允许团队对意外的机会或关键情况做出快速反应。此外,并不是所有的需求都可以预测,也不总是清楚这些高影响事件何时会发生。这就是“重要时的可靠性”的用武之地。我们需要能够适应和快速响应客户需求的变化,而不会被代码冻结期所阻碍,并为不可预见的情况做好准备。
通过将时间视为一种宝贵的资源,并了解不同时刻的相对重要性,组织可以更好地转化客户价值,并相应地调整风险和可用性预算。这种方法使组织能够灵活应对需求变化,而不会错过关键功能或机会。最后,这是关于当运气来临时做好准备。
需要注意的是,一个系统不是静态的,而是不断变化的。系统本身、托管的基础设施和工程组织都会随着时间的推移而变化。这意味着有关系统的知识也会发生变化,这可能会影响可靠性。
除此之外,无论我们如何努力防止事故和停机,事故和停机都是不可避免的。错误将被发送,错误的配置将被部署,并且会发生人为错误。也可能存在相互依赖性,从而导致停机。一个事件很少有单一的原因,通常是多种因素共同作用的结果。解决方案也是如此,当它们涉及到原则和实践的结合,以减轻停机的影响时,这些解决方案是最有效的。
操作系统通常意味着要应对现实世界的压力,如时间、市场和管理需求,以更快地交付。这可能导致走捷径,并可能损害系统的可靠性。用户群和组织的增长和扩展也会带来额外的复杂性,并导致意外或不可预见的行为和故障模式。然而,通过采用整体方法并利用我将在下面介绍的工程原理和实践,我们可以两全其美——速度和可靠性。这不是非此即彼的情况,而是两者之间微妙的平衡。
可靠性是任何系统的重要组成部分,因为它不仅保证可用性,而且保证正常运行。一个系统可能是可访问的,但如果它不能准确地运行,它就缺乏可靠性。目标是在系统内实现可用性和准确性,这需要控制故障并将其影响降至最低。然而,并非所有故障都具有同等的重要性。例如,阻止结账和付款的问题远比图像加载中的小故障更重要。重要的是要专注于确保重要功能在关键时刻正确工作。
换句话说,我们希望专注于在高峰时段保持可用性和正确运行,为最重要的功能提供服务,无论是流行页面还是流程的关键部分。确保系统在繁忙时期正常工作是很困难的,但重要的是要以深思熟虑和彻底的方式来处理。这包括对系统的技术、操作和组织方面的思考。这种方法的关键部分包括:
设计具有弹性、容错和自我修复能力的系统。
在极端条件下主动测试系统,以识别潜在的弱点并防止倒退。
有效的操作实践:定义托管拓扑、自动扩展、自动化部署/回滚、实施更改管理、监控和事件响应协议。
应对增长、市场需求和工程质量的竞争压力。
培养一种重视协作、知识共享、开放、简单和工艺的文化。它还需要关注结果,以避免犹豫不决,并为客户提供尽可能好的体验。
此外,我们将扩展“重要时的可靠性(Reliability when it matters)”的概念,并为组织提供切实可行的步骤,以确保关键时刻的可用性和功能。我们将讨论关键要素,如设计可靠性系统、主动测试和监控,并深入研究自动化部署和事件响应协议等实际步骤。
在优化服务或系统时,首先定义目标并建立监控进度的方法至关重要。您选择的指标应能让您全面了解系统的可靠性,易于理解、共享,并突出需要改进的领域。以下是一些常见的可靠性指标:
虽然这些指标是一个很好的起点,但它们并没有显示事故对客户的影响。让我们考虑以下图表:
蓝色-每五分钟的请求数,红色-错误,绿色-0..1中的可靠性
假设我们有两个事件,一个在凌晨1点,另一个在下午2点,每个事件都导致大约10%的请求在30分钟内失败。将这些事件视为对可靠性同样有影响,并不能反映它们对客户的真实影响。通过考虑交通量,可靠性指标可以更好地表明高峰交通期间的事件具有更大的影响,值得更高的优先级。
我们的目标是有一个明确的信号,表明高峰交通期间的事故是一个应该解决的主要问题。这种区别有助于确定任务的优先级,并确保资源得到有效利用。例如,它可以防止营销团队为吸引更多访客所做的努力被浪费。此外,跟踪每个发布的事件频率可以帮助改进部署和测试过程,并减少意外问题。最终,这将导致更快的交付和更低的风险。
要更深入地了解这些指标并找到需要改进的地方,请尝试跟踪以下内容:
最后,在每周运营期间定期审查这些指标有助于关注进展、识别成功并确定优先级。通过将此作为您文化的常规组成部分,您可以使用这些指标中的数据来推动更好的决策并逐步优化系统。
记住,衡量标准的有用性在于从中采取的行动及其推动进步的能力。这是一个不断完善数据和行动项目的反馈循环,以保持系统的改进。
一个没有弹性的系统可能无法顺利处理高峰时间。以下是一些有助于确保系统在各种条件下的可靠性的注意事项:
要做的:
不要做的:
可靠性测试对于在高需求期间保持系统的可用性和功能性至关重要。为了确保系统的可靠性,重要的是:
有必要避免以下情况:
适当的测试不仅可以确保正确性,作为活的文档,防止非功能性的倒退,还可以帮助工程师更深入地理解系统,在试图挑战系统的同时发挥他们的创造力,并最终为所有利益相关者创造更具弹性、更可靠的系统。
记住,如果你不故意对你的系统进行压力测试,你的用户会为你做的。那一刻何时到来,你将无法选择。
运维分布式系统就像指挥管弦乐队,这是一门精细的艺术,需要高水平的技能和对细节的关注。许多工程师倾向于低估操作的重要性,或者将其视为软件开发的次要因素。然而,在现实中,操作可能会对系统的可靠性产生重大影响。
就像指挥家的技巧和对管弦乐队的理解对于确保和谐的表演至关重要。例如,云计算提供商通常提供基于开源产品的服务。这不仅仅是关于使用软件,还有你如何使用它。这是云计算提供商业务的重要组成部分。
为了确保可靠性,需要考虑运维的三个关键方面:
事件响应方面尤其重要,因为它可以作为现实核查。毕竟,所有采取的措施都是不够的。这是一个谦逊的时刻,也是一个意识到世界比我们想象的要复杂得多的时刻。我们需要尽可能诚实地找出导致这起事件的所有工程和程序缺陷,并看看我们未来可以做得更好。
为了使事件回顾有效,考虑采用以下做法:
就不止步于“舒适的答案”而言,重要的是要确定并解决长期可靠性的根本原因。以下是一些可能导致服务中断的表面级别问题的示例:
根据这些诊断,很难提出长期提高可靠性的行动项目。另一方面,更深层次的根本原因听起来可能是:
解决根本原因可能更具挑战性,但这对于实现长期可靠性至关重要。这只是我们在运营方面应该努力的一个简短概述,但还有更多的东西需要探索和考虑。从事件响应协议到容量规划,有许多细微差别和最佳实践需要注意。
虽然程序和机制在确保系统可靠性方面发挥着至关重要的作用,但最终是人类将其付诸实践。因此,这不仅仅是要拥有正确的工具,还要培养正确的心态,为这些机制注入活力,使其有效运行。以下是有助于(不仅如此)保持可靠性的一些关键品质和习惯:
确保系统的可靠性是一项全面的工作,包括找出正确的指标,考虑到弹性进行设计,以及实施可靠性测试和操作。通过关注可用性、功能性和满足最重要的需求,组织可以更好地转化客户价值,并相应地调整风险和优先级。
建立和维护一个即使在最恶劣的条件下也能处理的系统,不仅有助于推动业务成功并取悦客户,而且还能给从事该系统的人带来成就感。可靠性是一个持续的过程,需要关注、技能和纪律。通过遵循最佳实践,不断挑战系统,培养有韧性的心态,团队和组织可以创建强大可靠的系统,能够承受任何挑战。
文章名称:速度和可靠性可以两全其美
URL网址:http://www.csdahua.cn/qtweb/news39/536339.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网