分布式脑裂

  ·   1 min read

脑裂定义 #

一个整体的系统分裂成两个独立的节点,争夺共享资源造成系统混乱

出现脑裂的原因 #

主心跳检测超时,导致主备切换,备提供服务后,主又恢复正常,出现双主

解决思路 #

  • 仲裁机制 通过设置一个仲裁角色,定时探活主备,但是仲裁者会存在高可用和性能瓶颈

  • 授权机制 假设slave已经提供服务,会有颁发的授权lease,假设master还在提供服务则lease必然是失效的,请求应当是失败的

  • 隔离机制

    • 共享资源fencing:确保只有一个master往共享存储提供写数据
    • 客户端fencing:确保只有一个master可以响应客户端请求
    • slave fencing:确保只有一个master可以向slave下发命令