一个Topology包含一或多个spout bolt,spout负责在数据源获得数据并发送给bolt,每个bolt负责做完处理后发给下一个bolt。通常topology的创建是由TopologyBuilder来创建的,该组件会记录包含哪些spout bolt,并做相应验证:各组件是否有id冲突,校验方法如下:
Topology提交前会先判断集群中是否存在同名作业,如果存在在提交失败,如果没有则会增加集群提交次数SubmittedCount,每次提交成功,该变量都会加1,然后会为该作业分配一个id,生成规则如下:
因此我们从作业id中就可以判断集群作业成功提交次数、提交时间、还有作业名称了,如果我们没有指定acker数量,对topology本身的校验比较细致:
1、组件id是否合法2、是否存在同名id
3、woker数量是否合法,小于0或null
4、ack数量校验同worker一样