O que é controlado por eventos e quão rápido é o tempo real?

Concluído

Se pensarmos nisso, podemos identificar muitos cenários controlados por eventos. Muitos deles exigem uma reação em tempo real.

O que queremos dizer em tempo real?

Uma reação em tempo real pode ser vista como uma resposta imediata. Vamos dar um exemplo de caixa em uma cafeteria que pergunta o que você quer beber.

O caixa espera uma resposta instantânea, ou pelo menos uma resposta que é dada muito em breve. Caso contrário, o caixa pode reformular a pergunta ou suspeitar que você foi rude. Uma resposta rápida é solicitada e também apropriada. O tempo de resposta pode variar ligeiramente, mas ainda é visto como sendo "em tempo real". Então, retornar uma saudação deve acontecer rapidamente, mas é bom pensar brevemente sobre sua ordem para responder à pergunta do caixa.

Se você traduzir esse cenário para sistemas de software, tudo o que você se importa são os tempos: Tempo de Resposta, Tempo de Conclusão, Hora de Acesso, Horários de Inicialização e assim por diante. O usuário ou o aplicativo de acesso define esses intervalos.

Observação

Em tempo real, as tarefas de sistemas executam sua função dentro dos prazos prescritos.

Você deve estar sempre ciente do que está acontecendo em seu sistema. Portanto, certifique-se de não esquecer o óbvio, que é o registro em log, o monitoramento e a medição de seus tempos.

Importante

Especifique os prazos e os intervalos com antecedência e configure uma solução de monitoramento sem bloqueio para o check-up.

Em resumo, concordamos que o tempo real significa super-rápido, em um instante. Quão rápido exatamente é especificado pelo seu cenário especificado.

Aplicativos controlados por eventos

Se você pensar em um evento de clique, pense em outra coisa. Os aplicativos controlados por eventos usam o princípio de fogo e de esquecer . O evento é enviado ou disparado em direção ao próximo sistema, que pode ser outro serviço, um hub de eventos, um fluxo ou um agente de mensagens como o Kafka. Não esperamos necessariamente uma resposta da próxima no sistema. O acoplamento flexível é alcançado pelo preço da consistência eventual, que precisa ser cuidada em outro nível.

Para identificar a natureza dos aplicativos controlados por eventos, vamos examinar os principais padrões de arquitetura usando o exemplo de um cliente chamado Alex, comprando um café e um cappuccino.

Notificação de eventos

A notificação de evento é a notificação de um evento ou acontecimento específico. Cada evento é visto separadamente. O exemplo de um cliente chamado Alex comprando um café e um cappuccino pode ter esta aparência:

1. Evento: Alex compra um café.

2. Evento: Alex compra um cappuccino.

Um barista teria que ouvir atentamente todos os eventos para obter toda a ordem de Alex. Mas dois baristas também poderiam preparar e servir as bebidas de forma independente.

Transferência de estado realizada pelo evento

Com a transferência de estado realizada pelo evento, todas as informações necessárias são armazenadas em um único evento. Isso será útil se um evento for perdido ou seu serviço não estiver escutando todos os eventos. Para nosso exemplo, os eventos seriam semelhantes a este:

1. Evento: Alex compra um café.

2. Evento: Alex compra, além do café, um cappuccino.

Com um barista, ouvir apenas o segundo evento pode ser suficiente. Com dois baristas, o segundo teria que olhar para o primeiro. A ordem poderia ser atendida em conjunto, mas o processo pode levar mais tempo do que fazê-lo completamente dissociado.

Fonte de eventos

Com o fornecimento de eventos, o armazenamento de eventos entra em foco. Como você pode ver, os eventos são os mesmos do primeiro exemplo. Mas o barista é importante para esse conceito no momento em que o barista recebe um evento e, em seguida, pensa em todos os eventos correspondentes para obter o estado atual para todos os pedidos feitos por Alex.

Com o segundo pedido, o barista sabe que o pedido de Alex consiste em um café, lembrando o primeiro pedido, e um cappuccino, porque esta bebida foi solicitada. Trabalhar em paralelo com um segundo barista não é tão fácil quanto possível.

Quando adicionamos um caixa para receber os pedidos e servir as bebidas, os baristas podem trabalhar independentemente para preparar as bebidas. Eles não precisam saber nada sobre os clientes. O caixa é o chamado repositório de eventos, persistindo os eventos, nesse cenário. O fornecimento de eventos adiciona outra camada de complexidade, mas também adiciona desacoplamento.

1. Evento: Alex compra um café.

Caixa: (Primeiro) pedido (para Alex): Café

2. Evento: Alex compra um cappuccino.

Caixa: (Segundo) pedido (para Alex): Cappuccino

Visualização que mostra o fornecimento de eventos para comprar um café.

Os dados de telemetria são eventos em tempo real

Há também outros exemplos que podemos pensar. Imagine o cenário de executar um sistema de refrigeração, por exemplo, para fabricantes de alimentos ou medicamentos. Você precisa de controle constante da temperatura e de outros dados relevantes em seu sistema. A conscientização sobre os dados de telemetria e controlá-los automaticamente seria fundamental para seu sucesso. Medir a telemetria a cada dois segundos e enviá-la para o sistema de controle em que os dados são analisados, processados e manipulados é um sistema controlado por eventos. Além disso, os dados devem ser processados em tempo real porque é fundamental reagir rapidamente para evitar consequências trágicas para a empresa.