Apache Storm 官方文档 —— 源码组织结构
Strom 的代码有三个层次:
第一,Storm 在一开始就是按照兼容多语言的目的来设计的。Nimbus 是一个 Thrift 服务,拓扑也被定义为 Thrift 架构。Thrift 的使用使得 Storm 可以用于任何一种语言。
第二,所有的 Storm 接口都设计为 Java 接口。所以,尽管 Storm 核心代码中有大量的 Clojure 实现,所有的访问都必须经过 Java API。这就意味着 Storm 的每个特性都可以通过 Java 来实现。
第三,Storm 的实现中大量使用了 Clojure。可以说,Storm 的代码结构大概是一半的 Java 代码加上一半的 Clojure 代码。但是由于 Clojure 更具有表现力,所以实际上 Storm 的核心逻辑大多是采用 Clojure 来实现的。
ThreadLocal使用
引言
ThreadLocal的官方API解释为:
“该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。”
大概的意思有两点:
- ThreadLocal提供了一种访问某个变量的特殊方式:访问到的变量属于当前线程,即保证每个线程的变量不一样,而同一个线程在任何地方拿到的变量都是一致的,这就是所谓的线程隔离。
- 如果要使用ThreadLocal,通常定义为private static类型,在我看来最好是定义为private static final类型。
阅读全文
图解 & 深入浅出 JavaWeb:Servlet 再说几句
上一篇的《 Servlet必会必知 》受到大家一致好评 — (感谢 读者 及 OSC 推荐 每日一’搏’),后来觉得还有些东西没点到,这边补充补充。 阅读全文
Apache Storm 官方文档 —— 定义 Storm 的非 JVM 语言 DSL
实现非 JVM 语言 DSL(Domain Specific Language,领域专用语言)应该从 storm-core/src/storm.thrift 文件开始。由于 Storm 拓扑是 Thrift 结构,而且 Nimbus 是一个 Thrift 后台进程,你可以以任意语言创建并提交拓扑。
Apache Storm 官方文档 —— Hooks
Storm 提供了一种 hooks 机制,可以实现在 Storm 的各种事件流中运行自定义代码的功能。可以通过继承 BaseTaskHook类来创建 hook,还可以根据需要在继承的子类中覆写适当的方法来跟踪相关事件。