Anar al contingut

Apache Kafka

De L'Enciclopèdia, la wikipedia en valencià

Apache Kafka és un proyecte d'intermediació de mensages de còdic obert desenrollat per LinkedIn i donado a l'Apache Software Foundation escrit en Java i Scala. El proyecte té com a objectiu proporcionar una plataforma unificada, d'alt rendiment i de baixa latencia per a la manipulació en temps real de fonts de senyes. Pot vore's com una coa de mensages, baix el patró publicació-subscripció, massivament escalable concebuda com un registre de transaccions distribuïdes, lo que la torna atractiva per a les infraestructures d'aplicacions empresarials.

El disseny té gran influència dels registres de transacció.

Història

[editar | editar còdic]

Apache Kafka va ser originalment desenrollat per l'empresa LinkedIn, la qual ho va publicar com a software lliure a principis de 2011. En octubre de 2012 va superar l'etapa d'incubació de la fundació Apache. En novembre de 2014, varis ingeniers que varen treballar en el proyecte Kafka de LinkedIn varen crear una nova empresa anomenada Confluent enfocada en Kafka.

Empreses que utilisen Kafka

[editar | editar còdic]

La següent és una llista d'empreses conegudes que utilisen o han utilisat Kafka:

Rendiment de Kafka

[editar | editar còdic]

Per la seua capacitat d'escalar massivament i al seu us en estructures a nivell d'aplicacions empresarials, el seguiment del rendiment de Kafka s'ha convertit en un tema cada volta més important. Actualment existixen vàries plataformes de còdic obert, com Burrow de LinkedIn, i plataformes de pagament com Datadog, que permeten fer el seguiment de l'eixercite de Kafka.

Arquitectura

[editar | editar còdic]
Erro al crear miniatura:
Visió general de Kafka

Kafka almagasena mensages de clau-valor que provenen d'un número arbitrari de processos cridats "productors". Les senyes poden dividir-se en diferents "particions" dins de diferents "temes". Dins d'una partició, els mensages s'ordenen estrictament pels seus posicions (la posició d'un mensage dins d'una partició), i s'indexen i almagasenen junt en una marca de temps. Atres processos denominats "consumidors" poden llegir els mensages de les particions. Per al processament de fluix, Kafka oferix la API de fluix (Streams) que permet escriure aplicacions Java que consumixen senyes de Kafka i escriuen els resultats de regrés a Kafka. Apache Kafka també funciona en sistemes de processament de fluix externs com a Apache Apex, Apache Beam, Apache Flink, Apache Spark, Apache Storm i Apache NiFi.

Kafka s'eixecuta en un clúster d'un o més servidors (cridats brokers) i les particions de tots els temes es distribuïxen entre els distints nodos del clúster. Ademés, les particions es repliquen en varis brokers. Esta arquitectura permet a Kafka entregar fluix massius de mensages de forma tolerant a fallos i li ha permés substituir alguns dels sistemes de mensageria convencionals com Java Message Service (JMS), Advanced Message Queuing Protocol (AMQP), etc.

Des de la versió 0.11.0.0, Kafka oferix escritures transaccionals, que proporcionen un processament de fluix d'una sola volta utilisant la API de fluix (streams).

Kafka soporta dos tipos de temes: Regulars i compactar. Els temes regulars poden configurar-se en un temps de retenció o un llímit d'espai. Si hi ha registres que són més antics que el temps de retenció especificat o si se supera el llímit d'espai per a una partició, Kafka pot eliminar les senyes més antigues per a lliberar espai d'almagasenament. Per defecte, els temes es configuren en un temps de retenció de 7 dies, pero també és possible almagasenar les senyes indefinidament.

En el cas dels temes compactar, els registres no caduquen en funció dels llímits de temps o espai. En el seu lloc, Kafka tracta els mensages posteriors com a actualisacions de mensages més antics que tinguen la mateixa clau i garantisa que mai es borrarà l'últim mensage d'una clau. No obstant, els usuaris poden eliminar els mensages per complet escrivint un mensage denominat tombstone en valor nul per a una clau específica.

Vore també

[editar | editar còdic]

Referències

[editar | editar còdic]