构建细粒度监督树:实现系统错误隔离与恢复
在系统运行过程中,错误的发生难以避免。如何将错误的影响限制在系统的小部分区域,使系统能够始终提供大部分服务,是我们需要解决的重要问题。本文将详细介绍通过构建细粒度监督树来实现错误隔离和最小化负面影响的方法。
1. 监督树概述
要减少错误对整个系统的影响,基本工具包括进程、链接和监督者。我们需要时刻考虑当某个进程因错误崩溃时,系统其他部分会受到怎样的影响,并在错误影响范围过大时采取纠正措施。
2. 分离松散依赖部分
在待办事项系统中,进程之间的链接导致错误传播范围过大。例如,无论哪个进程崩溃,退出信号都会传播到其链接的进程,最终导致待办事项缓存进程崩溃,整个系统重启。这种粗粒度的错误恢复方式是因为从其他工作进程内部启动工作进程。
为了减少错误影响,我们需要让监督者直接启动各个工作进程,这样监督者就能单独监督和重启每个工作进程。具体操作步骤如下:
1. 移动数据库服务器 :将数据库服务器直接从监督者启动,隔离数据库错误和缓存中的错误。
- 从 Todo.Cache.init/1 中移除对 Todo.Database.start_link 的调用。
- 在调用 Supervisor.start_link/2 时添加另一个子规范。示例代码如下:
defmodule Todo.System do
def start_link do
Supervisor.
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



