目录
运维,部署简单
高度容错
可靠性好,无数据丢失
易于扩展
便于开发和调试
能运行超大任务
资源利用率高,架构非常合理
之前思考过一个问题,
storm程序
和
自己编写多个程序放在不同机器上通过负载均衡软件实现分布式
对比
运维,部署简单
storm:编写好storm程序后提交任务,自动分发到各个节点
自己编写的程序:每个把jar发上传到每个节点,且依赖前端负载均衡软件
高度容错
storm:线程挂了可以自动重启
自己编写的程序:自己维护线程健康状态
可靠性好,无数据丢失
storm: 经典的ack机制,保证消息不丢失
自己编写的程序:可能需要其他逻辑去保证
易于扩展
storm:添加机器,部署storm即可,对跑在storm上的应用程序无影响
自己编写的程序:对每个程序都有影响
便于开发和调试
storm: 支持本地模式
自己编写的程序:不知道怎么处理
能运行超大任务
storm: 以整个集群为单位
自己编写的程序:以机器为单位,当负载均衡软件将任务分发过来后,就不会与其他机器交互了
资源利用率高,架构非常合理
storm: 对程序步骤抽象成bolt进行调度。
调度非常灵活,消除瓶颈(某些步骤运行时间过长,影响整体性能),保证最大并发
如下图,有三个步骤,第一个步骤消耗1个时间单位,第2个步骤消耗3个时间单位,第三个步骤消耗1个时间单位
我们可以为第一个步骤分配1个线程,第二个步骤分配3个线程,第三个线程分配1个线程。
只要分配比例,步骤1:步骤2:步骤3 = 1:3:1 即可最大并行化
还可以监控每个步骤的实际运行状况,动态调整资源分配
自己编写的程序:要实现这些功能成本太高