Kafka bajo carga pesada. Artyom Vybornov (2017)







Kafka es un agente de mensajes distribuidos ampliamente utilizado como bus de propósito general para big data. Kafka le permite implementar el procesamiento en tiempo real de una gran cantidad de eventos y crear una canalización por lotes para entregar registros.







¿Por qué usamos Kafka? En resumen, unificación. Y si con un poco más de detalle (docenas de proveedores, terabytes de registros todos los días, canalizaciones en línea y fuera de línea), es extremadamente difícil hacer frente a esto sin un solo bus de datos de alto rendimiento.







, 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 . , .







  • . — , .







  • También vale la pena monitorear muchas métricas adicionales. El más importante es el tiempo de respuesta de Kafka a las solicitudes, tanto del productor como del consumidor. Y sin duda merece la pena monitorizar las métricas clásicas como cpu, memoria, etc.









Si tiene preguntas sobre el informe, puede ponerse en contacto con Artyom Vybornov








All Articles