技術メモ(仮)

IT系の話や研究,他のことなど話して行けたらいいな~って感じです.ただいまJavaを学習中

Apache Kafkaについて(0.8系)

1年前にApache Kafkaについてざっくり紹介したことがあったが,
システム図が0.7系のままになっていたので今回ちょっと修正して
再度Kafkaについて書いてみる.

Kafkaとは?

復習になるがApache KafkaとはLinkedinが開発したpublish-subscribeシステム.

特徴

  • スケーラブル
  • 高速
  • 対障害性に強い

などなど
ちなみにScalaで書かれてる.
0.7系はsbtだったのに0.8からGradleにBuild Toolが変わった.
ちなみに公式ページはここhttp://kafka.apache.org/
githubはここgithub.com

用語

Message

流すデータ.例えばTwitterの1ツイートデータ,サーバの1ログとかが1Messageに当たる.

topic

messageのカテゴリのこと.Topicは自分で名前を決めれる.
例えばtwitterのデータはtwitterというTopicに流すとかサーバのログはlogsとかいうTopicに流すとかできる.

Broker

KafkaにおいてMessageを貯めるところ.ここにデータが格納されている.

Producer

BrokerにMessageを送信するcomponent.とりあえず送信するやつと覚えていたらいいと思う.

Consumer

BrokerからMessageを読むcomponent.データを取り出して読むことをConsumeという.

Consumer group

Consumerを抽象化した概念.
例えばa,b,cというConsumerを同じConsumer groupに設定しあるTopicについてconsumeした場合,a,b,cを1つのConsumerとし認識してMessageを重複,漏れなくconsumeすることが可能.
要はa,b,cで分散してconsumeができる.

Offset

Consumerと密接に関わってくる単語.ConsumerがどこまでConsumeしたかの情報を保持している.
その情報を管理しているのはZookeeperというまた別のOSSである.

replication

0.8系から加わった機能.
Messageを他のBrokerに複製する仕組み.
Kafka0.8系はこれでフォールトトレラントを担保している.
これについては後日説明(できたらいいな...)

システム図

f:id:fuji_151a:20150405230735p:plain
なにが変わったのかというとProducerはZookeeperを指定する必要がなくなった.じゃあどうやってBrokerにデータを流すのか?
Brokerを直に指定してProduceを行うようである.
その辺の指定はConfigurationのmetadata.broker.listを参照.

他にlog compactionだのいろいろあるらしいけど今回ここまで.
たぶん,未完成な部分もあるのでこのページはちょくちょく編集されるかも.
以上

参考

Kafkaについて(0.7系システム図):fuji-151a.hatenablog.com