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