组件间通讯

在Elves-Center中,各组件的通讯依托于RABBITMQ实现以此达到功能型组件可以实现集群化部署,降低各组件之间的耦合度。Elves中RabbitMQ的使用与OpenStack类似,实现OpenStack中rpc.call与rpc.cast两种类型

消息类型

RPC-CALL

RPC-CAST

内容规则

消息内容均以JSON化显示,保留

  • mqkey : 发送组件.接收组件.方法
  • mqtype : 发送类型(call/cast),若为call类型,需要加上其ID例如 call.SYDHAGSY6SYAHSGA
  • mqbody : 消息参数

rpc-call实例:

RoutingKey : cron.sheduler #向Agent发送异步非处理型指令,routingkey : cron.sheduler.callagent

{
    "mqkey"  : "cron.sheduler.callagent",
    "mqtype" : "cast"
    "mqbody" : {
        "app"  : "webops",
        "func" : "createSiteFun",
        "mode" : "p",
        "param": "{}"
    }
}

交互场景示例

基础操作

  • 权限认证(openapi->supervisor->openapi): 简称oao,用于所有以OpenApi为基础的操作,第一步进行权限的认证
  • 在线监测(sheduler->heartbeat->sheduler):简称shs,用于所有Sheduler为基础的操作,作为第一步在线检测

业务

  • 计划任务管理操作(oao->cron->openapi): 用于添加,删除计划任务操作
  • 发起计划任务(cron->heartbeat->cron->sheduler):用于定时任务的发起
  • 发起异步任务(sheduler->heartbeat -> *agent),由Sheduler发起计划任务
  • 发起同步任务(oao->sheduler->heartbeat->*agent->sheduler->openapi),由OpenApi发起同步任务

results matching ""

    No results matching ""