1人、Stormソースコードを読んでみよう(No.2
というわけで始まってしまった(?)この記録。
まずは、ディレクトリの中身概要を確認してみます。
確認の結果下記のようになっていました。
Storm ├─bin 起動/環境構築スクリプト ├─conf Stormの設定ファイル ├─log4j Stormのログ出力設定ファイル ├─src │ ├─clj │ │ ├─backtype StormのコアClojure開発部 │ │ └─zilch ZeroMQ/VirtualPort用のClojureコード │ ├─dev │ │ └─resources テスト用に使用されるスクリプト(?) │ ├─jvm StormのコアJava開発部 │ ├─multilang │ │ ├─fy ??? Stormのトポロジ構築を行うスクリプト(言語何でしょう・・) │ │ ├─py PythonでStormのトポロジ構築を行うスクリプト │ │ └─rb RubyでStormのトポロジ構築を行うスクリプト │ ├─py │ │ └─storm Thriftを用いたリモート起動用のPythonスクリプト │ └─ui │ └─public │ ├─css Storm UI用のCSS │ └─js Storm UI用のJavaScript └─test ├─clj │ ├─backtype Storm本体用のClojureテストコード │ └─zilch ZeroMQ用のClojureテストコード └─multilang └─fy ???テストコードではある
・・・すみません、fyという拡張子を持つソースコードが
何のソースかわかりませんでした(汗
尚、JavaとClojureのコード量を比較してみると下記のようになっています。
言語 | コード量(実行Step) | ディレクトリ |
Java | 29940 | src/jvm |
Clojure | 5732 | srv/clj |
・・・これだけみるとJavaの方がコード量が多かったりするのですが、
2つの理由により、実質的にはClojureでつくられたプロダクト、と言えるはずです。
1.Clojureの方がStep辺りの機能集約度が高い(割合はいまいちわかっていません)
2.Javaのコードはかなりの割合で自動生成されている(下記のコメントがついている)
/** * Autogenerated by Thrift Compiler (0.7.0) * * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING */
自動生成されたコード(backtype.storm.generatedパッケージのコード)は
23211Stepにもなりました。
なので、実際には下記のようになりますね。
言語 | コード量(実行Step) | ディレクトリ |
Java(開発) | 6729 | src/jvm(generatedパッケージ以外) |
Java(自動生成) | 23211 | src/jvm(generatedパッケージ) |
Clojure | 5732 | srv/clj |
加えて、バックグラウンドの制御部分はほぼClojureで書かれています。
Javaで書かれている部分は「Stormを使うために必要な部分」でしかありません。
そんなわけで、Clojureを読まずして本当の意味で理解できるプラットフォームではないようです。
では、次回はパッケージ構成を確認してみましょうか。
・・・Clojureのパッケージ確認で色々嵌りそうではありますが(汗