Giter VIP home page Giter VIP logo

kafka's Introduction

Apache Kafka

Full Cycle - Apache Kafka do Zero
Aqui tento dar um resumão do que é seria o Apache kafka e qual seria sua utilidade, tem muito mais coisa que não está abordado aqui, sugirro acompanhar a documentação do kafka de fato para ver todo seu potencial.

O que é o Kafka:

  • Sistema de logs "Streeaming de dados"(Banco de dados mas sem tabelas, só um log uma msg em baixo da outra), ele pega o log e guarda espera o consumer e após o consumer ler ele ainda guarda esta informação por um tempo especifico ou para sempre(Isto eu defino) isso da uma segurança maior.
  • Latencia de 2ms
  • Raplication Factor(Replicar a mesma infromação em brokers diferentes para garantir que o dado esteja sempre disponivel)

Como o kafka é extruturado:

É separado da seguinte maneira:

  • Brokers (Que seriam os servidores Kafka ou mas maquinas no caso)
  • Topic (Cada broker pode ter N topics, topics seriam nome das filas, em um e-commerce seria Carrinho por exemplo, ou podemos definir como um armário o topic)
  • Partitions (Podemos ter N partitions dentro de cada topic, essas partitions seriam gavetas por exemplo de um topic)

Producers e Consumers

Dentro da extrutura do kafka temos os Producers e os Consumers:

  • Producers seriam quem gera os dados, é quem envia os dados para o kafka
  • Consumers seriam os consumidores de fato deste topic, deve ser detacado aqui que o Consumer se conecta nas partitions do topic, abaixo é detalhado melhor este ponto. A quantidade de consumers deve ser relativa a quantidade de partitins que temos no topic, ex:
  • 1 topic=Carrinho
  • 3 partitions
  • 4 consumers do group=X
  • 3 consumers do group=Y
  • 2 consumers do group=Z
  • Conectamos os consumers ao topic Carrinho, a quantidade consumers do group=X é maior do que a partitions, então 1 desses consumers ficará sem receber dados, pois cada partition irá se conectar com 1 consumer do mesmo group se a quantidade for >=, já se conectarmos os consumers do group=Y, teremos 1 partition para cada consumer, e se conectarmos os consumers do group=Z teremos 1 consumer com 2 partitions e o outro consumer com 1 partition.

Exeplicações em linhas gerais:

Cuidar pois o Kafka tem a questao das partições que cada topico tem, pois a partição nunca vai se comunicar com o mesmo consumer do mesmo group, é isso que a imagem abaixo diz, um Goup com varios consumers consumindo de dois topics diferentes, mas o mesmo consummer pode se comunicar com mais de uma partição:

Ou seja o numero de consumers e topics deve ser o mesmo, se o numero de consumers ser maior que o numero de partições daquele Topic, algum consumer vai ficar sem receber dados.

Diferença entre mensageria e streeaming de dados(Kafka):

  • Mensageria:
    Pedido X foi comprado pelo cliente Y que pagou com cartao B....
  • Streeaming de dados(Kafka):
    Auditoria de infromações, onde a infromação precisa ser distribuida para todos os consumers(Aqui pode ter mais de um) de uma forma rapida e esta informação nao pode ser perdida. Um exemplo é o PubSub que faz basicamente a mesma coisa, de distribuir a mesma mensagem par todos os consumers, kafka recebe qualquer tipo de dados mas nao substitui um banco de dados pois nao existe tabelas ele sim é um sistema de LOGS.

Onde seria util aplicar o kafka de fato:

  • Aplicar para uma comunicação de um cliente, por exemplo o cliente manda a msg para um proxy que se passa por uma api rest mas por baixo esse proxy vai mandar a requisição para o kafka.
  • Serviço de mensageria onde nao posso perder os dados por x tempo, mas tenho que ter uma alta vazão destes dados para algum/s consumer/s lerem, podendo resgatar o histórico do que já foi feito.
  • Comunicação entre o meu banco de dados e outras aplicações, tenho um trabalho de levar algumas informações de uma ponta para outra para isso temos o Kafka connect que faz este trabalho muito bem, abaixo tem uma imagem representando isso:

kafka's People

Contributors

eliezer090 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.