Apache Flink 进阶(一):Runtime 核心机制剖析( 八 )
图4. Flink 中资源管理功能各模块交互关系 。
当 Task 结束之后 , 无论是正常结束还是异常结束 , 都会通知 JobManager 相应的结束状态 , 然后在 TaskManager 端将 Slot 标记为已占用但未执行任务的状态 。 JobManager 会首先将相应的 Slot 缓存到 SlotPool 中 , 但不会立即释放 。 这种方式避免了如果将 Slot 直接还给 ResourceManager , 在任务异常结束之后需要重启时 , 需要立刻重新申请 Slot 的问题 。 通过延时释放 , Failover 的 Task 可以尽快调度回原来的 TaskManager , 从而加快 Failover 的速度 。 当 SlotPool 中缓存的 Slot 超过指定的时间仍未使用时 , SlotPool 就会发起释放该 Slot 的过程 。 与申请 Slot 的过程对应 , SlotPool 会首先通知 TaskManager 来释放该 Slot , 然后 TaskExecutor 通知 ResourceManager 该 Slot 已经被释放 , 从而最终完成释放的逻辑 。
除了正常的通信逻辑外 , 在 ResourceManager 和 TaskExecutor 之间还存在定时的心跳消息来同步 Slot 的状态 。 在分布式系统中 , 消息的丢失、错乱不可避免 , 这些问题会在分布式系统的组件中引入不一致状态 , 如果没有定时消息 , 那么组件无法从这些不一致状态中恢复 。 此外 , 当组件之间长时间未收到对方的心跳时 , 就会认为对应的组件已经失效 , 并进入到 Failover 的流程 。
推荐阅读
- 第五人格|梦幻西游:担心的事发生了,大佬进阶110选错召唤兽,白花了2000块
- 盲僧|英雄联盟手游:打野玩家的进阶选择,盲僧,高机动性带来的直接收益
- 我的世界|剑网3药宗版本pve装备进阶路线,从大侠到新赛季毕业
- 盲僧|LOL手游盲僧是英雄代表?灵药再推进阶教学,双区王者的经验
- 进阶|永劫无间:胡桃只是奶妈?法神开发胡桃进阶打法,化身团战关键手
- 德鲁伊|魔兽怀旧服:TBC德鲁伊进阶宏,熊德无缝吃药,奶德一键迅捷治疗
- 进阶|梦幻西游:两次就进阶110灵性成功!难道中途的转折起了关键作用
- 进阶|梦幻西游手游:萌新的福利?新NPC开启测试,进阶不再问老玩家!
- 明日方舟|三国志战略版:冲桃园扫麒麟,虎臣弓进阶虎臣爆头骑指南
- 和平精英|和平精英核电站打法进阶教学,KS小雪吖提供详细攻略,吃鸡稳了