首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >高可用:故障隔离方案【隔离术】

高可用:故障隔离方案【隔离术】

作者头像
崔认知
发布于 2024-09-13 06:12:46
发布于 2024-09-13 06:12:46
5670
举报
文章被收录于专栏:nobodynobody

故障隔离是分布式系统中提高可用性的关键技术之一,它通过将故障限制在局部范围内,防止故障扩散影响到整个系统

异常和故障总是无法完全避免(要时刻具备面向失败的设计(Design for Failure)思想),故障隔离的目标是优先确保核心业务运行稳定,体现了分层分级的系统设计思路。

在分布式系统环境下,我们要牢记所依赖的服务是由其他人提供并控制着,因此可能会由于发布、配置和上线更等原因,导致服务暂时不可用,故而不能对依赖的下游服务百分百的信任。

故障隔离的基本原理就是在故障发生时能够及时切断故障源,以防止故障扩散到整个系统隔离范围由高到低的排序,反映了不同级别的隔离策略和它们在系统架构中的作用。以下是对这些隔离级别的简要说明:

1. 数据中心隔离:

数据中心隔离是在物理层面上最彻底的隔离方式,意味着将服务部署在不同的数据中心。这样,即使一个数据中心发生故障,其他数据中心仍然可以继续提供服务。这种隔离级别最高,但成本也最高。

2. 部署隔离:

部署隔离通常指的是在不同的物理服务器虚拟机上部署服务实例。这种隔离可以减少单个硬件故障对整个服务的影响,并且可以通过负载均衡器在不同部署之间分配流量。

核心应用和非核心应用分开,内部应用和外部应用分开,在线应用和离线应用分开,传统稳定应用和敏捷创新应用分开,等等。

3. 网络隔离:

网络隔离是通过在不同网络或子网中部署服务来实现的。这样可以限制故障在一个网络区域内传播,同时可以通过网络策略和防火墙来控制不同服务之间的通信。

4. 服务隔离:

服务隔离是指在逻辑上将服务分开,使得每个服务都是独立运行的。这可以通过容器化、微服务架构服务网格来实现。服务隔离有助于确保一个服务的故障不会直接影响到其他服务。

5. 数据隔离:

数据隔离涉及到将数据存储在不同的数据库或数据存储系统中,以确保一个数据存储的故障不会影响到其他数据存储。这可以通过数据库分片、数据复制和备份策略来实现。

6. 线程级隔离:

使用不同的线程池处理不同的请求任务,当某个请求任务出现故障时,其他线程池不受影响,从而实现故障隔离。这种策略适用于单体应用,即单进程多线程的应用。

7. 进程级隔离:

随着业务的扩展,系统可能需要拆分成不同的进程,每个进程负责不同的功能。这样,当一个进程出现故障时,其他进程可以继续提供服务。进程级隔离可以通过在不同机器上部署进程来实现,从而进一步隔离故障。

8.资源隔离:

将系统资源分成几个部分,每部分资源负责一个模块,避免资源争抢。例如,使用容器技术(如Docker)可以为每个服务分配独立的资源,实现资源隔离。

9.用户级别的故障隔离:

通过数据分片负载均衡等技术,将不同用户的数据和服务请求分开处理,当系统出现故障时,只影响部分用户。

此外,故障隔离还需要结合其他技术和策略,如:

10.强弱依赖隔离:

避免同步调用,因为同步调用意味着强依赖,当依赖方故障时,调用方也会异常。通过消息队列等异步机制,可以实现服务之间的解耦,减少故障传播。

11.读写隔离:

写隔离(Read-Write Isolation)是一种在数据库和存储系统中常见的策略,用于优化性能和提高数据的可用性。这种策略通常在需要处理大量并发读写操作的场景中使用。

需要根据业务需求和性能目标来选择合适的读写隔离策略和一致性模型。对于需要高并发读写操作的系统,可能需要采用读写隔离技术来提高性能,同时通过事务管理和数据校验来确保数据的一致性。

12.动静隔离:

动静隔离是一种常见的网站架构设计策略,用于优化网站的性能和可扩展性。它主要涉及将静态内容和动态内容分开处理和存储。

13.热点隔离:

热点隔离是针对系统中的高负载或高关注度部分(热点)采取的特殊处理策略,以确保这些热点不会对系统的其他部分造成负面影响。在电商、金融、游戏等行业中,热点隔离尤其重要,因为它们经常需要处理如抢购、秒杀、促销活动等高并发场景。

在设计系统时,通常会结合使用这些隔离策略,以创建一个多层次的故障隔离机制。例如,可以在数据中心级别进行物理隔离,同时在服务级别进行逻辑隔离,以确保系统的高可用性和弹性。

熔断器模式:在服务之间使用熔断器来防止故障扩散。

超时和重试机制:为服务调用设置超时,并在必要时进行重试。可使用指数退避算法来持续增加重试之间的延迟时间,直到达到最大限制。重试的另外一个要求是服务的幂等设计

快速失败:快速失败是微服务架构中的一个重要原则,它强调当服务无法在合理的时间内提供预期功能和性能时,应该迅速报告错误并停止等待,以避免资源浪费和系统过载。

