ebay增强可用性的4个原则(1)

简介: ebay增强可用性的4个原则(1)

你可能听说过英国《卫报》。有可能从诸如爱德华·斯诺登泄密事件或者2011年与罗伯特·默多克的国际新闻相关的电话窃听丑闻中听说过它。你所不知道的是它的在线和技术团队获得过数个奖项,被许多圈子视为英国最好的产品团队。


2008年的情况有些奇怪,《卫报》运营在一套企业级软件系统上,这套复杂的代码又分成数个服务,这些服务与一个单体数据库耦合在一起。系统运行了相当长的一段时间并且平安无事,但是随着互联网的增长,你永远都不知道未来会发生什么事情。如果我们推出一篇确实重磅的文章,流量就可能达到一天内以前峰值的一倍以上。问题是当有些部分出现问题时,所有的其他部分都开始出故障。这好像整个产品共享一个巨大的熔丝——当熔丝熔断时,整个系统都会因此失败。

“坦尼娅·科德里向其eBay的前同事们求助,作为增长咨询公司AKF Partners公司,他们现在帮助那些需要这方面指导的客户。在AKF的帮助下,我们开始重新设计网站,增加故障隔离区或泳道。基本上,相当于把熔丝盒中的单根熔丝变成了多根。在任何时候,如果网站的一部分出现问题,只有那个部分会出故障。这种故障隔离办法让软件和数据库子系统部署在独立的泳道里,每个泳道都完全独立于其他的泳道。网站的不同内容区域由不同的泳道提供服务。如果一个泳道失败,比如天气版面,我们可以继续提供时效性强的新闻。更近一步,我们可以在每个不同泳道的可用性方面投入不同的时间和精力。像新闻之类的泳道可以有比其他重要性低的(如天气)泳道显著不同的冗余解决方案。在过去的解决方案中,每个部分都有同样的可用性以及相同的成本;现在我们可以让新闻有更高的可用性而不必大幅度提高成本。


格兰特说道,“回想2008年,你会看到责任编辑总在关注网站是否能应对大流量新闻。而今,刚刚有1400万唯一的读者阅读了201511月恐怖分子袭击巴黎的报道。现在的责任编辑再也不顾虑在线系统,他们知道该系统有这个能力。”


“受到这种关注的并不仅仅是网站。当在互联网上使用一款产品时,要依靠一定数量的工具以及独特的基础设施。”格兰特总结说,“现在,我们把相同的概念应用到监控和代码发布等地方。每个关键业务都应该有自己的泳道,这样某个工具的故障就不会导致其他工具和监控的故障”。


对故障隔离和故障控制的需求并不局限于格兰特与《卫报》。根据我们的经验,大多数的技术团队都非常擅长,并且非常专注于交付能正常工作的系统。此外,大多数工程师都明白不可能研发出完美无缺的解决方案,因此,不可能构建永远不会故障的系统。即使考虑到了这一点,几乎没有工程师愿意花费大量时间来勾勒和圈定任何给定故障的“爆炸半径”。


在我们的业务中,可用性和可扩展性具有同等重要性。可用性不高的产品确实不需要扩展,当需求来临时不能扩展的网站也不会是高可用的。因为系统故障无法避免,所以我们不得不花时间来控制故障对系统的影响。本章提供了几种限制故障影响的方法,总之,减少故障的频率,提高产品的整体可用性。


微信图片_20220123182919.jpg

规则1——用“泳道”隔离故障

内容:在设计中实现故障隔离区或泳道。

场景:为可扩展性开始拆分持久层(例如数据库)或服务时。

用法:沿Y或Z轴拆分持久层和服务,禁止故障隔离的服务和数据间同步通信或访问。

原因:提高可用性和可扩展性。减少发现和解决故障的时间。缩短上市时间和成本。

要点:故障隔离包括根除故障隔离域间的同步请求,限制异步调用和处理同步调用失败,以及避免泳道之间的服务和数据共享。

 

