
Kafka é um intermediário de mensagem distribuído amplamente usado como um barramento de propósito geral para big data. O Kafka permite que você implemente o processamento em tempo real de um grande número de eventos e crie um pipeline de lote para entrega de logs.
Por que estamos usando o Kafka? Resumindo, unificação. E se com um pouco mais de detalhes - dezenas de fornecedores, terabytes de logs todos os dias, pipelines online e offline - é extremamente difícil lidar com isso sem um único barramento de dados de alto desempenho.
, 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 . , .
. — , .
Também vale a pena monitorar muitas métricas adicionais. O mais importante é o tempo de resposta do Kafka às solicitações, tanto do produtor quanto do consumidor. E sem dúvida vale a pena monitorar as métricas clássicas como CPU, memória, etc.
Para perguntas sobre o relatório, você pode entrar em contato com Artyom Vybornov