负载均衡:在服务实例之间分配流量,以避免单点过载。

健康检查:定期检查服务的健康状态,并在检测到故障时自动切换到健康的实例。

同步转异步:对第三方外部服务的依赖,尽可能通过消息队列异步化处理,避免同步调用,因为同步调用意味着强依赖。

缓存依赖数据:缓存依赖数据是一种常见的系统设计策略,用于提高系统性能和可用性,特别是在高流量和高并发的场景下。这种策略的核心思想是在系统的不同层次引入缓存,以减少对后端数据库或其他服务的直接依赖。缓存的问题是数据实时更新的一致性问题,但在很多场景下,对于客户的体验,读到旧的数据往往要比系统无法响应要好很多。缓存依赖数据是一种有效的策略,但也需要仔细设计和维护,以确保系统的整体性能和数据一致性。在设计缓存策略时,需要权衡读取速度、数据一致性、系统复杂度和成本等因素。

降级开关:降级开关是分布式系统中用于提高系统稳定性和可用性的一个常用策略。在系统面临高负载或部分服务不可用的情况下,通过启用降级开关,可以临时关闭或简化非核心功能,损失一定的客户体验,从而释放资源以确保核心业务的正常运行。

减少共享:减少共享是故障隔离策略的一个重要方面,它有助于限制故障在系统中的传播。在分布式系统中,完全避免共享是不现实的,因为服务之间通常需要进行通信和数据交换。但是,可以通过消息队列等方法来减少共享,从而提高系统的稳定性和可靠性。

