繁体   English   中英

领导者选举是否用于微服务副本的活动/部分备用用例?

[英]Is leader election used for active/partial standby use cases for microservice replicas?

对于微服务 HA,我知道有“Active/Active”配置以及“Active/Standby”配置。

我想知道您是否可以将领导人选举用于中间的某些事情。 例如,假设有 3 个微服务都分担处理总线消息并将它们存储在数据库中的负载。 但是只需要其中一个来进行日常数据库清除。 您是否可以使用领导者选举来确定应该由哪一个来完成该任务?

或者这总是一个糟糕的设计,您应该为此使用单独的应用程序吗?

无领导

在多个节点以相同方式运行的分布式系统中,我们将此环境称为无领导者。 顾名思义,没有领导者可以跟随。 每个节点都可以执行相同的操作集。

领导者-追随者

如果有需要在单个节点上运行的特殊操作,则有多个选项:

  • 引入leader-follower
  • 将此操作放入单独的服务中
  • 使操作具有幂等性(重新运行不会造成任何不必要的副作用)
  • 等等

让我们检查第一个选项。 如何保证只有一个节点可以执行操作?

  • 使用排队系统
    • 每条消息都可以由单个消费者获取
  • 获取排他锁
  • 有一个共识协议*
    • 就谁将成为领导者达成一致
  • 等等

*领袖选举是一种专门的共识协议

领导者选举是一个复杂的问题,因为您必须解决很多问题,例如:

  • 如何检测领导者是否失败?
  • 如何确保集群中只有一个领导者?
    • 如果可以有多个,那么我们称之为状态:裂脑
  • 您如何处理网络分区?
  • 如何确保系统在一定时间内达成共识?
  • 等等

这些问题在 Paxos、Raft 和 ZAB 协议中或多或少地得到了解决。

返回您的用例

我并不是说领导人选举在这里是一个坏主意,但它肯定会使您的系统更加复杂。 而且很难以正确的方式实施

我还想强调,LE 在那些需要协调器(如数据复制)的复杂流程/逻辑的用例中大放异彩。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM