spring xd 源码解析-job 操作过程

1 定义

Module:具有特定功能的java模块。以jar的形式提交注册到xd。

Definition:为Module设定参数。

Deployment:Definition部署到Container后形成的对象,可以执行。

2 deploy接口

curl “http://dl-rc-optd-ambari-slave-v-test-3.host.dataengine.com:47868/streams/definitions?definition=trigger++–cron^%^3D^%^270+0+0+++^%^3F^%^27+^%^3E+queue:job:wait1hourjob_COMPOSED_definition^&deploy=true^&name=wait1hourjob_COMPOSED_job”

-X POST

-H “Origin: http://dl-rc-optd-ambari-slave-v-test-3.host.dataengine.com:47868

-H “Accept-Encoding: gzip, deflate”

-H “Accept-Language: zh-CN,zh;q=0.8”

-H “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”

-H “Accept: application/json, text/plain, /

-H “Referer: http://dl-rc-optd-ambari-slave-v-test-3.host.dataengine.com:47868/admin-ui/

-H “Proxy-Connection: keep-alive”

-H “Content-Length: 0” –compressed

通过调用streams/definitions ,将任务部署到container中。不管是job,还是stream,admin-ui都会掉这个相同的api。其实也有jobs/definitions,而且两个api的实现是一样的。

server端的resource为StreamsController,但是在基类XDController中实现。XDController也是JobsController的实现,所以两个api的实现其实是一个。

参数

definition:包含队列,definition标识,以及触发表达式。

deploy:true ,表示创建并部署,如果是false,则只创建。

name:job的名称

3 deploy过程

XD Server接受并解析请求。将信息发送到zookeeper。

XD DeploymentMessageConsumer 监听queues/deployments,处理请求,并将处理结果发送到zookeeper的路径responses/requestid。Module的deploy操作,则由JobDeployer完成。
这里写图片描述
deploy sequence:
这里写图片描述
deploy 处理组件 初始化过程图。

从逻辑中可以看出,只有集群的leader才可以处理deploy请求。当节点通过leaderSelector选举为leader,节点初始化zookeeper各个路径的监听。

deploy的路径queues/deployments 在DeploymentQueue中监听,并通过DeploymentMessageConsumer来处理路径的变化信息。
这里写图片描述

4 container初始化

这里写图片描述

5 job delete

下线job过程。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值