|
|
Task与EA映射表
|
|
|
------
|
|
|
|
|
|
在controller中,维护一张Task与分析引擎的映射表,表示一个正在运行的任务与运行该任务的EA。其关系为<taskId, engineId>。该表需在controller中持久化,建议在DB中以一张新表的方式进行存储。
|
|
|
|
|
|
Controller重启(对任务的操作)
|
|
|
----
|
|
|
|
|
|
**Controller的操作**
|
|
|
1. 对task表中状态为NEW的任务,task管理模块继续将其分配到engine中运行;
|
|
|
1. controller的engine管理模块,收到分析引擎的第一个update-engine-info的调用时,对映射表中隶属于该engine的每个task:
|
|
|
- 调用task模块的restart接口,发送启动请求给分析引擎
|
|
|
|
|
|
**分析引擎的操作**
|
|
|
1. 正常操作(在增加下面描述的机制的基础上)
|
|
|
|
|
|
分析引擎重启(对任务的操作)
|
|
|
----
|
|
|
|
|
|
**Controller的操作**
|
|
|
1. controller的engine管理模块,收到分析引擎的第一个update-engine-info的调用时,对映射表中隶属于该engine的每个task:
|
|
|
- 调用task模块的restart接口,发送启动请求给分析引擎
|
|
|
|
|
|
**分析引擎的操作**
|
|
|
1. 正常操作(在增加下面描述的机制的基础上)
|
|
|
|
|
|
Controller新增接口和处理机制
|
|
|
----
|
|
|
|
|
|
- 【机制】Controller的engine管理模块,(1)收到stop-engine的调用时,或(2)发现分析引擎失联时(连续3次没有收到心跳update-engine-info),对映射表中所有隶属于该engine的每个task:
|
|
|
- 调用task模块的stop接口,向原分析引擎发送停止任务运行的请求
|
|
|
- 重新分配engine,并调用task模块的restart接口,
|
|
|
- 从映射表中将该项删除
|
|
|
- 【接口】Controller提供查询特定分析引擎上所有运行任务的接口
|
|
|
- 【接口】Controller对特定任务进行restart的接口
|
|
|
|
|
|
分析引擎新增的处理机制
|
|
|
----
|
|
|
- 【机制】分析引擎对于接收到的新建任务的请求,如果对应taskId的任务正在运行,忽略该请求;否则,正常启动该任务
|
|
|
- 【机制】分析引擎对于接收到的停止任务的请求,如果对应taskId的任务没有在运行,忽略该请求;否则,正常停止该任务
|
|
|
- 【机制】分析引擎发现余Controller失联后(连续3次无法正常发送心跳update-engine-info),将所有运行的任务停止
|
|
|
|