Apache Kafkaは、大量のデータをリアルタイムで処理するために使用される分散ソフトウェアメッセージブローカーです。Apache Kafkaの特徴的な機能には、信頼性、スケーラビリティ、および高性能が含まれます。講演では、ApacheKafkaの主なアーキテクチャ機能と使用例を分析します。私たちが東の道で集めた自明でない瞬間と熊手を考えてみてください。

みなさん、こんにちは!私の名前はグリゴリーです!そして今日はカフカについてお話します。
次の計画があります。
- Kafka, .
- , , . . Kafka.
- .
- – - . - «, », .
- . : - .
:
[TOC]
Kafka?
- Vostok.
, . . . Hercules . , , , , .
- , , - .
Kafka .

. . , , . Kafka - . Spark, , . .
Kafka 2 , . . .
? Java stack.
Kafka 0.11, Python, DotNet Kafka 1 . stack – DotNet, . Kafka .
Kafka , . , - . - . .

, Apache Kafka
Apache Kafka
, , , Kafka . – producer. Producer – , -.

consumer. , - .

. , Apache Kafka – . , .

.

.

, producer consumer , . , Message Queue. , .

Publish-Subscribe, . . , consumers . consumers.
, poll-, . . : «, consumer, . ». consumer Kafka : « - ?». .
, , consumers.
Apache Kafka
- Topic
- Broker
- Producer
- Consumer
4 . , , producer consumer. .
Kafka Topic

– , producers, consumers. - . – .
. . ?

- .

- . , .

, offset. 0.
. Offset = 0

.

. , . , .
- .

.

, . . 1 , 2 . .

.

- . , . , . .

.
offset, .

. offset .

, , . data, index, timeindex – .

Data – , . . - . . . Kafka , , .

index? - , . index .

. index 8 . int: relative offset, positon.
Relative offset – .
offset , offset, .
, offset int. , offset int.
position. Position – -.

, relative offset , .

-.

. , . offset relative offset , .
, , - . , . Kafka.

timeindex. ? Kafka - . . Timeindex .
Kafka Broker

, . – .
.

. .

, . . .
Kafka , replication factor . , .

, . , .
4 , .
Kafka .

, , .
– , . producers , .
. , . .

– , . . - , - .

.

, . .
Kafka , , -, . , .

? , , . , , follower. .

, , , in sync replica. , .

, . . in sync replica.
, - . follower, ? ? follower . , .

, ?
3 2, . , .

Kafka , . . , .

. .

, , , , .

. . . .

Kafka , – .

? , . . , . Kafka . , .
Kafka Producer

, . . , .
. , , .
Kafka , – , , . , . consumer , .

? , . MurmurHash , .

, round robin, , . . , ..
point: . . . - , . . , , . .
, Kafka , . – offset, timestamp . .

. . .
. 9 .

, . Kafka, acknowledgement, . . . ,

. ?

. , .

.
Kafka, . - . 0 . . .

. 1.

? . Kafka. Kafka . .

. , .

, .
?

Followers : « ?». : «». . . . , , .

, , . all, .

? .

, .

followers .

, . , .

, , , , .

, .
. min.insync.replicas.

3, , , 3 , . . + 2.
, , , , -1
.
Kafka Consumer

, consumer. . consumer . , . - .

, .




.

?

- .

.

- .




version polled Kafka . , , .
. , , . , . . , Kafka. , commit offset.

?

consumer, .

, , . Kafka: « ». , .

- .

. . . .

consumer , , .

.

, .
- .

consumer, .

. ? , consumer , consumer . , Kafka .

consumers . .

, .

- offset, .

, .

– , -.

? -, .

.

consumer .

.

.

consumer , . .

- , .
, , . , .
Kafka
.
, .
, - .
, Kafka.
—
. ? . .
Kafka. log.dirs. , , .

. , - .
– , . , , , .

?

1 , . GC .
. , . Kafka , . , .

— unclean.leader.election.enable=false. 0.11 .
KIP-106 — Change Default unclean.leader.election.enabled from True to False (0.11)

. . . ? , .
. , . ? , . . 1 - , 0 .
, 0.

1 , . .
, , . , , .

https://issues.apache.org/jira/browse/KAFKA-3410
Kafka . , 1.1.
. .
—

. . default.replication.factor = 1.
, . , Kafka , dev- , , default.replication.factor - , . .
, replication.factor, .

– auto.create.topics.enable = true.
. ? , , - , Kafka : «, - ». . , . . replication.factor =1. production, replication.factor, - replication.factor = 1. , - . - .
, , .

. , , , consumer . , .
, Kafka .

