trident代码的阅读有两个重要的类TridentTopology、Stream,这两个类可以作为我们学习storm-trident源代码的入口。
trident的拓扑的构造分两部分:
一:构造trident逻辑的拓扑,这部分就是我们调用TridentTopology.newStream(......).each().groupBy().....等的过程中实现。这个过程完成一个逻辑拓扑的构造。保存到一个DefaultDirectedGraph<Node, IndexedEdge> _graph对象中;
图中包含节点(Node)和有向边(edge).其中Node有三种类型PartitionNode,ProcessorNode,SpoutNode
二:根据trident逻辑拓扑构造成storm的拓扑,这部分在TridentTopology的build()方法中完成
trident拓扑构造:
一:TridentTopology.newStream(......).这样的操作其实是在DefaultDirectedGraph中构造一个类型为SpoutNode类型的节点
二:trident的大部分操作计算操作节点被构造为ProcessorNode和PartitionNode,其中每个ProcessorNode对象封装一个TridentProcessor对象,TridentProcessor封装具体的计算逻辑。