1. Storm是Twitter开源的一个分布式的实时计算系统,用于数据的实时分析,持续计算,分布式RPC等等
官网地址: http://storm.apache.org/index.html
2.实时计算用于解决哪些问题
a. 最显而易见的就是实时推荐系统,比如我们在淘宝等电商购物网站去买东西我们会在网页旁边或者底端看到与自己所需要商品相关的系列产品。这就是使用类似 Storm实时计算去做的,我们非常熟悉的 Hadoop只是做离线的数据分析,无法做到实时分析计算
b. 比如车流量实时的计算,每天我们城市交通情况非常的拥挤,我们可以利用Storm为我们实时计算每一个路段的拥挤度等相关路况信息
c. 再比如我们非常熟悉的股票,那么股票系统也是一种实时计算的机制,利用Storm完全可以实现
3.一个实时计算系统系统要求
1) 编程简单:开发人员只需要关注应用逻辑,而且跟Hadoop类似,Storm提供的编程原语也很简单。
2)高性能:可以使用几台普通的服务器建立环境,结余成本。
3)低延迟: 延迟是一定要低的。可以应用于广告搜索引擎这种要求对广告主的操作进行实时响应的场景。
4)分布式:Storm非常适合于分布式场景,大数据的实时计算;你的数据和计算单机就能搞定,那么不用考虑这些复杂的问题了。我们所说的是单机搞不定的情况。
5)可扩展:伴随着业务的发展,我们的数据量、计算量可能会越来越大,所以希望这个系统是可扩展的。
6)容错性:这是分布式系统中通用问题,一个节点挂了不能影响我的应用, Storm可以轻松做到在节点挂了的时候实现任务转移,并且在节点重启的时候(也就是重新投入生产环境时,自动平衡任务)
7)可靠性:可靠的消息处理。 Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
8)快速性:系统的设计保证了消息能得到快速的处理,使用 ZeroMQ (0.9.0 以前)、Netty RPC (0.9.0之后)作为其底层消息队列。
9)本地模式: Storm有一个“本地模式”,可以在处理过程中完全模拟 Storm集群。这让你可以快速进行开发和单元测试