《分布式技术原理与算法解析》学习笔记Day27

2023-03-01  本文已影响0人  技术修行者

故障隔离

什么是故障隔离?

故障隔离,就是采用一定策略,以实现当某个模块发生故障时,不会影响其他模块继续提供服务,以保证整个系统的可用性,它可以避免分布式系统出现大规模的故障,甚至是瘫痪,降低损失。

分布式故障隔离策略

分布式系统中的故障策略有很多,基本可以分为两个维度:

  1. 以功能模块为粒度进行隔离,各个功能/服务模块之间松耦合,一个功能/服务模块出现故障,不会影响其他功能/服务模块,根据功能模块或者服务由线程执行还是进程执行,可以分为线程级隔离和进程级隔离。
  2. 通过资源隔离来实现,系统中各个模块拥有自己独立的资源,不会发生资源争抢,从而提升系统性能,根据资源所属粒度,可以划分成进程级隔离、虚拟机隔离、服务器隔离和机房隔离。

线程级隔离

线程级故障隔离,是指使用不同的线程池处理不同的请求任务。当某种请求任务出现故障时,负责其他请求任务的线程池不会受到影响,即会继续提供服务,从而实现故障隔离。

线程级的故障隔离策略,在生产环境中较为常用,尤其是针对单体应用。系统再实现线程级隔离后,线程间通信通常使用共享变量来实现,它是一个进程中的全局变量,在进程的各个县城间可以同时使用。

进程级隔离

分布式系统按照功能分为不同的进程,分不到相同或者不同的机器中。如果系统的进程分不到不同的机器,从资源的角度来看,也可以算作主机级别的故障隔离。

系统实现进程级隔离后,进程间的协同必须通过进程间通信来实现。进程间通信可以分为两类:

  1. 如果进程在同一个机器上,可以通过管道、消息队列、信号量、共享内存等方式。
  2. 如果进程分布在不同机器上,可以通过远程调用来实现。

资源隔离

资源隔离就是将分布式系统的所有资源分成几个部分,每部分资源负责一个模块,这样系统各个模块就不会争抢资源,即资源之间相互不干扰。这种方式不仅可以提高硬件资源利用率,也便于系统的维护和管理,大幅提升系统性能。

容器是微服务架构的基础,它本质上是操作系统的一个进程,但是与普通进程有以下区别:

  1. 普通进程有很大的计算或者内存需求时,可能会占满物理机上的所有CPU、内存资源,导致其他进程没有资源可用。
  2. 容器可以实现资源限制,让每个容器占用的资源都有一个上限,这个上限值限定了该容器的处理能力,一个容器使用的资源不会影响到其他容器的资源,从而避免资源争抢,提高性能。

从资源隔离的角度看,还可以有更多故障隔离策略,包括虚拟机隔离、集群隔离、机房隔离等,这些策略会跨集群、跨地域。

下面是关于各种故障隔离策略的详细比较。

27-故障隔离策略比较.png

用户级别故障隔离

用户级别故障隔离是指将不同用户分开,当系统出现故障时,只影响部分用户,而不是全体用户。

常用的用户级别故障隔离策略包括数据分片、负载均衡等。

上一篇下一篇

猜你喜欢

热点阅读