下面是关于Java技术分享给大家。
在Storm 出现之前,进行实时处理是非常痛苦的事情,我们主要的时间都花在关注往哪里发消息,从哪里接收消息,消息如何序列化,真正的业务逻辑只占了源代码的一小部分。 一个应用程序的逻辑运行在很多 worker 上,但这些 worker 需要各自单独部署,还需要部署消息队列。最大问题是系统很脆弱,而且不是容错的:需要自己保证消息队列和 worker 进程工作正常。
Storm 完整地解决了这些问题。它是为分布式场景而生的,抽象了消息传递,会自动地在集群机器上并发地处理流式计算,让你专注于实时处理的业务逻辑。
Storm 有如下特点:
1) 编程简单:开发人员只需要关注应用逻辑,而且跟 Hadoop 类似,Storm 提供的 编程原语也很简单
2) 高性能,低延迟:可以应用于广告搜索引擎这种要求对广告主的操作进行实时响应的场景。
3) 分布式:可以轻松应对数据量大,单机搞不定的场景
4) 可扩展:随着业务发展,数据量和计算量越来越大,系统可水平扩展
5) 容错:单个节点挂了不影响应用
6) 消息不丢失:保证消息处理
不过Storm 不是一个完整的解决方案。使用 Storm 时你需要关注以下几点:
1)如果使用的是自己的消息队列,需要加入消息队列做数据的来源和产出的代码
2)需要考虑如何做故障处理:如何记录消息处理的进度,应对 Storm 重启,挂掉的场景
3)需要考虑如何做消息的回退:如果某些消息处理一直失败怎么办?
领取专属 10元无门槛券
私享最新 技术干货