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系はこれでフォールトトレラントを担保している.
これについては後日説明(できたらいいな...)
システム図
なにが変わったのかというとProducerはZookeeperを指定する必要がなくなった.じゃあどうやってBrokerにデータを流すのか?
Brokerを直に指定してProduceを行うようである.
その辺の指定はConfigurationのmetadata.broker.listを参照.
他にlog compactionだのいろいろあるらしいけど今回ここまで.
たぶん,未完成な部分もあるのでこのページはちょくちょく編集されるかも.
以上
参考
Kafkaについて(0.7系システム図):fuji-151a.hatenablog.com