Storm 1.0.0 正式发布

本贴最后更新于 2926 天前,其中的信息可能已经事过景迁

Apache storm 社区很高兴的宣布版本 1.0.0 稳定已经发布,可以从the downloads page下载。
这个版本是 Apache storm 演变的一个重要的里程碑,包括大量的新特性,可用性和性能方面的改进,其中一些如下。

性能提升

该版本主要亮点之一就是性能较之前的版本有一个巨大的性能提升,Apache Storm 1.0 的性能较之前的版本提升 16 倍,延迟降低了 60%。很显然,拓扑基于不同的使用案例和所依赖外部服务不同,性能差别很大,但大多数情况下,用户可以期待一个 3X 的性能提升比早期版本。

Pacemaker - Heartbeat Server

Pacemaker 是一个可选的 Storm 守护线程,用于处理来自 workers 的心跳。随着 Storm 的集群规模的增大,Zookeeper 会因为来自 workers 的大量心跳写入而成为瓶颈,在 Zookeeper 尝试保持一致性的同时,会产生大量的写磁盘操作和网络传输量。

因为心跳是一个短暂的性质,他们不需要持久化到磁盘或跨节点同步,存储在内存中即可。这正是 Pacemaker 的作用,Pacemaker 的功能与简单的基于内存的键/值对存储一样,目录式键和字节数组值。

分布式缓存 API

在过去,它是常见的,开发人员需要的将资源(如查找数据,机器学习模型等)打包成一个 topology 的 jar 文件。这种方法的问题是,更新数据需要重新打包和重新部署的拓扑结构。另一个问题是,有时数据可能非常大(千兆字节或更多),其负面影响拓扑的启动时间。

Storm 1.0 版本引入了分布式缓存 API,允许文件在拓扑结构之间共享(BLOBs)。在分布式缓存中,文件可以在命令行的任何时间更新,而不需要重新部署拓扑。分布式缓存 API 允许文件从几个 kb 大小的几个 GB,也支持压缩格式,如 ZIP,GZIP。

Storm 1.0 配备了两个实现分布式缓存 API:一个主管节点的本地文件系统的支持,和一个由 Apache Hadoop HDFS 支持。同时还支持实施细粒度的访问控制,通过 ACL。

HA Nimbus

使用过 Storm 用户知道 Storm Nimbus 服务存在单点故障问题(Nimbus 节点挂掉之后,不会影响正在运行的 topology),然而,Nimbus 节点挂掉之后,不能提交新的 topology 和重新分配任务。

Storm 1.0 解决了这个问题,通过在集群中运行多个 Nimbus 实例和在 Nimbus 节点挂掉之后按照 leader 选举机制选举新的 Nimbus 节点,Nimbus 节点可以在任何时间加入和离开集群。HA Nimbus 利用分布式缓存 API 复制来保证在 Nimbus 节点宕机时 topology 资源可用 。

原生的流式窗口 API

基于窗口型的计算在流式处理中被广泛使用,在流处理中,无限的数据量基于一些标准(比如时间)被划分成有限的数据集,一个计算被施加到一个组,有一个例子是计算出热门的话题。

窗口主要被用来做聚合,拼接,模式匹配等,窗口被视为 in-memory 表,可以被用于事件的添加和删除。

在过去的版本中,Storm 依靠开发者自己开发窗口逻辑,没有一个高层次抽象推荐给开发者使用。

Apache Storm 1.0 现在包括一个本地的窗口 API。窗口可以指定以下 2 个参数,
窗口长度:窗口的长度或持续时间
滑动间隔:窗口滑动的时间间隔

Storm 支持基于时间宽度或事件计数的滑动和滚动窗口。

状态管理--带有自动检查点的有状态 bolt

Storm 1.0 引入了一个新的带有自动检查点有状态的 bolt API,有状态的 bolt 很容易实现(只要继承 BaseStatefulBolt 类即可),可以和 topology 中的无状态 bolt 结合。Storm 自动的管理 bolt 的状态和恢复在事件中失败的状态。

Storm 1.0 自带状态实现,支持 redis,未来发布的版本中将会加入额外的支持状态存储。

自动反压机制

在之前的 Storm 版本中,唯一的限制往 topology 的输入是开启 ACKing 并设置 topology.max.spout.pending。对于一些用户来说,不需要 at-least-once 的处理保证,这样的要求就会造成一个显著的性能损失。

Storm 1.0 包括一个新的基于可配置的高/低水印表示为一个任务的缓冲区大小的百分比自动反压机制。如果高水位达到,Storm 1.0 会减慢拓扑的 spouts 和当低水位时,停止节流。

Storm 的反压机制是实现独立的 Spout API,所以现有的所有 Spouts 都被支持。

资源调度

基于 Storm 可插拔的拓扑调度 API,Storm 1.0 增加了一个新的调度器实现,将内存(堆和堆)和集群中的可用的 CPU 资源考虑在内。资源感知调度器(又名“RAS 调度器”)允许用户指定的内存和 CPU 为每个拓扑组件(Spouts/Bolts),和 Storm 将调度 workers 之间的 tasks 任务以最好地满足这些要求。

在未来,Storm 社区计划扩大 RAS 实现支持网络资源和架意识等。

动态日志级别

Storm 1.0 现在允许用户和管理员可以动态地改变一个运行拓扑的日志级别设置,从 Storm 用户界面以及命令行。用户还可以指定一个可选的超时时间,这些变化将被自动恢复。由此产生的日志文件也很容易通过 Storm 的 UI 和 logviewer 服务来查找。

Tuple 采样与调试

在调试一个拓扑结构的过程中,很多用户发现需要自己加入 Storm“调试”bolts 或 trident 功能,记录有关数据流经的拓扑信息,然后在生产部署时,只能删除或禁用它们。Storm 1.0 消除了种方式。

Storm 的 UI 现在包括一个功能,允许你在从 Storm 的 UI 上取样流经一个拓扑或个别部件的一定百分比的 tuples。采样的事件可以直接在 Strom 的用户界面查看,也可以保存到磁盘。

分布式日志搜索

Storm 的用户界面的另一个改进是添加一个分布式日志搜索。这个搜索功能允许用户搜索在特定拓扑的所有日志文件,包括归档日志(以 zip 结尾的)。搜索结果将包括来自所有 Supervisor 节点的匹配结果。

动态 Worker 分析

最后,但肯定不是最不重要的,在 Storm 1.0 的可用性改进是动态的 worker 分析。这个新功能允许用户直接从 Storm 用户界面请求数据,包括:
堆转储
JStack 输出
JProfile 记录

生成的文件,然后可供下载使用各种调试工具离线分析。现在还可以在 Storm 的用户界面重启 worker。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • V2Ray
    1 引用 • 15 回帖 • 2 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    9 引用 • 32 回帖 • 146 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 135 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 130 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    54 引用 • 85 回帖
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 429 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    130 引用 • 793 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 194 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖 • 1 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 7 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • 安全

    安全永远都不是一个小问题。

    191 引用 • 813 回帖 • 1 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 533 回帖 • 735 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 616 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 458 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 5 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 609 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1234 回帖 • 442 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 613 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 648 关注