
Kafka adalah broker pesan terdistribusi yang banyak digunakan sebagai bus tujuan umum untuk data besar. Kafka memungkinkan Anda untuk mengimplementasikan pemrosesan real-time dari sejumlah besar peristiwa dan membangun pipeline batch untuk mengirimkan log.
Mengapa kami menggunakan Kafka? Singkatnya, penyatuan. Dan jika secara lebih rinci - lusinan pemasok, terabyte log setiap hari, pipeline online dan offline - sangat sulit untuk mengatasi hal ini tanpa bus data berkinerja tinggi tunggal.
, Kafka, pipeline. , exactly once . , - Kafka, . , Kafka , - .
:
2017 . Kafka 0.8.2. . .
- , Rambler, . : Β«, Rambler. Β». Rambler β . Bing .
, Google, -, .
, , , Rambler? : Β« Rambler ?Β». Rambler .
Rambler Group . , : Rambler, , , , - . 40 000 000 .
, , - . . , Rambler , .

, .
, , ?
- . , , . . , Ford . , - .
- .
- CTR.
- .
- .
- .
, .

, .

worker. , . , , Hadoop.

HDFS Spark Hive. , β key-value Aerospike.

, :
- -, . β ( ), ().
- -, worker . - , , Hadoop. Worker β .
- -, real-time pipeline . - . , HDFS, HDFS , Aerospike. , , β real-time .

? , , Kafka. Kafka β . , RabbitMQ, , . Kafka .
Kafka - HDFS, Gobblin.

Kafka LinkedIn. Map-Reduce , Hadoop Kafka HDFS.
real time.

Spark Streaming. Spark, Hadoop (LLAP). Kafka Spark Streaming , key-value .
, HDFS, . Kafka , Aerospike.
Aerospike .

?
- -, , Kafka exactly once.
- -, , - Kafka 4 , .
- -, , , Kafka .

, Kafka.
Kafka ( β ) ZooKeeper . . Kafka producers, Kafka consumers.

Kafka . topic. .

array list. , , , .

, .

Kafka, , Kafka , .
Kafka . : master-slave. Master Kafka .

Consumers, producers , . . (master ). a .

, β slave- ( ). , .
, , . . , , . Kafka - slave . , .

Kafka 2 : clean unclean. , unclean β - , , clean β , . . β .

slave , , , unclean, , , clean.

β .
, : , . Kafka , , , Kafka , .
, ?

. , - . Kafka.
. Kafka , .

, , . . ( ).

. -1, Kafka . Kafka β Kafka. , Kafka in sync. insync 1, .

insync.replicas = 2, Kafka , .
. , , . , , - overhead , . . Kafka, .
, , . - , Kafka , .

. , , β . insync.replicas = 2, replication factor = 3. insync , , Kafka.

Kafka .
, . - . :
Latest offset β .
Earliest offset β .
Kafka , - , , . earliest offset . , earliest latest offset, , .

consumer - , . . earliest offset offset - . consumer offset latest offset ( ).
, . , , consumer .

, consumer Kafka β .
β . .
? Consumer Kafka. Kafka : . , Kafka .
? : consumer , Kafka , , , . .
. , consumer , Kafka , . Kafka , . . . .

β . : consumer Kafka, , : Β«Kafka, , Β». , at least once .
At least once β , , .
? : , , , consumer Kafka, - kill -9
consumer , , . .
. pipeline at least once .
exactly once. ?

exactly once β Kafka. . , : - , . .
, . β HDFS, .
LinkedIn. Gobblin exactly once HDFS.

, consumer 2 - . production . move (mv) Hadoop .
onsumer .
, , . consumerβ, . , . .
β fetch , fetchβ. , . exactly once .

:
- Producer .
- Kafka .
- HDFS exactly once. Exactly once β , .

. , .
-, . pipeline β : ( ) Hadoop.
( 1-2 β ), pipeline .
, , , .
pipeline, , . , .
-, . Exactly once, , .

, consumers ( real-time ): Kafka 2-3 .
consumers , : Kafka, Kafka, etc.

: Kafka β . Kafka .
( ), . , pipeline.

, Kafka 4 .
β . β . β .

, ( ) - .
, , β Kafka , - . : Kafka , .

? :
- -, Kafka .
- -, Kafka .
, . , .

, 4 β Kafka .

? - , β . Kafka , . .
, , , , .

β . : 4 , ?
, . :

, , , .
Kafka ? - , Kafka : Β« , - Β». :

. .
, , 3, :

Kafka β , .
, Kafka 0.8.2, , . .

, , , .
. uplink 1 Gb. 125 . 150 . β .
, Kafka RAID 5. ? β . RAID 5 Kafka . , RAID 5 , Kafka . Kafka RAID 10.

:
- , .
- .
- .
- Kafka β .
.

?
, β at least once.
. consumer Kafka β Camus, Gobblin.

history. - . , .
- , Camus . , . - , .
. :

:

Kafka . 4 , , , consumer . Hadoop , , .

. ?
Kafka 5 , 3 . 5 . .
Kafka 18 . 5 . 5 .
, , , , .

.
:
, Kafka , .
, , , :

, 4 - . , . , Kafka leader reelection, .

-, . , , , .

-, . . . , , :
- , in sync
:
? , β . , , . . .

, -, . , , . , Kafka real-time . Kafka.
consumerβ:

10 , . Kafka , 10 , : Β«!Β».
. , . , .

:
exactly once Kafka, . pipeline. producer', consumer' Kafka. , exactly once . , .
. β , .
Perlu juga memantau banyak metrik tambahan. Yang terpenting adalah waktu respon Kafka terhadap permintaan, baik untuk produsen maupun konsumen. Dan tidak diragukan lagi, perlu memantau metrik klasik seperti cpu, memori, dll.
Untuk pertanyaan tentang laporan tersebut, Anda dapat menghubungi Artyom Vybornov