, message.max.bytes. 1 000 012 .
? , . , Kafka.

, , . , . consumer , . , consumer , , . - . Kafka Java , Scala.
? - , , , production. , , . . . , .
.
—

. . , . . , Kafka .
Kafka , batch.size. , . 16 – , Kafka- , . . . Kafka, , . , . .
. , 10. . . 160 performance.
, , .
production. , 10. , 160 , 10 . production 1,5 .
? , , . . , . . - . - . .
?

, Kafka KIP-126 — Allow KafkaProducer to split and resend
oversized batches (0.11)
KIP (Kafka Improvement Proposals) – , Kafka, . . .
KIP 0.11 . Kafka producer, , - , Kafka.
, . , . , . , , , , .
, . . . .
. : « ». . , . .
API — send
API, send. ? , Kafka API, . . , Kafka, future. . , , . , send , . . future , . – , . , , , . . . . , . 60 .
. - , . , , Kafka , .

KIP-286: producer.send() should not block on metadata update (discuss)
, ? , , , . , : « ». KIP discuss. , - . , Kafka . , .
API —

, . , , consumer. , poll-, . . consumer Kafka . , consumer :
, Kafka. - - . , . .
consumer.poll ConsumerRecords. Key Event. - , . - Kafka , ?
, . , , . , . .

? fetcher, stack trace , poll.
, message exception: , - - offset. , - . – , . , . offset, offset.
, exception, , partition, , . , , offset .
, , . , .

, . .

.

, . , , .

. ?

, ? . . .
, ?
, .

, exception, . null, .
, .

. . , , , , , .
, consumer.
API —

. . .
, . .

.

, , , , .

, . .

?

KIP-41: KafkaConsumer Max Records (0.10).
, , . KIP .
round robin, . consumer’ . . , . , . .

KIP-387: Fair Message Consumption Across Partitions in KafkaConsumer (discuss)
Google: « ?». KIP – .
discuss. , , , , -. , , . . .
—

. DevOps. .
- : « . ? ». . , .
, . – retention.bytes.
Retention.bytes , . . log.retention.bytes – , .
, , per partition, . . .
. – 1 . 3 – . . . , .
, .
—

KIP-113: Support replicas movement between log directories (1.1)
, , , Kafka . , KIP, . , , . ! , «».
Kafka - «». . - , . , .
- , - , - . , - .
, . , .

KIP-178: Size-based log directory selection strategy (discuss)
KIP, - , discuss, . . , . , .
—

, ? . .
. bash-, partition reassignment.
«», , JSON, bash-, - .
:
, - .
. . , , .

«».

preferred leader. , , , , – ? .
, JSON. , , . , . , .

? ?
. . .
API. , . , .
, DevOps
, . KIP . , , , .
! Kafka – , . .
, . !
, , ? . . , ? , , – , 3 , 4, ?
. : – . ? , . . , . . . partition reassignments. , , . , . , bash- . 5 , 10 . .
, , . .
! Kafka . , , consumers . -, Kafka. , , bash-, - , , . -. true way, , . , .
! , partitions ? , partitions ?
, . , , , . , , . , ( value ), . compaction. Kafka , , , , 10 . . . , , . .
. - best practices partitions, . . consumers consumer groups?
. , , , – . ? , . , , . , consumer group , . - consumers , , . . . .
! ! , ? . - ?
. , , . . , . , Dot Net . – - -.
! , Kafka, . . Kubernetes? Kubernetes, helm charts ? failed offset commit?
Kubernetes. Kubernetes , . . Kafka Kubernetes . . . . , Kafka Kubernetes, . failed commit offset, , , consumers . Consumer, , , . , : « » . . . . GC consumer, . , , , .
. . , consumer . ? , , . , , consumers . consumers . . . . , consumers. -. . .
! consumers, . . , , , , consumer?
, consumer , . . , consumer 3 , . .
! . user case, Kafka ? Postgres, , Kafka , Postgres. , .
最もばかげたものはそこで特別に選ばれました。カフカとその建築物に精通すると、それらがどれほどうまく作られているかがわかり、テクノロジーに恋をするという意味で、ばかげた状況を示したかったのです。テクノロジーは本当にクールです。これがポイントでした。これは、PostgresをKafkaに置き換えることではありません。いいえ、もちろん違います。
Kafkaは何に使用していますか?たくさんのマイクロサービスがあり、何千ものインスタンスが起動されています。それらからログを収集しますが、将来的にはトレースのタスクがまだあります。つまり、Kafkaを介したマイクロサービス間のネットワーク相互作用に関する情報を集約したいと考えています。また、メトリック、アプリケーション、つまりリクエストの数、エラーなど。