首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏互联网杂技

    产品容错设计原则

    随着互联网的飞速发展,越来越多产品尤其是2C类产品更加注重用户体验,其中错误对用户体验的影响是灾难性的,在此我总结出一些容错设计原则供大家参考和探讨。 一、容错性概念及重要性 对于容错性,大家可能不太清楚是什么概念,但当提到可用性时,那么大部分设计师都会比较熟悉这个词的含义。 容错性最初应用于计算机领域,它的存在能保证系统在故障存在的情况下不失效,仍然正常工作。产品容错设计能使产品与人的交流或人与人借助产品的交流更加流畅。 由此可见,容错设计原则是非常重要的,尤其是对于2C类或即时服务类(如铁路购票网站)产品/系统。 二、容错设计原则 通过文献整理,总结出5一级原则和18大二级原则,并提供对应的案例用以加深理解。

    1.9K90发布于 2018-04-03
  • 来自专栏Java技术圈子

    架构的容错设计

    面对程序故障,我们该做些什么 “容错设计”(Design for Failure)是微服务的另一个核心原则,也是架构反复强调的开发观念的转变。 服务容错 其实前面的讲解又发现,在分布式服务中,很多设计比如一致性设计都有妥协的成分在,但是容错设计却不能妥协,不能妥协的原因在于,分布式系统的本质是不可靠的,一个大的服务集群中,程序可能崩溃、节点可能宕机 容错策略 第一种容错策略,是故障转移(Failover)。 第二种容错策略,是快速失败(Failfast)。 第三种容错策略,是安全失败(Failsafe)。 第七种容错策略,是广播调用(Broadcast)。 1 那么为了实现各种各样的容错策略,开发人员总结出了一些被实践证明有效的服务容错设计模式。 实现容错策略 断路器模式 快速失败策略 断路器模式是微服务架构中最基础的容错设计模式,以至于像 Hystrix 这种服务治理工具,我们往往会忽略了它的服务隔离、请求合并、请求缓存等其他服务治理职能,直接把它叫做微服务断路器或者熔断器

    1.3K20编辑于 2023-04-11
  • 来自专栏MCP

    MCP 熔断降级体系:服务容错设计模式

    业务逻辑耦合 :降级策略往往与业务逻辑紧密相关,这可能导致业务逻辑与容错逻辑相互耦合,增加系统的维护难度。在开发过程中,需要合理设计代码结构,将容错逻辑与业务逻辑进行适度分离。

    46310编辑于 2025-04-27
  • 来自专栏Java进阶架构师

    dubbo源码解析-集群容错架构设计

    交流过程中我这位朋友问到了几个问题,我却没能回答得上,让我感到十分惭愧.故而将原计划提前,并且定期整理,做到定期更新一篇dubbo源码解析.好让自己的知识盲点尽早暴露出来.本篇讲的就是dubbo的一个重要概念,集群容错 .既然你已经在看源码解析了,那么我就假设你对dubbo的使用上有一定的经验,并且看过了dubbo的官网的对集群容错的简单介绍 之前有写过源码解析的一些拙见,例如别怕,手把手带你撕、拉、扯下SpringMVC 官网介绍图.png 这张是官网的对于集群容错的架构设计图,即使你有一定的使用经验,第一眼看到这个图可能还是有些懵逼.因为这个图是从设计的角度画出来的,而不是使用的角度.但是即使这个图你看不懂也不影响你对本文的阅读 根据官网的描述 在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。 到达终点站.我们回忆总结一下,文初提到的三个关键词,在这个集群容错的整体架构过程中,dubbo究竟做了什么.其实也就是三件事 在Directory中找出本次集群中的全部invokers 在Router中

    42840发布于 2018-08-15
  • 来自专栏慕枫技术笔记

    微服务架构服务容错设计分析

    微服务容错机制正是这样一种稳定性解决方案,可以理解微服务架构的保险丝,通过它可以对业务平台形成一种有效的保护机制。在发生平台异常时候,容错机制是平台稳定运行的最后一道屏障。 我们在进行架构设计时,不仅需要满足业务要求,同时也需要面向失败进行设计,意思就是说当外部条件发生变化或者内部出现异常时,平台的架构能够将这种异常的影响降到最低,强大的容错能力是优秀架构的关键指标。 回到今天的主题容错机制,我们可以反过来想,如果没有如果没有熔断降级系统容错机制,整个系统平台在异常情况下,会发生怎样的系统反应,我们先看下以下几种场景。 在熔断机制中,核心的内容就是断路器的设计,断路器设计主要有两方面一个是状态转换的设计,一个是如何根据阈值以统计数据来执行核心的断路功能。 总结 本文主要对微服务架构中的容错机制进行了分析,从为什么要有容错机制到如何通过资源隔离、熔断以及降级等方式实现微服务容错保护进行了阐述。

    65720编辑于 2023-03-20
  • 来自专栏芋道源码1024

    Dubbo 源码解析 —— 集群容错架构设计

    交流过程中我这位朋友问到了几个问题,我却没能回答得上,让我感到十分惭愧.故而将原计划提前,并且定期整理,做到定期更新一篇dubbo源码解析.好让自己的知识盲点尽早暴露出来.本篇讲的就是dubbo的一个重要概念, 集群容错 .既然你已经在看源码解析了,那么我就假设你对dubbo的使用上有一定的经验,并且看过了dubbo的官网的对集群容错的简单介绍 之前有写过源码解析的一些拙见,例如别怕,手把手带你撕、拉、扯下SpringMVC 前期铺垫 这张是官网的对于集群容错的架构设计图,即使你有一定的使用经验,第一眼看到这个图可能还是有些懵逼.因为这个图是从设计的角度画出来的,而不是使用的角度.但是即使这个图你看不懂也不影响你对本文的阅读 带着这个问题,我们继续往下看 根据官网的描述 在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。 这里涉及到了一定的算法,后面我也会有一篇文章加以介绍.剧透一下,这个在 2.5.4的版本中,这个算法还是存在一些小的bug,此时我们的位置是序号13 到达终点站.我们回忆总结一下,文初提到的三个关键词,在这个集群容错的整体架构过程中

    91770发布于 2018-03-02
  • 来自专栏慕枫技术笔记

    微服务容错组件Hystrix设计分析

    Hystrix正是一种专门针对微服务容错处理的基础组件,本文主要针对容错组件Hystrix进行设计分析,希望对大家有所裨益。 Hystrix是什么? Hystrix是Netflix提供的一款服务容错基础组件,通过引入它可以给原有的应用添加延迟容忍和容错逻辑,以达到提升整个微服务架构的服务治理能力的目的。 阈值统计 阈值以及数据统计是进行开关打开的判断依据,因此如何统计数据是非常关键的设计。 从隔离设计的第一张图中我们可以看出使用线程池时,发送请求的线程和执行依赖服务的线程不是同一个,线程池的使用方式就是将它们进行了隔离。 总结 本文主要对微服务架构中服务容错降级进行背景问题分析,阐述了服务容错组件Hystrix组件在服务容错、降价以及熔断方面的设计内容。相信大家对于服务容错这块内容有了更加深刻的理解。

    42820编辑于 2023-03-20
  • 来自专栏小白晋级大师

    分布式系统架构4:容错设计模式

    这是小卷对分布式系统架构学习的第4篇文章,虽然知道大家都不喜欢看纯技术文章,写了也没多少阅读量,但是为了个人要成长,小卷最近每天都会更新分布式的文章1.概念容错策略,指的是“面对故障,我们该做些什么”; 而容错设计模式,指的是“要实现某种容错策略,我们该如何去做”。 上一篇已经讲了7种容错策略,为了实现各种策略,开发总结了一些容错设计模式,包括微服务常见的:断路器模式、舱壁隔离模式、超时重试模式。 使用重试模式时,实现很简单,需避免滥用,适用场景的条件:只在主路关键服务上进行同步重试仅瞬间故障引起的失败进行重试仅对幂等性服务进行重试重试需要有明确终止条件5.容错设计模式对比模式 服务熔断:一种保护机制,用于防止一个服务的连续失败导致整个系统的崩溃,属于一种快速失败的容错策略的实现方法。

    42910编辑于 2024-12-20
  • 来自专栏系统设计

    设计一个容错的微服务架构

    为了尽量减少部分中断的影响,我们需要构建容错服务,来优雅地处理这些中断的响应结果。 本文介绍了构建和操作高可用性微服务系统的最常见技术和架构模式。如果你不熟悉本文中的模式,那并不一定意味着你做错了。 系统设计没有通用解决方案,建立可靠的系统总是会带来额外的成本。 微服务架构的风险 微服务架构将应用程序逻辑移动到服务,并使用网络层在它们之间进行通信。 微服务体系结构的最大优势之一是,团队可以独立设计,开发和部署他们的服务。他们对服务的生命周期拥有完全的所有权。这也意味着团队无法控制他们依赖的服务,因为它更有可能由不同的团队管理。 微服务容错隔离 在大多数情况下,由于分布式系统中的应用程序相互依赖,因此很难实现这种优雅的服务降级,您需要应用几种故障转移的逻辑(其中一些将在本文后面介绍),以为暂时的故障和中断做准备。 泰坦尼克号沉没的主要原因之一是其舱壁设计失败,水可以通过上面的甲板倒在舱壁的顶部,导致整个船体淹没。 泰坦尼克号舱壁设计(无效的设计) 断路器 为了限制操作的持续时间,我们可以使用超时。

    89240发布于 2020-04-17
  • 来自专栏小徐学爬虫

    爬虫异常处理:异常捕获与容错机制设计

    通过异常捕获和容错机制的设计,我们可以让我们的爬虫更加健壮和可靠。 1、异常捕获 在使用Python进行爬虫开发时,异常捕获是非常重要的。 requests.get('http://www.example.com') # 对响应进行处理... except Exception as e: print('请求出错:', str(e)) 2、容错机制设计 当爬虫遇到异常时,我们需要有一种容错机制来处理异常情况,以保证程序的正常运行。 以下是一些常见的容错机制设计: 2.1 重试机制:当遇到网络异常或超时时,我们可以设置重试机制,让爬虫重新尝试获取数据。 通过异常捕获和容错机制设计,我们可以让我们的爬虫更加稳定和可靠。

    60830编辑于 2023-08-22
  • 来自专栏程序猿DD

    容错过的灰度发布系统架构设计

    https://www.toutiao.com/i6910008843955192323 灰度发布的定义 互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰度发布系统 灰度发布允许带着bug上线,只要bug不是致命的,当然这个bug是不知道的情况下,如果知道就要很快的改掉 简单灰度发布系统的设计 灰度简单架构如上图所示,其中的必要组件如下: 1、策略的配置平台,存放灰度的策略

    82920编辑于 2023-04-04
  • 来自专栏ThoughtWorks

    分布式计算框架状态与容错设计

    本文会尽量避免从官方文档的角度进行论述,而是尝试先跳出具体的框架,从原理上分析分布式计算引擎状态容错机制的设计思想。 对这一点的理解与取舍,便是不同框架对状态与容错机制设计的出发点。 本节脱离具体的框架试举几例,大家可以自行对号入座,看这样的设计思路接近于哪个框架。 ---- Hadoop与Spark如何设计容错 一般来说,最朴素的想法就是通过下面的步骤实现状态与容错: 暂停所有数据的接收。 每个任务处理当前已经接收的数据。 将此时所有任务的状态进行持久化。 下面介绍Flink状态容错机制的设计原理。 从单机程序开始 现在跳出Flink框架,设想一个运行在单个节点的进程,该如何设计容错机制。 分布式容错 延续这个思路,是否可以设计一个分布式的容错机制呢?下图是一个多节点 的分布式任务,数据流从左至右。 ?

    71230发布于 2021-04-16
  • 来自专栏软件开发-青出于蓝

    Dubbo源码解析之集群容错架构设计

    图1 Dubbo集群容错架构设计时序图 ?                                                     图2 Dubbo官网给的集群容错的架构设计图     图2的大体意思是:先从Directory那里拿到所有的Invoker,假设为List<Invoker> s1;之后用Router过滤s1,得到List 图2中的Directory、LoadBalance都使用了设计模式的模板模式。     

    47430发布于 2019-04-15
  • 来自专栏开源部署

    Sqoop:容错

    Sqoop本身的容错依赖于Hadoop,这里我们focus在Sqoop传输任务失败的处理,确切的说,focus在Sqoop如何解决传输任务失败引发的数据一致性问题 对于一个传输任务,将数据从A传输到B,

    67910编辑于 2022-06-29
  • 来自专栏从码农的全世界路过

    容错处理

    常见的容错机制一般有四种:fail-fast, fail-safe, fail-over, fail-back. 1.fail-fast 快速失败 fail-fast即为快速失败机制是Java集合中的一种保护机制

    66350编辑于 2022-06-27
  • 来自专栏开源部署

    实现路由容错

    1、实现路由容错 通过路由可以定义已知的规则,但不可能考虑到所有用户的所有请求,而且路由设计可能存在变更,网络等基础设施可能产生错误,所以需要进行路由容错。 路由容错主要通过未定义的路由和路由熔断来实现。 其包含多种默认方法来将Predicate组合成复杂的路由逻辑 spring.cloud.gateway.routes[0].predicates[0]=Path=/hello 2.2、编写路由容错控制器 eureka.client.service-url.defaultZone=http://eureka01:50025/eureka/,http://eureka02:50026//eureka/ 3.3、编写路由容错控制器

    93020编辑于 2022-09-15
  • 来自专栏飞鸟的专栏

    弹性和容错

    弹性和容错是微服务架构中非常重要的两个方面,它们能够保证系统在面对各种异常和故障时仍能正常运行,并且能够快速恢复正常状态。在本文中,我们将详细介绍弹性和容错的概念、原理和实现方式。 1.3 弹性容错弹性容错指系统能够自动检测和处理各种异常和故障,以保证系统的可靠性和可用性。例如,系统可以自动切换到备用服务、自动恢复故障服务、自动重试失败请求等,以应对不同的异常情况和故障状况。 容错容错是指系统在面对各种异常和故障时,能够保证系统的可靠性和可用性。容错包括以下几个方面:2.1 异常处理异常处理指系统能够正确处理各种异常情况,避免系统崩溃或数据丢失。 实现方式弹性和容错的实现方式有很多种,其中比较常用的包括以下几个方面:3.1 负载均衡负载均衡是指将流量和请求分摊到不同的服务实例或节点上,以避免单点故障和流量瓶颈。

    1.4K31编辑于 2023-04-08
  • 来自专栏互联网大杂烩

    拜占庭容错机制

    Client会发送一系列请求给各个replicas节点来执行相应的操作,BFT算法保证所有正常的replicas节点执行相同序列的操作。因为所有的replicas节点都是deterministic,而且初始状态都相同,根据状态机原理(state machine replication),这些replicas会产生相同的结果状态。当Client收到f+1个replicas节点返回的结果时,如果这些结果都一样,因为BFT算法确保了最多有f个replicas出现问题,所以至少有一个replicas是正确的,那么Client收到的这些结果都是正确的。

    1K20发布于 2018-08-22
  • YashanDB容错机制

    容错机制是确保系统稳定性和数据一致性的关键要素。下面是 YashanDB 容错机制的详细解析:1. 数据冗余与副本YashanDB 使用数据副本机制来确保数据的高可用性。 在容错时,分布式事务机制能确保数据在不同副本之间的一致性,即使某个节点发生故障,也能够保证事务的原子性。 这些日志不仅有助于故障排查,也有助于系统恢复和容错机制的优化。- 操作日志:记录每一次数据库操作,便于故障追踪和数据恢复。- 审计日志:记录数据库的安全操作,确保系统在容错时不被恶意破坏。 总结YashanDB 的容错机制涉及到多个方面,包括数据冗余、自动故障转移、分布式事务、一致性恢复、异地容灾、监控告警等。 通过这些机制,YashanDB 能够确保在系统出现故障时快速恢复并维持高可用性,从而提升整个系统的稳定性和容错能力。

    14610编辑于 2025-10-19
  • 来自专栏移动端周边技术扩展

    拜占庭容错算法

    拜占庭容错算法不需要发行加密货币,但是只能用于私有链或者联盟链,需要对节点的加入进行权限控制;不能用于公有链,因为公有链中所有节点都可以随意加入退出,无法抵挡女巫攻击(sybil attack) 安全性

    81230发布于 2018-10-10
领券