专栏首页技术探索微服务扩展性和高可用-冗余和容错(翻译)

微服务扩展性和高可用-冗余和容错(翻译)

原文出处:https://dzone.com/refcardz/scalability?chapter=5

冗余和容错

冗余系统(Redundant system)设计取决于任何系统组件故障独立于其他组件故障的预期。

容错系统在组件或子系统发生故障时继续运行;它的吞吐量可能会降低,但总体系统可用性保持不变。硬件或软件中的故障可以通过组件冗余或安全回退(如果可以在软件中进行回退)来处理。在依赖系统不可用的情况下,软件中的容错通常作为一种回退方法来实现。容错要求源自于SLA。实现依赖于硬件和软件组件,以及它们交互的规则。

容错对SLA的要求

  • 无单点故障:冗余组件确保连续运行,并允许在不中断服务的情况下进行维修。
  • 故障隔离: 问题检测必须精确定位特定的故障组件。
  • 故障传播遏制: 一个组件中的故障不能级联到其他组件。
  • 恢复模式:将系统设置回已知状态。

冗余集群系统可以提供更高的可用性、更好的吞吐量和容错性。图10中的A/A集群为可伸缩的无状态应用程序提供不间断的服务。

a53cd970-721c-11e9-b22a-7d284106ced1.png

图 10: A/A 容错与恢复

一些有状态的应用程序可能只能扩展;图11中的A/P集群为此类应用程序提供不间断服务和容灾恢复。A/P配置提供配置的透明度。A/P配置可以以更好的成本提供故障透明度。因为自动故障检测和重新配置是通过反馈控制系统实现的。打宝石反馈系统的成本更高,实施起来更为棘手。

b502a150-721c-11e9-b22a-7d284106ced1.png

图 11: A/P 容错与恢复

企业系统通常通过将服务转移到被动系统并尽快将其练级,从而通过故障透明来实现应付故障的容错和恢复。机器人?(Robotics)和生命临界系统可以实现概率、线性模型、故障隐藏和优化控制系统

多区域

荣誉系统通常跨越多个区域,以地理位置来实现隔离,提供故障转移功能,并尽可能靠近消费者交付内容。这些冗余通过系统级联到所有服务中。并且单个可扩展系统可以遍历整个负载均衡集群。

云计算

云计算描述了在第三方拥有和操作分布式计算资源的情况下,来运行的应用程序。

最终使用者(End-user)应用程序是最常见的例子。他们利用Saas和PaaS计算模型。

d2ffc8e0-721c-11e9-b22a-7d284106ced1.png

图 12: 云计算配置

云服务类型

  • Web 服务: Salesforce com, USPS, Google Maps.
  • 平台服务: Google App Engine, Amazon Web Services (EC2, S3, Cloud Front), Nirvanix, Akamai, MuleSource.

故障检测方法

故障检测方法必须提供足够的信息来隔离故障并执行自动或辅助故障转移操作。一些最常见的故障检测方法包括:

  • 内置诊断功能。
  • 协议嗅探器。
  • 健康检查
  • Watchdog 检查.

临界性被定义为两个或两个以上检测机制在固定时间段内报告的连续故障数。如果故障检测机制报告了每个故障 (干扰), 或者它在多个监视期间没有报告真正的故障, 则该机制是无用的。

原文链接:https://dzone.com/refcardz/scalability?chapter=5

原文作者:Matt Rasband;Eugene Ciurana

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jedis源码阅读笔记(v3.0.0)

    jedis的官方api如下: http://xetorthio.github.io/jedis/

    日薪月亿
  • hashmap为什么在发生hash冲突后把元素放在链表的头部?

    有回答说是因为最后放入的元素会被再次操作的机会很大,所以放在头部,提高再次获取的效率,这个解释不能让人信服。 其实,仔细想想如果不放在头部,放在尾部或其它位置,...

    日薪月亿
  • java 图片加水印(图片或者文本)

    对于上传的图片,有时候我们需要加上水印来标识图片的来源,以下java代码用来处理图片加文字和图片水印

    日薪月亿
  • 如何应对线上故障

    线上故障是我们技术同学经常遇到,也是技术成长中经常要经历的事。从故障中我们可以吸取到很多教训,变得越来越有经验。

    奎哥
  • 故障管理工作方法和技巧分享

    做故障管理这么久,对怎样才能做好这个工作有一些切身感受,除去一些只可意会不可言传的部分,这次我把能想到的工作技巧都总结出来了。 由于这个岗位不是互联网公司6大...

    小小科
  • 技术改进和业务发展哪个重要?

    当然,还有 5Why 分析法,就是针对故障至少问 5 个为什么。通常也可以找到比较深层次的原因,或许不是根因,但它比较有针对性。

    春哥大魔王
  • 拆解交易系统--如何做好稳定性

    快速发展的互联网业务往往存在一段“快,糙,猛”的阶段,业务的高速发展过程中大家的注意力都集中在了业务快速迭代,系统功能快速实现,而忽略了稳定性相关的问题。

    春哥大魔王
  • Utility之循环链表

    与双向链表一样:这个结构内部没有同步或互斥机制。多任务访问同一链表时,要注意互斥保护,例如使用"互斥信号量"。

    Taishan3721
  • 分享一个调用耗时统计类

        项目中经常需要统计调用一个外部接口的耗时,在做性能测试时也常需要分析N次调用所需时间,这类统计有一个共性点,即关注调用或执行的相对时间,而不关心绝对时间...

    王亚昌
  • SpringBoot 使用sharding jdbc进行分库分表,基于4.0版本,Springboot2.1

    之前写过一篇使用sharding-jdbc进行分库分表的文章,https://blog.csdn.net/tianyaleixiaowu/article/det...

    天涯泪小武

扫码关注云+社区

领取腾讯云代金券