通过这些综合措施,可以提高系统的整体可靠性和容错能力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 认知科技技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高并发高可用高性能的解决方案汇总整理
大家好,又见面了,我是你们的朋友全栈君。 难题与方案 1、亿级流量电商网站的商品详情页系统架构 面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问,同时能够秒级让最
全栈程序员站长
2022/08/04
3K0
高并发高可用高性能的解决方案汇总整理
熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握
对于人类的身体健康来说,“三高”是个大忌,但在计算机界,系统的“三高”却是健康的终极目标。本文将介绍一下流量治理是如何维持这种“三高”系统的健康,保障数据流动的均衡与效率,就如同营养顾问在维持人类健康饮食中所起的作用一般。
腾讯云开发者
2023/12/27
2.7K0
熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握
那些年听烂了的名词之“高可用“
本文想来和大家聊聊那些年我们听烂了的名词之 ‘高可用’ ,那么第一个问题就是: “如何构建一个高可用系统呢?”
大忽悠爱学习
2024/01/09
8200
那些年听烂了的名词之“高可用“
万字详解高可用架构设计
系统高可用是一个宏大的命题,从设计思想、架构原则到工程能力、服务管理等等方方面面,每个视角单拆出来都不是一篇文章可以解决的。本文将从大局上全面系统地梳理高可用系统架构,起到一个提纲挈领的作用。
腾讯云开发者
2025/01/07
4.1K1
万字详解高可用架构设计
服务器又崩了?深度解析高可用架构的挑战和实践
导读 本文是腾讯云微服务平台TSF的产品经理刘阎同学的产品分享,这次分享紧紧贴近目前企业面临的问题,对于服务器异常,业务流量激增提出高效的解决方案。然后从微服务架构挑战,微服务设计,高可用最佳实践这三个方面逐渐深入。  刘阎  腾讯云产品经理 5年ToB产品策划以及中间件开发工作经验 熟悉微服务、容器、Devops等产品,对分布式系统容灾架构设计具有丰富的实践经验 “ 大家好,我是腾讯微服务平台TSF 产品经理刘阎,目前主要负责TSF高可用能力建设及演进规划工作,本次分享我会结合自己对微服
腾讯云中间件团队
2021/07/15
9520
分布式架构的高性能与可用性
分布式架构是一种将系统拆分为多个独立的组件或服务,并在不同的计算节点上部署这些组件或服务的架构方式。它可以提供高性能和可用性的好处。下面我将详细介绍分布式架构在高性能和可用性方面的优势。
明志德道
2023/12/27
4480
分布式系统 概念 高可用 高并发 学习笔记
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
大鹅
2020/06/28
8910
分布式系统 概念 高可用 高并发 学习笔记
微服务设计原则——高可用
(2)调用的下游不是为高并发场景设计;比如提供异步计算结果拉取的服务,并不需要考虑各种复杂的高并发业务场景,提供高并发流量场景的支持。每个业务场景应该在拉取数据时缓存下来,而不是每次业务请求都过来拉取,将业务流量压垮下游。
恋喵大鲤鱼
2024/03/25
3100
微服务设计原则——高可用
微服务架构设计概要及CAP、BASE理论应用体现
- 根据业务功能和边界,将整个系统划分为多个有明确职责的微服务。每个微服务应专注于单一业务领域,如用户管理、订单处理、库存管理等,实现高内聚、低耦合。
用户7353950
2024/04/30
2740
微服务架构设计概要及CAP、BASE理论应用体现
架构设计 - 隔离术
隔离是通过将系统、资源分开,从而保证在发生问题时使其影响最小化,防止出现雪崩效应。
dys
2019/03/07
6820
微服务架构设计 | 如何设计高可用系统
高可用是指系统在面对各种故障和异常情况时,仍能够提供稳定、可靠的服务。对于企业和用户而言,高可用性是确保业务连续运行和用户体验的关键因素。 高可用系统能够降低因故障而导致的损失,提高用户满意度。
windealli
2024/01/24
8250
微服务架构设计 | 如何设计高可用系统
优雅应对故障:QQ音乐怎么做高可用架构体系?
导语 | 故障是开发者高频关注的问题。在分布式系统建设的过程中,我们思考的重点不是避免故障,而是拥抱故障,通过构建高可用架构体系来获得优雅应对故障的能力。本文作者冯煦亮从架构、工具链、可观测三个维度,介绍了QQ音乐多年来积累的高可用架构实践。期望对你有帮助。 QQ音乐高可用架构体系全景 故障无处不在,而且无法避免。在分布式系统建设的过程中,我们思考的重点不是避免故障,而是拥抱故障,通过构建高可用架构体系来获得优雅应对故障的能力。QQ音乐高可用架构体系包含三个子系统:架构、工具链和可观测性。 架构:架构包
腾讯云开发者
2023/01/06
2.5K1
优雅应对故障:QQ音乐怎么做高可用架构体系?
从互联网大厂,看互联网行业的高可用网络架构
高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表:
通信行业搬砖工
2023/09/07
5460
从互联网大厂,看互联网行业的高可用网络架构
分布式架构知识体系
节点,时间,一致性,CAP,ACID,BASE,P2P,机器伸缩,网络变更,负载均衡,限流,鉴权,服务发现,服务编排,降级,熔断,幂等,分库分表,分片分区,自动运维,容错处理,全栈监控,故障恢复,性能调优
Java团长
2019/04/25
7870
分布式架构知识体系
观《亿级流量网站架构核心技术》一书有感
我们先说高可用的本质诉求:高可用就是抵御不确定性,保证系统7*24小时健康服务。关于高可用,我们其实面对的问题就是对抗不确定性,这个不确定性来自四面八方。比如大地震,会导致整个机房中断,如何应对?比如负责核心系统的工程师离职了,如何应对?再比如下游接口挂了,如何应对?系统磁盘坏了,数据面临丢失风险,如何应对?我想关于上述问题的应对方式,大家在工作中或多或少都有所了解,而这个不确定性的处理过程,就是容灾,其不同的‘灾难’,对应不同的容灾级别。
技术zhai
2019/02/15
8330
高并发与高可用实战之基础知识大型网站架构特征(一)
系统设计不仅需要考虑实现业务功能,还要保证系统高并发、高可用、高可靠等。同时还应考虑系统容量规划(流量、容量等)、SLA指定(吞吐量、响应时间、可用性、降级方案等)、监控报警(机器负载、响应时间、可用率等)、应急预案(容灾、降级、限流、隔离、切流量、可回滚等)。
用户1518699
2018/09/12
9180
故障隔离与防护架构设计
在现代分布式系统中,随着流量的爆炸式增长以及微服务架构的广泛应用,系统的稳定性和可用性面临着巨大的挑战。尤其在高并发场景下,流量的瞬时冲击、下游服务的故障以及资源竞争问题,往往会导致系统雪崩,甚至整个业务瘫痪。作为一名性能测试工程师,我深知“故障不可避免,但崩溃可以避免”。
FunTester
2025/03/18
1870
故障隔离与防护架构设计
微服务与分布式系统设计看这篇就够了!
后台分布式架构形形色色,特别是微服务和云原生的兴起,诞生了一批批经典的分布式架构,然而在公司内部,或者其他大型互联网企业,都是抛出自己的架构,从接入层,逻辑层,数据层都各有特点,但这些系统设计中到底是出于何种考量,有没有一些参考的脉络呢,本文将从云原生和微服务,有状态服务,无状态服务以及分布式系统等维度探讨这些脉络。
腾讯云开发者
2024/10/22
3.7K0
微服务与分布式系统设计看这篇就够了!
互联网架构中的9种隔离术以及容器化的实现
9种隔离术 在硬件方案设计的时候,我们常提到过一个概念“故障域”。故障域指的是当一个区域出现故障以后,它的受影响范围。例如在设计双活数据中心的时候,我们要设置故障域,那个故障域是A站点,哪个是B站点。A站点出现断电,受影响的最大范围只限于本站点,那么A站点就是一个故障域。当然,硬件层面的故障域还可以分得更细:比如一个数据中心内部,不同楼层是不同的故障域;同一个楼层,不同的机架也是不同的故障域。在故障域这个问题上,关键是看故障的类型如何定义。 而隔离技术就是限制故障域的。当然,应用级别的隔离术比硬件的隔离更为
魏新宇
2018/03/22
3.9K0
互联网架构中的9种隔离术以及容器化的实现
架构面试题汇总(一)
CAP定理指出,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。具体含义如下:
公众号:码到三十五
2024/03/19
3730
推荐阅读
相关推荐
高并发高可用高性能的解决方案汇总整理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档