一、下载源码
二、本地部署
这里,我们直接运行Topology可实现本地部署。
运行ScoringTopology的结果如下:
3597 [main] INFO com.lyz.storm.topology.ScoringTopology - SIMULATED LEAF NODE : [
---------
|O||X||O|
---------
|X||X||O|
---------
|O||X||X|
---------
] w/ state [GAME [OXOXXOOXX]: player(O)
history [ , X , X O , X O X, OX O X, XOX O X, XOX OO X, XOXXOO X,OXOXXOO X,]]
运行DrpcTopology的结果如下:
3922 [main] INFO com.lyz.storm.topology.DrpcTopology - Determing best move for O on:
---------
|X||O|| |
---------
| ||O|| |
---------
| || ||X|
---------
5419 [main] INFO com.lyz.storm.topology.DrpcTopology - RECEIVED RESPONSE [[[
---------
|X||O|| |
---------
| ||O|| |
---------
| ||O||X|
---------
[10000]]]]运行RecursiveTopology的结果如下:
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOOO XO]: player(O)
history [ , O , XO , XO O, XXO O, XXOO O, XXOO XO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOOOX O]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXO OX O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOOO XO]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXO O XO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXOX O O]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXOX O O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOX OOO]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXOX O O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXO XO O]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXO XO O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXO XOOO]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXO XO O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXO OXO]: player(O)
history [ , O , XO , XO O, XXO O, XXO O O, XXO OXO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOX OOO]: player(O)
history [ , O , XO , XO O, XXO O, XXO OO, XXOX OO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXO XOOO]: player(O)
history [ , O , XO , XO O, XXO O, XXO OO, XXO X OO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXOX O O]: player(O)
history [ , O , XO , XO O, XOX O,O XOX O,OXXOX O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [O XOXXO O]: player(O)
history [ , O , XO , XO O, XOX O,O XOX O,O XOXX O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [O XOX OXO]: player(O)
history [ , O , XO , XO O, XOX O,O XOX O,O XOX XO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [X XOX OOO]: player(O)
history [ , O , XO , XO O, XOX O, XOX O O,X XOX O O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXOX O O]: player(O)
history [ , O , XO , XO O, XOX O, XOX O O, XXOX O O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOX OOO]: player(O)
history [ , O , XO , XO O, XOX O, XOX O O, XXOX O O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [O XOXXO O]: player(O)
history [ , O , XO , XO O, XOX O, XOX O O, XOXXO O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XOXXOOO]: player(O)
history [ , O , XO , XO O, XOX O, XOX O O, XOXXO O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [O XOX OXO]: player(O)
history [ , O , XO , XO O, XOX O, XOX O O, XOX OXO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [X XOX OOO]: player(O)
history [ , O , XO , XO O, XOX O, XOX OO,X XOX OO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XXOX OOO]: player(O)
history [ , O , XO , XO O, XOX O, XOX OO, XXOX OO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [ XOXXOOO]: player(O)
history [ , O , XO , XO O, XOX O, XOX OO, XOXX OO,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXOOX O]: player(O)
history [ , O , XO , XO O, XO X O,O XO X O,OXXO X O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [OXXO XO O]: player(O)
history [ , O , XO , XO O, XO X O,O XO X O,OXXO X O,]]
12500 [Thread-12-b-0] INFO com.lyz.storm.operators.isEndGame - END GAME [GAME [O XOXXO O]: player(O)
history [ , O , XO , XO O, XO X O,O XO X O,O XOXX O,]]
三、远程部署
为了在远程调用topology,需要启动一个SRPC服务器,启动这个服务和启动Storm中其他服务是一样的方法,用drpc作为参数执行storm脚本:
bin/storm drpcStorm集群会连接到DRPC服务器上接收命令。我们需要通过配置告诉Storm集群DRPC服务器的位置。在storm.yaml文件中如下配置:
drpc.servers:
- 'drpchost1 '
- 'drpchost2 '当配置了服务的服务器启动后,topology的提交方式和其他topology一样,DRPC客户端可以被其他任何需要大规模分布式异步处理的Java应用程序来使用。为了从本地客户端切换到远程,唯一需要改变的是DRPC客户端的命令。需要使用下面的代码来替换DrpcTopology类中的DRPC客户端:
//远程部署。host和port与storm.yaml文件中的配置一致
DRPCClient client = new DRPCClient("drpchost1", 3772);参数指定了DRPC服务的服务器和端口,需要和YAML文件中的配置一致。