Introdução ao Azure Event Hub

Olá, tudo bem?

Pessoal, Hoje vou falar um pouco sobre um recurso bem legal fornecido pela Azure: o Azure Event Hub. A ideia aqui é dar uma visão geral explicando o que é este recurso, quando podemos pensar em utiliza-lo e como funciona.

Boa leitura!

O que é?

Podemos afirmar que o Azure Event Hub é Uma plataforma de Streaming de dados que nos permite processar milhões de eventos por segundo, de uma forma altamente escalável. Basicamente, um dado é enviado para o Event Hub, que por sua vez, torna-se disponível para ser armazenado e/ou transformado por qualquer provedor de analises em real-time ou  por um storage adapter. Tudo isso é feito utilizando pub/sub pattern.

De uma forma resumida: Azure event hub é um serviço de processamento de eventos, ou seja, um event ingestor  de alta performance e baixa latência.

Quando usar?

Já que entendemos que o Event Hub pode “engolir” uma grande quantidade de dados, e deixar isso disponível  para quem quiser consumir, podemos fazer uso deste serviço para:

  • Tracking  de comportamento Apps mobile
  • Captura de eventos de jogos (Xbox).
  • Telemetria de componentes conectados a veículos e a maquinas industriais (IoT)
  • cenários de UX

Como funciona

Uma solução arquitetural que faz uso do Event Hub, normalmente, o utiliza como front door em um pipeline de eventos, isto é, como um event ingestor.

Um event ingestor é um serviço que fica entre os mecanismos que disparam os eventos e os que consomem os eventos com o objetivo de desacopla-los.

overview

Na imagem acima podemos ver uma visão macro de como isso funciona. Agora vamos entender isso um pouco melhor:

1-) Temos os event producers (publishers) que podem ser:

  • Aplicações
  • Devices
  • RTOS
  • IP-capable devices
  • IoT

2-) O Event Hub trabalhando no “meio de campo”, ou seja, recebendo e armazenando por um período de tempo todos os eventos disparados

3-) Posteriormente, com os eventos armazenados no Hub, temos os  event consumers, que são os mecanismos que irão capturar o evento e realizar algum processo necessário em cima desses dados. Este event consumer pode ser um Azure Function , por exemplo.

4-) Estes dados que foram processados, caso necessário, podem ser disponibilizados para varias interfaces, como ferramentas de dashboard, powerBI, devices e etc. Aqui nós temos uma gama de opções, dependendo da necessidade do nosso negocio.

Event Publisher

o envio de um evento pode ser feito via Https ou AMQP 1.0.  Para aplicações feitas em .NET é possivel utilizar o EventHubClient, que é uma classe disponibilizada pela lib Azure service bus ou pela Azure event hubs, se estiver utilizando o .NET Standard  e ambas estão disponíveis via nuget. Para outras plataformas, temos a opção de utilizar o Apache Qpid, por exemplo.

Para a garantia de acesso, todo publisher precisa fazer uso da SAS, que é um token que permite o publisher se identificar e obter permissão para enviar um dado para o Event Hub. Esse token é gerado no momento que o Event Hub é criado no portal do azure.

Partitions

Começando pela sua definição, podemos definir uma Partiton como: Uma sequencia ordenada(uma fila) de eventos que são guardados no Event Hub.

partition

Uma partição no Event Hub permite que um consumer consiga ler somente uma parcela/subconjunto do fluxo de mensagens, possibilitando o escalonamento horizontal no processamento dos eventos além de um gerenciamento mais granular do que cada consumer pode processar.

Sendo assim, o Event Hub pode possuir várias partições, que são independentes umas das outras e que contêm sua própria sequencia de dados armazenados. Decorrente disso, não podemos deletar arbitrariamente os dados, eles são expirados em um tempo pre-definido.

Outro ponto importante sobre as Partitions é que podemos ter de 2 até 32. Essa quantidade é definida na criação de um Event Hub e ela não pode ser alterada posteriormente. Sendo assim, tenha bastante atenção, pois as Partitions estão relacionadas com o mecanismo de paralelismo dos dados, ou seja, o número de Partitions estão diretamente relacionadas com a quantidade de consumers simultâneos que você espera ter.

partitions

A imagem acima nos ajuda a entender melhor tudo isso, pois temos um Event Hub com suas N partições e cada uma possui uma identificação no Hub com dados distintos entre si.

Partition Keys

As Partition keys são identificadores de cada Partition de um Event Hub. Como mencionamos no tópico acima, é possível que um consumer consiga ler os eventos de uma Partition especifica e, para tal, é necessário o consumer informar a partition key.

O consumer não é obrigado a informar de qual partição ele gostaria de receber dados, sendo assim, quando não informado ele receberá dados de todas as Partitions.

Se você está se perguntando como é que fazemos isso, fique tranquilo, isso será explicado na demo.

Consumer Groups

O Consumer Group funciona como uma “view” do seu Event Hub, ou seja, ele é composto pelo estado e o offset do seu Event Hub, permitindo que cada consumer tenha sua propria visão do Event Hub.

consumer group

Como podemos ver na imagem acima, é o Consumer Group que permite ao consumer do Event Hub visualizar suas Partitions. O Consumer Group é o “guia”, quando você está consumindo os dados do Event Hub.

Outro ponto de bastante importância é que, para cada Partition só pode haver um subscriber processando os dados, por Consumer Group.

 

Throughputs

A taxa de transferencia do Event Hub é controlada pelo throughput units que, por default, inicia com 1 unidade.

Uma unica unidade permite que o Event hub receba  1MB por segundo ou 1k de eventos por segundo e que disponibilize 2MB por segundo. Caso o limite de entrada seja ultrapassado, o Event Hub disparará um ServerBusyException.

Diferente das Partitions, você pode criar seu Event Hub com uma unica unidade de  throughput unit e, caso seja necessário, realizar o upgrade posteriormente.

Billing

Não há muito o que dizer sobre como o Event Hub é cobrado, pois a tabela abaixo é bem clara. O unico ponto que gostaria de deixar destacado é que, no modelo basic, somente é possivel ter um consumer group, isso é importante ter em mente levando em conta as limitações que isto nos trás.

billing

Conclusão

Espero que este post tenha contribuído para o entendimento deste recurso de streaming de eventos , que não é o único, fornecido pelo Azure.

A documentação da Microsoft é ótima e é possível ter um imersão bem maior caso você esteja interessado.

Espero que gostem, feedbacks são sempre bem vindos, então deixe aqui nos comentários!

Até a próxima!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s