📜  Storm-分布式消息系统(1)

📅  最后修改于: 2023-12-03 14:47:43.200000             🧑  作者: Mango

Storm-分布式消息系统

什么是Storm?

Storm是一个分布式消息处理系统。它允许您在大规模分布式环境中处理高速流数据。Storm提供了一个容错、可伸缩、有保障的机制来处理实时数据流。

Storm使得分布式实时数据处理易于编写和部署。它提供了丰富的原语、灵活的编程模型和易于使用的API,使得程序员可以专注于业务逻辑的开发。

Storm通过将数据并行处理到各种节点上来提高可处理数据的速度。它可以处理大量数据,并具有低延迟。

Storm还可以与Hadoop生态系统无缝协作,Hadoop中的数据可以直接用于Storm中进行处理。

Storm的优势
分布式的可扩展性

Storm可以无限地缩放,因为它使用分布式架构和横向扩展的方式。Storm处理的任何数据量的任何部分都可以水平扩展。

延迟低

Storm非常适合实时数据处理,因为它有低延迟和高吞吐量的特点。这是因为数据的并行处理,始终能够及时地进行处理。

可靠性高

Storm的四个阶段拓扑结构确保了在数据流过程中不会产生任何数据丢失的可能性,因此我们可以信任Storm处理系统。它提供了一个可靠的消息处理机制,确保了每个元组在拓扑结构中完全到达。

容错

Storm提供了容错机制,在拓扑结构中的任何节点出现故障时,可以使用同样的方式处理故障并进行处理。这会极大地增加应用程序的容错性和可靠性,从而避免了任何可能的故障。

灵活的数据流处理

Storm具有灵活的数据处理能力,在数据的流程中,您可以将数据转换为任何对象、运算符和集群中的任何操作符。

Storm的组件
Nimbus

Nimbus是Storm的主节点,它负责资源分配、任务分发和监视。

Supervisor

Supervisor是Storm的工作节点,它下载Jar包并执行拓扑结构文件,处理任务并与Nimbus通信。

Topology

拓扑结构是Storm中最重要的组成部分。它基于bolt和spout节点构建。

Spout

Spout是数据源节点,它是由Spout接收数据,并将数据发送给拓扑结构中的其他任务。

Bolt

Bolt接收Spout发送的数据,对数据进行处理和转换,并将数据转发给其他Bolt或者Spout节点。

如何在Storm中编写代码?

Storm使用Java编写,通过Maven进行管理,可以使用Maven创建一个Storm拓扑结构项目,这将为您自动创建一个可扩展的框架。

下面是示例代码:

public class ExclamationTopology {
  public static void main(String[]args) throws Exception {
    TopologyBuilder builder = new TopologyBuilder();

    builder.setSpout("words", new TestWordSpout(), 10);
    builder.setBolt("exclaim1", new ExclamationBolt(), 3)
        .shuffleGrouping("words");
    builder.setBolt("exclaim2", new ExclamationBolt(), 2)
        .shuffleGrouping("exclaim1");

    Config conf = new Config();
    conf.setDebug(true);

    if(args!=null&& args.length>0){
      conf.setNumWorkers(3);

      StormSubmitter.submitTopology(args[0], conf,
        builder.createTopology());
    }else{
      conf.setMaxTaskParallelism(3);

      LocalCluster cluster = new LocalCluster();
      cluster.submitTopology("test", conf,
        builder.createTopology());
      Thread.sleep(10000);

      cluster.shutdown();
    }
  }
}
结论

Storm被广泛应用于社交媒体、广告技术、金融服务、电信、运输和物流等行业。因为它的优点,我们可以在实时数据处理的方面使用它,以满足各种要求。许多公司都在使用Storm,这使得Storm成为了数据处理中的重要工具。