知识卡片
JobManager主备高可用的选举机制
内容
Flink集群的高可用本质上等价于JobManager这个Master角色的高可用:一旦唯一的JobManager宕机,整个集群就无法继续对外提供服务。解决办法是同时运行多个JobManager实例,其中只有一个处于生效(active)状态,其余处于备用(standby)状态;一旦当前生效的JobManager宕机,系统会从备用实例中选举出一个新的接管服务,整个过程依赖ZooKeeper提供的分布式协调能力来完成选主和状态同步。这是主备容错的通用范式——先用多副本消除单点,再用一个外部协调服务解决”多个副本谁说了算”这个一致性问题,并不是Flink独有,很多需要Master角色的分布式系统(如HDFS NameNode、Kafka Controller)都采用类似结构。需要注意的是不同部署模式下高可用的实现程度不同:Yarn Session模式下并不真正跑多个JobManager,而是靠失败后自动重启来达成有限程度的高可用。
参考来源
《Flink入门与实战》第9章《Flink部署与应用》