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

打印 上一主题 下一主题

主题 533|帖子 533|积分 1599

故障隔离

什么是故障隔离?

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

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

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

线程级故障隔离,是指使用不同的线程池处理不同的请求任务。当某种请求任务出现故障时,负责其他请求任务的线程池不会受到影响,即会继续提供服务,从而实现故障隔离。
线程级的故障隔离策略,在生产环境中较为常用,尤其是针对单体应用。系统再实现线程级隔离后,线程间通信通常使用共享变量来实现,它是一个进程中的全局变量,在进程的各个县城间可以同时使用。
进程级隔离

分布式系统按照功能分为不同的进程,分不到相同或者不同的机器中。如果系统的进程分不到不同的机器,从资源的角度来看,也可以算作主机级别的故障隔离。
系统实现进程级隔离后,进程间的协同必须通过进程间通信来实现。进程间通信可以分为两类:

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

资源隔离就是将分布式系统的所有资源分成几个部分,每部分资源负责一个模块,这样系统各个模块就不会争抢资源,即资源之间相互不干扰。这种方式不仅可以提高硬件资源利用率,也便于系统的维护和管理,大幅提升系统性能。
容器是微服务架构的基础,它本质上是操作系统的一个进程,但是与普通进程有以下区别:

  • 普通进程有很大的计算或者内存需求时,可能会占满物理机上的所有CPU、内存资源,导致其他进程没有资源可用。
  • 容器可以实现资源限制,让每个容器占用的资源都有一个上限,这个上限值限定了该容器的处理能力,一个容器使用的资源不会影响到其他容器的资源,从而避免资源争抢,提高性能。
从资源隔离的角度看,还可以有更多故障隔离策略,包括虚拟机隔离、集群隔离、机房隔离等,这些策略会跨集群、跨地域。
下面是关于各种故障隔离策略的详细比较。

用户级别故障隔离

用户级别故障隔离是指将不同用户分开,当系统出现故障时,只影响部分用户,而不是全体用户。
常用的用户级别故障隔离策略包括数据分片、负载均衡等。

  • 数据分片可以将不同用户的数据存储到不同的数据库,即一个数据库只存储部分用户的信息,这样当某个数据库出现故障时,仅影响该故障数据库存储的用户,不会影响其他用户。
  • 当处理请求的某个服务器出现故障时,负载均衡转发请求时,只会影响该故障服务器负责的用户请求,不会影响其他服务器正常提供服务。
    出处:http://wing011203.cnblogs.com/    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表