AppManager 架构

    1. 新增AM模块将Entrance之前做的管理Engine的功能移动到AM模块
    2. AM需要支持操作Engine,包括:新增、复用、回收、预热、切换等功能
    3. AM需要管理EM服务,需要完成EM的注册并将资源注册转发给RM进行EM的资源注册
    4. AM需要对接Label模块,包括EM/Engine的增删需要通知标签管理器进行标签更新
    5. 需要对外提供基础接口:包括引擎和引擎管理器的增删改,提供metric查询等

    如上图所示:AM在LinkisMaster中属于AppManager模块,作为一个Service提供服务

    从上面的引擎生命周期流程图可知,Entrance已经不在做Engine的管理工作,engine的启动和管理都由AM控制。

    AppManager主要包含了引擎服务和EM服务: 引擎服务包含了所有和引擎EngineConn相关的操作,如引擎创建、引擎复用、引擎切换、引擎回收、引擎停止、引擎销毁等。 EM服务负责所有EngineConnManager的信息管理,可以在线上对ECM进行服务管理,包括标签修改,暂停ECM服务,获取ECM实例信息,获取ECM运行的引擎信息,kill掉ECM操作,还可以根据EM Node的信息查询所有的EngineNode,也支持按用户查找,保存了EM Node的负载信息、节点健康信息、资源使用信息等。 新的EngineConnManager和EngineConn都支持标签管理,引擎的类型也增加了离线、流式、交互式支持。

    引擎复用:为了减少引擎启动所耗费的时间和资源,引擎使用必须优先考虑复用原则,复用一般是指复用用户已经创建好的引擎,引擎复用模块负责提供可复用引擎集合,选举并锁定引擎后开始使用,或者返回没有可以复用的引擎。 ReuseEngienRequest->RPC/Rest -> MasterEventHandler ->ReuseEngineService -> ->abelContext->EngineNodeManager->EngineSelector->EngineLocker->Engine->EngineNodeManager->EngineReuser->EngineService=>ServerInstance

    引擎切换:主要是指对已有引擎进行标签切换,例如创建引擎的时候是由Creator1创建的,现在可以通过引擎切换改成Creator2。这个时候就可以允许当前引擎接收标签为Creator2的任务了。 SwitchEngienRequest->RPC/Rest -> MasterEventHandler ->SwitchEngineService ->LabelContext/EnginePlugin/RMResourcevice->EngineNodeManager->EngineLocker->Engine->EngineNodeManager->EngineReuser->EngineService=>ServerInstance