Olá pessoal eu me chamo Ronaldo Landelas e nessa aula vou explicar para vocês como que o Apache Kafka se integra com o Zookeeper para poder entregar essa plataforma que é o Kafka tá bom então vamos primeiro explicar a diferença entre os dois para ficar bem claro sempre que você vai fazer a instalação do Apache Kafka você necessariamente precisa do Zookeeper obviamente que nas versões mais novas não é mais necessário vou já falar um pouco sobre isso mas agora só para efeito de entendimento o Apache Kafka ele necessariamente precisa do Zookeeper para funcionar vocês vão entender o motivo tá então cá fica ele é o bloco de mensageria certo então a única função dele é simples como isso tá tão simples quanto isso é gravar dados do disco então toda e qualquer mensagem que ele recebe ele vai gravar no disco ponto tá essa função dele E aí ele pode ter um nó Normalmente a gente usa uma arquitetura de single node No ambiente de desenvolvimento, onde eu tenho só um nó Não tenho alto custo, nem resiliência, etc Nem failover Mas quando a gente está falando de produção Geralmente a gente tem múltiplos nós Então a gente tem um modo cluster funcionando Significa que eu tenho váriosors se comunicando entre si para eu ter resiliência, eu ter failover, caso de um Doors falhar eu tenho outro ainda funcionando então em produção geralmente a gente usa essa configuração de cluster, ou seja, múltiplos nodes, e é recomendável, obviamente. E onde é que entra o Zookeeper nisso? Quando a gente fala de single node, o Zookeeper também tem a sua função, mas ele tem muito mais quando a gente fala de múltiplos nodes. Por quê? A gente vai falar mais pra frente, em outras oportunidades, que o Kafka funciona com tópicos e partições. E cada partição é fisicamente localizada em um nó. E esse nó é o líder dessa partição. É ele que é o nó que vai responder para qualquer request, tanto de consumo como de escrita, porque ele é o líder da partição é ele que é o nó que vai responder para qualquer request tanto de consumo como de escrita porque ele é o líder da partição tá e quem que faz a eleição quem que elege esse nó a ser líder daquela partição é o Zookeeper então o zookeeper através de algoritmo de consenso ele consegue determinar por exemplo que o nó 1 ele é o líder da partição 4 do tópico heartbeat e o nó 2 ele é líder da partição 3 do mesmo tópico heartbeat então essa distribuição de líder e partições é feita pelo Zookeeper é ele que controla quem é o líder e de qual partição outra coisa que é muito importante é a manutenção dos metadados o que é isso? o Kafka ele mantém você pode ter milhares de tópicos, milhares de partições então se você precisar saber quantas partições tem no Kafka e quantos tópicos você não vai percorrer todos os tópicos, todas as mensagens, não precisa O Zookeeper mantém essas informações armazenadas Então quando você pergunta quantas partições existem no tópico Na verdade o Zookeeper está retornando essa informação Então isso que é a manutenção de metadados. Ele mantém todo esse tipo de informação. Quantos consumidores existem. Quantos tópicos existem. Quantidade de mensagens. Número de partições. Offset, por exemplo. E aí a gente tem uma performance muito maior. E a gente está centralizando essa informação numa ferramenta onde uma das características dela é realmente manter essas informações, manter esses metadados, além do que eu já falei de fazer a eleição de líder, etc. e controlar, coordenar esses nós. O que quero dizer com esse coordenar os nós? Pode acontecer de, por exemplo, um nó cair, quando um nó cai, a gente tem que reeleger outro líder, tem que eleger outro líder, na verdade. Então, aquela partição que antes, imagina assim, a partição 4, o líder era o nó 0, que agora caiu, o Zookeeper vai eleger o outro nó como sendo o líder é o nó zero, que agora caiu, o Zookeeper vai eleger o outro nó como sendo o líder dessa partição. Então essa eleição de líder, esse algoritmo, ele acontece dentro do Zookeeper. A gestão de configuração também é uma responsabilidade do Zookeeper, porque, exemplo, quando a gente configura aqui o tópico ele vai reter os dados durante sete dias ou um dia essa configuração também fica no zookeeper tá todo e qualquer tipo de configuração realizada no cáfrica fica armazenada no zookeeper porque de novo essa outra característica do zookeeper e o cáf a função dele é apenas armazenar mensagem eu já falei isso em outros vídeos, então a gente aplica aqui muito bem o conceito de Solid nesse caso o S, que é o Single Responsibility o Kafka tem especificamente a missão de gravar mensagens enquanto que outras coisas como fazer leção de líder, coordenar nó, manutenção de metadados fica para o Zookeeper então a gente mantendo a responsabilidade única de armazenamento de mensagem no Kafka a gente torna ele muito mais poderoso e performático e aqui eu coloquei um exemplo simples de como funciona essa comunicação uso Keeper e Broker Quando a gente entrar em uma aula um pouco mais avançada de como configurar o Broker, etc Vocês vão perceber que eu em nenhum momento coloco o Broker 01 apontando para o 02 apontando para o 03 Não existe essa configuração. Então na configuração do Kafka broker 01. Em nenhum momento eu digo ou coloco alguma URL de outro broker. Certo? Na verdade o que acontece é. O Zookeeper. Ele que tem. Na verdade o broker tem a URL do Zookeeper. E o Zookeeper consegue fazer a comunicação com esses brokers. Então o que vocês vão perceber é que cada broker tem a configuração do Zookeeper. E aí através dessa configuração o Zookeeper consegue controlar esse cluster de Kafka. Certo? controlar esse cluster de Kafka, certo? Aqui eu coloquei só um Zookeeper, mas obviamente em produção você vai ter um cluster de Zookeeper também. Então você não vai ter apenas um node Zookeeper, você vai ter vários nodes Zookeeper para também garantir resiliência e failover. Se o node do Zookeeper cair, você tem outro que está garantindo o funcionamento de toda a sua plataforma. Então é muito importante deixar claro aqui que essa comunicação entre brokers ela é feita porque o Zookeeper diz quais são os brokers que participam do cluster e não porque o broker 1 conhece o broker 2 e conhece o broker 3 Isso é muito fácil de confundir Porque o broker 1 Ele fala assim com o broker 2 Assim como o 2 fala com o 3 e assim por diante Mas essa comunicação é estabelecida Quando o zookeeper Ele manda os metadados de conexão para os brokers Então, de novo é importante se aleitar que as configurações do broker elas não explicitamente colocam rl de outro broker é o zookeeper que diz que é o cluster de Kafka presente certo e aí tem uma só para finalizar Uma característica final aqui Nos últimos meses O Apache ela Ela fez um grande esforço Tem feito um grande esforço durante alguns anos Para remover o Zookeeper E manter só o Kafka Como single installation Porque hoje como eu falei Quando você vai instalar o Kafka você precisa instalar o Zookeeper, subir o serviço do Zookeeper e depois instalar o Kafka e subir o serviço do Kafka se você não fizer essa ordem não vai funcionar, se você tentar por exemplo subir o Kafka sem o Zookeeper não vai funcionar. Nessa versão, a partir da 3.3 do Kafka, você não precisa mais do Zookeeper. A Apache, ela desenvolveu, ela usou, na verdade, um algoritmo de consenso chamado Raft, e fez um fork do Raft, e eles chamaram de K-Raft, que nada mais é do que um Raft com algumas alterações, e aí eles estão usando esse algoritmo Raft dentro do Apache Kafka e aí esse algoritmo de consenso que antes era aplicado pelo Zookeeper agora o próprio Apache Kafka possui ele e ele consegue identificar, por exemplo quem que é o líder, qual que é a partição líder etc através desse algoritmo kraft isso é importante lembrar só a partir da versão 3.3 é isso pessoal e até a próxima