一、概述:
根据 Ambari Server 架构文章中的介绍,由于 Ambari Server 和 Ambari Agent 之间是通过 HTTP 短连接进行通信,所以 Server 无法把需要执行的 Command,直接推送给 Agent,而是需要把命令存储在 ActionQueue 中,
然后 Agent 通过定期发送 Heartbeat 请求,把 Command 拉过去执行,并通过下次的 Heartbeat 请求,返回执行结果。下面简单分析一下 Command 的处理过程:
二、Agent Command 类型
- REGISTRATION_COMMAND:注册指令
- STATUS_COMMAND:汇报状态
- EXECUTION_COMMAND:执行任务
- CANCEL_COMMAND:取消任务
- ALERT_DEFINITION_COMMAND:更新 Alert 定义
- ALERT_EXECUTION_COMMAND:立即执行一个 Alert
三、Request 处理逻辑
时机:用户触发了一个操作服务/组件的操作
1、计算依赖,生成 Command,并保存到数据库
2、定期从数据库加载 Command,并添加到 ActionQueue
3、心跳逻辑:
· 把 ActionQueue 中的所有 Command 下发给 Agent
· 根据 Agent 的汇报,处理 Request 的结果
时间: 2024-10-12 23:12:05