uma das coisas mais importantes quando nós estamos desenvolvendo sistemas distribuídos trabalhando com microsserviços fazendo tudo para que esses caras possam falar entre eles de uma forma rápida simples e mantendo a sua resiliência é a gente ter um ótimo sistema de mensageria ou de stream de dados Hoje em dia a gente conhece muitos desses sistemas que são falados no como um Rabbit MQ Active MQ ou até mesmo o famoso apach CAF hoje é o dia de eu te apresentar uma outra solução que consegue trabalhar de uma forma extremamente rápida extremamente eficiente e com um approach diferente
dessas ferramentas que eu te acabei de falar a ferramenta que a gente vai falar hoje é o famoso nats tá o nats ele é é um grande sistema que vai te ajudar a trazer diversas possibilidades para você trabalhar aí com seus microsserviços ou com a sua arquitetura distribuída entre vários sistemas entre contextos diferentes e tudo mais então roda a vinheta porque hoje é dia de a gente falar sobre [Música] nats [Música] Olá pessoal tudo bem seja muito bem-vindo e muito bem-vinda aqui no canal fus haik meu nome é Wesley e hoje a gente vai falar
sobre o nats o nats é um sistema poderoso de mensagem e stream de dados que veio aí para revolucionar o mercado e quem sabe colocar mais de lado outras ferramentas muito consolidadas como um apach c mas antes de a gente ir direto ao assunto e eu falar mais para você sobre o at e mostrar exemplos práticos eu quero nesse momento que por favor você dê um like nesse vídeo se inscreva no nosso canal tá Ah e uma outra coisa também é o seguinte aqui na full cycle nós temos aí diversos cursos pós-graduações mb para você
alavancar sua carreira inclusive cursos né que vão te ensinar a trabalhar com microsserviços comunicação Entre esses caras inclusive também mostrando um pouco mais sobre ravit m kill e aach CFC Legal então se você quiser saber mais tô deixando um link aí a gente vai entender seu momento profissional e indicar para você qual é o melhor curso para você fazer e fazer uma baita diferença aí na sua carreira pessoal chega de delongas vamos aí falar sobre o nats tá hoje eu quero falar um pouco sobre esse cara mas também para deixar muito mais claro eu quero
fazer alguns exemplos práticos para você entender o funcionamento desse cara legal então vamos lá pessoal o nats ele é uma tecnologia que foi feita para você trabalhar em em Real Time em tempo real de verdade tá Ah e essa tecnologia ela é extremamente flexível para você fazer comunicação entre sistemas para você trabalhar com pubs request reply e também trabalhar com stream de dados de uma forma bem poderosa com a com um approach bem diferente inclusive que o apachi Kafka utiliza com o conceito de partições e tópicos e Kiss e inclusive sobre os logs que eles
vão que ele vai gravando no vídeo o nats ele é muito famoso pela sua velocidade de processamento para que você consiga pegar as mensagens o nats também ele facilita muito a vida quando você precisa trar mensagens de diversos aspectos eu vou te mostrar hoje aqui também legal e uma coisa que eu acho que é bem interessante você saber o nats ele é dividido em duas partes uma parte que é chamado de nats core tá onde tem o Core do Servidor que você consegue se comunicar e o nats ele tem essa parte de Jet streams que
ele ajuda Inclusive a trabalhar com persistência dat Store ke vho Store e etc e etc beleza Hoje a a gente vai falar especificamente do netcore tá da do Net score para que você entenda o conceito básico de como ele funciona Beleza então para fazer isso eu vou compartilhar aqui a minha tela esse aqui é o site do nats é nats.io tá E aqui ele já fala tá Que ele ajuda a gente trabalhar aí com Conexão ah com sistemas distribuídos uma coisa interessante também é que que o nats ele pode ser utilizado de uma forma muito
simples e muito organizada para você trabalhar com IOT né que é internet of things então você pode controlar sei lá a sua casa as suas luzes alarmes sistemas de traqueamento de uma forma assim bem simples ah e bem leve com uma latência extremamente baixa aí legal então como que aqui esse o site do nats né Depois eu recomendo que você veja a documentação Mas eu não quero ficar navegando em site isso aqui você faz também tá Ah o que eu quero mostrar é um pouco na prática de como que esse cara funciona beleza bom primeira
coisa que você tem que fazer é instalar o nats eu não vou ficar ensinando instalação aqui para você ah você pode usar o Mac eh para trabalhar com home brill Você pode até mesmo rodar o nax utilizando docker para ficar facilitando mais aí a sua vida Beleza então pessoal vamos lá vamos entender mais como é que esse cara funciona eu trouxe aqui o meu terminal Tá eu vou tentar aumentar a fonte de uma forma bacana para que você consiga ver direito deixa eu aumentar mais a minha fonte aqui acho que tá legal agora para você
conseguir enxergar então o que que acontece o nats primeira coisa você tem que subir o servidor dele para subir o servidor é bem simples coloca nets tá server Run você fez isso o que que vai a acontecer no final das contas ele vai ah criar né de cara aqui algumas credenciais para você a gente vai utilizar esse cara NS development pra gente trabalhar legal ele gera um password aqui caso você precise e tudo mais mas o meu maior ponto aqui que eu quero trazer é para mostrar aqui que nesse ambiente que a gente tá trabalhando
a gente roda e sobe o servidor de uma forma bem simples agora eu vou criar uma outra janela aqui para mim vou aumentar bastante a fonte para que você consiga ver bem Tá e agora a gente vai começar a fazer as nossas Primeiras Experiências Então a primeira coisa que eu preciso fazer aqui é selecionar o contexto do usuário que eu vou utilizar para trabalhar com nats então eu vou fazer o seguinte vou colocar nats context select nets development que é aquele user lá que a gente acabou de ver tá pessoal uma coisa que eu digo
para vocês não fique se preocupando com detalhes de comando isso aí você vai decorando e entendendo ao longo do tempo tá eu acredito que se você já trabalhou ou já ouviu falar no cfca né existe essa curvinha aí mas você vai ver que ele é bem simples de como que ele funcion agora que eu fiz aqui essa configuração selecionando o contexto que eu queria o que que eu fazer eu vou criar um mecanismo de request E reply então vamos imaginar o seguinte tá vamos imaginar que em algum momento eu quero fazer uma consulta do meu
saldo tá então o que que eu vou fazer eu vou criar assim ó nets reply saldo aqui para mim e eu vou falar que a resposta do meu saldo eu vou fixar ela em R 1.000 tá e tô botando aqui a para colocar eh para ele ficar ali eh respondendo tá o meu saldo bacana agora o que que eu vou fazer eu vou criar uma outra janela aqui Opa esa um pouquinho Ah aqui ó eu vou criar uma outra janelinha aqui para ficar mais fácil e o que que eu vou fazer eu vou nesse momento
fazer o pedido para eu saber o valor do meu saldo Então como é que eu faço eu coloco net request tá o meu saldo e aqui eu posso passar Sei lá o o número da conta legal quando eu Dá um enter olha só o que vai acontecer o meu request vai receber um reply de 1000 e o meu reply vai receber o payload do meu request para eu trazer um número de conta então aqui é o primeiro ponto que eu quero trazer aqui para vocês que a gente consegue trabalhar com o padrão request reply de
uma forma extremamente rápida aqui pra gente beleza bom esse aqui é um exemplo que eu queria dar Legal vamos fechar essa parada aqui agora pra gente ver um outro exemplo a gente vai falar um pouco sobre Ah streams tá Qual que é a diferença de stream paraa mensagem porque o nets Ele nasceu como um sistema de mensageria né para fazer com que vários sistemas eles consigam se comunicar para que vários sistemas consigam ler de uma fila tá Ah e para conseguir pegar essas informações porém o nats ele também trabalha com stream Tá qual que é
a diferença entre mensageria e stream stream é a quantidade de informação que você recebe em tempo real tendo a capacidade por exemplo de persistir essa informação e conseguir ler e percorrer essa informação tá a fila quando você lê você pega mensagem e já era o stream ele tem a possibilidade de você navegar em cima desses coisas o stream você recebe o dado em si não apenas uma notificação entre um sistema e outro tá Então nesse nosso caso o que que eu posso fazer para eu trabalhar aqui eu posso por exemplo trabalhar com o padrão Pub
sub ou seja o publish subscriber Então vamos imaginar que eu quero ficar escutando todos os pedidos que vão chegar aqui para mim então vou colocar NS sub ou seja tô me inscrevendo para ficar escutando os meus pedidos legal e agora do outro lado o que que eu posso fazer eu posso colocar nets Pub que eu vou publicar nos meus pedidos o meu pedido ID então o que que vai acontecer quando eu publicar aqui esse client que pode ser um sistema em go pode ser um sistema em Java e etc ele vai conseguir pegar essa informação
e ler o meu pedido ID então aqui todo mundo que quer ficar escutando os pedidos dá um sub né um subscribe aqui e todo mundo que quer mandar informação dos pedidos né ah consegue dar um Pub aqui nos pedidos legal agora tem uma coisa bem interessante que é o seguinte vamos imaginar que eu tenho várias pessoas querendo enviar pedidos e um cara por exemplo para ficar escutando os pedidos ali tá então isso normalmente a gente chama de funing Ou seja eu pego informações de vários lugares essas informações elas são unificadas e ela é entregue para
uma pessoa legal então o que que eu vou fazer aqui ah eu vou tá Ah criar mais uma janela aqui para mim tá e aqui você vai perceber o seguinte eu vou colocar aqui pedido um esse cara recebeu o pedido um agora aqui Eu também num outro client de um outro sistema numa outra linguagem de programação ele passa o pedido dois então o que que você vai perceber que a gente tem o pedido dois então vamos imaginar que esse é o sistema a esse é o b e s c o a quer ficar recebendo todos
os pedidos para ele fazer um processamento então o pedido o sistema b e o c ficam enviando todos os pedidos ali pro sistema a beleza isso aí pra gente galera é bem interessante porque a gente consegue pegar essas informações em tempo real ah dá pra gente fazer uma parada muito louca que é o seguinte Olha só eu vou colocar pedido um menos menos count é igual a men1 menos um é para ele ficar para sempre fazendo isso e mandando essa informação a cada um segundo legal então olha só o que vai acontecer eu tô mandando
e agora eu vou ficar recebendo um monte de pedido um agora aqui eu vou fazer a mesma coisa com o pedido dois tá eu vou ah oh meu Deus vamos lá eu vou colocar aqui o meu pedido dois então o que que vai acontecer ó esse esse cara tá recebendo pedido 1 2 1 2 client 1 client 2 tá ou seja isso aqui é considerado o quê um funing Ou seja eu pego informações diversos lugares e mando para um lugar só beleza então isso aí é um ponto importante tá aqui tá recebido a informação acabei
passando por esses por isso por essa jornada aqui para vocês Beleza agora o que que é o seguinte a gente pode ter também várias pessoas se inscrevendo para receber tá os nossos pedidos ou seja isso é considerado um fun out tá eu pego uma informação e essa informação vai para mais caras então o que que eu posso fazer eu posso chegar aqui tá e eu vou colocar nets sub pedidos legal e aqui eu tenho um outro programa sei lá em um um um Java sei lá escolhendo o pedido então esses dois caras diferentes Independentes estão
querendo escutar o pedido então aqui quando eu colocar um net Pub pedidos e eu vou passar x olha só o que vai acontecer ambos esses caras aqui vão receber esse pedido então esse cara mandou uma mensagem esses outros dois receberam essas mensagens legal agora a gente tem uma coisa que é interessante tá vamos imaginar que eu tenho um sistema tá E esse sistema ele vai receber muitos pedidos e para ele processar esses muito pedidos ele não vai conseguir entendeu porque é muita informação o sistema vai topar o sistema ele vai ficar lento o sistema pode
cair Aí caso ele fique lendo muitos pedidos então o que que eu posso fazer aí nesse caso eu posso criar réplicas desse sistema tá e fazer um load balancing ou seja ao invés de um único sistema né do nosso sistema ele ficar processando todas as mensagens eu duplico esses sistemas tá e cada hora um processa a mensagem aliviando Então a nossa carga tá isso é muito parecido como mais ou menos um consumer group no apach Cica Tá mas o design do Nat ele é muito diferente do Design do apach Kafka tá porque o Kafka ele
faz cada um Fica lendo uma partição e tudo mais o Nat ele ele trabalha diferente Então como que eu consigo fazer isso vamos lá para eu fazer isso eu vou fazer assim ó nats tá Ah sub pedidos menos menos q tá eh é igual a pedidos grupo tá Ou seja eu criei tô separando meus pedidos num grupo então eu tô aqui ó em em pedidos esse sistema aqui vamos imaginar vai ser igual ao sistema Aqui de baixo então o que que eu vou fazer eu vou me inscrever aqui também e falar que eu participo da
mesma fila então o que que vai acontecer agora esses caras né eles estão horizontal né então para eu Balancear a carga eu tenho sistema a sistema a Mas eles estão todos horizontaliza gente Balancear a carga então o que que vai acontecer agora aqui se eu der um um Pub pedido x ó quem recebeu aqui foi esse cara tá se eu der um um Pub pedido x de novo Olha quem recebeu esse cara então se você perceber ele tá fazendo aqui pra gente um balanceamento de carga para que um sistema não fique recebendo todas as mensagens
e ele fica lento então o que que vai acontecer a gente vai processando essas mensagens né com réplicas desse sistema para fazer o balanceamento de carga Então é isso galera o lance é o seguinte dá para fazer muita coisa com o tá ele é rápido ele é poderoso e eu acho que o mais importante aqui nesse caso que ele é muito simples de você utilizar Eu acho que já deu para você perceber obviamente tá Ah existem diversos recursos recursos mais avançados ah recursos como Wild Car é interessante que você saiba que ele dá para trabalhar
com a k value Store você consegue pegar a revisão desse k value Store evitar Race conditions ou seja ele tem um monte de coisa interessante por exemplo você consegue deletar mensagens ali do do seu stream tá tá ah então assim ele tem diferenças significativas em relação à Cica e e companhia tá isso significa que ele é melhor não mas significa que ele pode ser utilizado em outros contextos que sei lá uma parte Cica da vida seja uma bazuca ou ele não atenda realmente aquela necessidade Beleza então pessoal o lance é o seguinte ah deixa um
comentário aí embaixo dizendo Ah qual sistema de mensageria que você utiliza ou se você nunca trabalhou aí com sistemas de mensageria também novamente eu queria dizer clica no link aí abaixo tá nesse link aí abaixo a gente vai entender seu momento profissional e a gente vai indicar para você qual é um dos melhores cursos que você vai fazer onde você possa aprender tudo isso que eu acabei de falar então clica aí e eu não tenho dúvidas que a gente vai conseguir te ajudar espero que vocês tenham curtido esse vídeo né é uma introdução bem simples
sobre o nats mas eu acho que aos poucos eu posso ir criando mais vídeos sobre esse assunto se você quiser escreve aí também um comentário olha mais vídeos sobre nats E aí eu vou preparando mais material para você beleza um grande abraço e a gente se fal [Música] he