読者です 読者をやめる 読者になる 読者になる

夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

kinesis-storm-spoutのソースコードを読んでみる(その2

こんにちは、前回に引き続き、
kinesis-storm-spoutのソースコードを読んでいきます。

kinesis-storm-spoutのコードを確認した所、
コンポーネント構成は大体下記のようになっていました。
#単なるエンティティ等は省いています。

尚、下記のクラスについてはインタフェースが切られており、
後から拡張する際に行いやすくはなっています。
特に、IKinesisRecordSchemeについてはまともに使用するならほぼ確実に自前で作成して埋め込む必要があると思います。

  • DefaultKinesisRecordScheme(IKinesisRecordScheme)
  • KinesisHelper(IShardListGetter)
  • KinesisShardGetterBuilder(IShardGetterBuilder)
  • ZookeeperStateManager(IKinesisSpoutStateManager)
  • BufferedGetter(IShardGetter)
  • KinesisShardGetter(IShardGetter)

あとは、BufferedGetterのようにKinesisの1Shardあたり秒間5リクエストしか処理できない、
という制約を上手く回避する作りも埋め込まれているのがわかります。

とりあえずこれで、こういう処理をどこでやっているか、という疑問が
わいた際には大体どのクラスを見ればわかると思います。

では、次回以降は実際にソースを読んで、動作として特徴的な所をまとめていきます。