首页 > 代码库 > 53.storm简介

53.storm简介

一、简介

1.storm是twitter开源的一个分布式的实时计算系统,用于数据实时分析,持续计算,分布式RPC等等。

  • 官网地址:http://storm-project.net
  • 源码地址:https://github.com/nathanmarz/storm

2.实时计算要解决一些什么问题?

  • 最显而易见的就是实时推荐系统,比如我们在淘宝等电商购物网站买东西,我们会在网页旁边或者底端看到与自己需要商品相关的系列产品。这就是使用类似storm实时计算算法去做的,我们非常熟悉的hadoop只是做离线数据分析,无法做到实时分析计算。
  • 比如车流量实时计算,可以利用storm为我们实时计算每一个路段的拥挤度等相关路况信息。
  • 再比如过票,也是一种实时计算的机制,利用storm完全可以实现。

3.实现一个实时计算系统

  • 低延迟:实时计算,延迟肯定要低。
  • 高性能:可以使用几台普通的服务器建立环境,结余成本。
  • 分布式:storm非常适合于分布式场景,大数据的实时计算;你的数据和计算单机就能搞定的话,那么不用考虑这些复杂问题了。我们所说的是单机搞不定的情况。
  • 可扩展:伴随着业务的发展,我们的数据量、计算量可能会越来越大,所以希望这个系统可以扩展。
  • 容错:这是分布式系统中通用的问题,一个节点挂了不能影响应用,storm可以轻松做到在节点挂了的时候实现任务转移,并且在节点重启的时候(也就是重新投入生产环境时,自动平衡任务)
  • 可靠性:可靠的消息处理。storm保证每一个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
  • 快速:系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消费队列。
  • 本地模式:Storm有一个“本地模式”,可以在处理过程中完全模拟storm集群。这样可以快速进行开发和单元测试。

二、storm体系结构

  • 首先我们那hadoop和storm进行一个简单的对比
    技术分享
  • Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等待。Storm支持水平扩展,具有高容错性,保证每个消息都得到处理,而且处理速度很快(在一个小集群中,每个节点每秒可以处理数以百万计的消息)。Storm的部署和运维都很便捷,而且更为重要的是,可以使用任意编程语言来开发应用。
  • storm框架结构图
    技术分享



 

53.storm简介