业务场景:
storm+kafka 作为经典组合,storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的,而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情况下显然用批量处理是不合适的,如果使用storm做实时计算的话可能因为数据拥堵而导致服务器挂掉,应对这种情况,使用kafka作为消息队列是非常合适的选择,kafka可以将不均匀的数据转换成均匀的消息流,从而和storm比较完善的结合,这样才可以实现稳定的流式计算。
废话不多说,直接low一个小demo:
Topology:
public class KafkaTopology {
private String topic ;
private String zkRoot;
private String spoutId;
public KafkaTopology() {}
public KafkaTopology(String topic,String zkRoot, String spoutId){
this.topic = topic;
this.zkRoot = zkRoot;
this.spoutId = spoutId;
}
public void run(){
//指定zk的地址
BrokerHosts brokerHosts = new ZkHosts("storm1:2181,storm2:2181,storm3:2181");
//配置spout
SpoutConfig spoutConfig = new SpoutConfig(brokerHosts, topic, zkRoot, spoutI