storm 源码笔记】的更多相关文章

(reify DistributedRPC$Iface (^String execute  [this ^String function ^String args]  (log-debug "Received DRPC request for " function " " args " at " (System/currentTimeMillis))  (let [id (str (swap! ctr (fn [v] (mod (inc v) 1…
EvenScheduler同DefaultScheduler一样,同样实现了IScheduler接口, 由下面代码可以看出: (ns backtype.storm.scheduler.EvenScheduler (:use [backtype.storm util log config]) (:require [clojure.set :as set]) (:import [backtype.storm.scheduler IScheduler Topologies Cluster Topolo…
Nimbus里定义了一些共享数据结构,比如nimbus-data. nimbus-data结构里定义了很多公用的数据,请看下面代码: (defn nimbus-data [conf inimbus] (let [forced-scheduler (.getForcedScheduler inimbus)] {:conf conf :inimbus inimbus :submitted-count (atom 0) :storm-cluster-state (cluster/mk-storm-cl…
Scheduler作为Storm的调度器,负责为Topology分配可用资源. Storm提供了IScheduler接口,用户可以通过实现该接口来自定义Scheduler. 其定义如下: public interface IScheduler { //接收当前Nimbus的Storm配置作为参数,进行一些初始化工作 void prepare(Map conf); /** * 真正进行任务分配的方法,在Nimbus进行任务分配的时候会调用该方法. * 参数为topologies.cluster:前…
mk-assignments主要功能就是产生Executor与节点+端口的对应关系,将Executor分配到某个节点的某个端口上,以及进行相应的调度处理.代码注释如下: ;;参数nimbus为nimbus-data对象,:scratch-topology-id为需要重新调度的Topology的id (defnk mk-assignments [nimbus :scratch-topology-id nil] (let [conf (:conf nimbus);;分别从nimbus-data中获取…
[原]storm源码之storm代码结构[译]  说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Sto…
本文导读: storm nimbus 单节点问题概述 storm与解决nimbus单点相关的概念 nimbus目前无法做到多节点的原因 解决nimbus单点问题的关键 业界对nimbus单点问题的努力 nimbus单点问题的解决思路 NimbusCloudStorage的实现 总结: 一.storm nimbus 单节点问题概述 1.storm集群在生产环境部署之后,通常会是如下的结构:                                         从图中可以看出zookeep…
本文导读: 1 Worker.Executor.task详解 2 配置拓扑的并发度 3 拓扑示例 4 动态配置拓扑并发度 Worker.Executor.Task详解: Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:1. Worker Process(工作进程)——Spout/Bolt中运行具体处理逻辑的进程2. Executor(线程.执行器)——物理线程3. Task(任务)——具体的处理逻辑对象 下图简要描述了这3者之间的关系: sto…
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Storm的所有接口都是Java语言来定义的.因此,尽管…
最近在研究Zepto的源码,这是第一篇分析,欢迎大家继续关注,第一次写源码笔记,希望大家多指点指点,第一篇文章由于首次分析原因不会有太多干货,希望后面的文章能成为各位大大心目中的干货. Zepto是一个匿名函数的运行结果,而zepto是该匿名函数中定义的一个对象,注意区分 zepto.matches match = ~zepto.qsa(parent, selector).indexOf(element) zepto.qsa:zepto优化过的选择器 zepto.qsa(parent, sele…