在拆分服务和数据方面的术语丰富而混乱,而且有时候相互矛盾。不同组织经常使用一些词,如豆荚(pod)、池(pool)、集群(cluster)和分片(shard)。在同一组织内这些术语经常交替使用加剧了这种困惑。在某个场景,团队可以使用分片来确定服务和数据的分组,而在另一场景下,它仅意味着在数据库中分割数据。鉴于现有术语的混淆和差异,在实践中我们创造了泳道一词,尝试打造故障隔离的重要概念。一些客户开始采用这个词来表示为实现故障隔离而在生产中按照服务或客户拆分,它最重要的贡献是在设计领域。表9-1是常用术语的列表,它包括对这些术语最普通的描述以及何时及如何在实践中交替使用的说明。


微信图片_20220123182939.jpg


在我们看来,这些术语中最重要的区别是大多数都集中在分工或事务上,但只有一个聚焦在控制故障传播上。而池、分片、集群和豆荚指的是如何在生产环境中实施或如何拆分或扩展客户或者服务,游道是围绕设立故障隔离域提出的架构概念。故障隔离域是这样的一个域,当物理或逻辑服务因故障无法正常工作时,无论该故障是响应缓慢还是根本无法响应,唯一受到影响的是那些在故障域中的服务。泳道通过故障域把分片和豆荚的概念拓展到了服务的前门——数据中心的入口。在极端情况下,它意味着按照功能提供独立的网络、应用和数据库服务器(或叫故障隔离区)。在本质上,泳道旨在提高可扩展性和可用性,而不仅仅是一个可以扩展事务处理的机制。


我们借用CSMA/CD(带有冲突检测的载波侦听多路存取,通常称为以太网)中的概念,其中故障隔离域相当于冲突域。在全双工交换机之前,为了抵消碰撞的影响,以太网段控制碰撞以确保所有连接的系统感觉不到影响。我们觉得用“泳道”这个术语来描述故障隔离是一个非常好的比喻,泳道是在游泳池中设置的隔离线,有助于游泳选手在游泳过程中避免相互干扰。与此类似,不同组别的客户或者功能之间存在隔离带,不允许跨越不同组别进行同步事务处理,有助于确保一条泳道上的故障不会对其他泳道上的用户操作产生不利的影响。


image.png

相关文章
|
21天前
|
供应链 安全 Java
软件架构一致性 —— 被忽视的研发成本
本文主要介绍了一些解决架构一致性问题的方法,以及我们应该如何去理解和应对部分不得不付出的成本。
|
2月前
|
搜索推荐 测试技术
性能场景之业务模型中二八原则的误区
【2月更文挑战第18天】性能场景之业务模型中二八原则的误区
53 6
性能场景之业务模型中二八原则的误区
|
12月前
|
缓存 负载均衡 安全
【可用性设计】 GCP 面向规模和高可用性的设计
【可用性设计】 GCP 面向规模和高可用性的设计
|
12月前
|
存储 缓存 架构师
「可扩展性」可扩展性最佳实践:来自eBay的经验教训
「可扩展性」可扩展性最佳实践:来自eBay的经验教训
|
数据可视化 UED iOS开发
设计产品的十大可用性原则
尼尔森十大可用性原则是Jakob Nielsen提出,用来评价用户体验好不好的十个标准,虽然这是在web时代设计的标准,但依然可以给我们在做产品设计的时候做参考。
209 0
设计产品的十大可用性原则
|
存储 缓存 供应链
ebay增强可用性的4个原则(2)
ebay增强可用性的4个原则(2)
143 0
ebay增强可用性的4个原则(2)
|
设计模式 存储 应用服务中间件
ebay增强可用性的4个原则(3)
ebay增强可用性的4个原则(3)
120 0
ebay增强可用性的4个原则(3)
|
负载均衡 网络协议 应用服务中间件
ebay增强可用性的4个原则(4)
ebay增强可用性的4个原则(4)
128 0
ebay增强可用性的4个原则(4)
|
Java 定位技术 API
ebay增强可用性的4个原则(5)
ebay增强可用性的4个原则(5)
ebay增强可用性的4个原则(5)