Projeto orientado a eventos: mensagens de estado transportadas por evento

Projeto orientado a eventos: mensagens de estado transportadas por evento

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

[ad_1]

Esta é a terceira parte de uma série sobre “Mudando de RESTful para EVENTful.”

À medida que mais organizações se preocupam com a importância da arquitetura orientada a eventos (EDA) para seus programas de TI, as empresas estão mudando suas tecnologias e práticas de um estilo puramente “RESTful” para um que incorpora REST e o que venho chamando de EVENTful estilo. Essa abordagem híbrida faz sentido para a maioria das organizações e oferece bastante flexibilidade e oportunidade. Mas há desafios para fazer esse tipo de movimento e uma das primeiras coisas com que lidar é o problema clássico de “nomear as coisas”. O que significa EVENTful? E existe mais de um tipo de estilo de implementação de EDA?

Nesta série contínua, apresentei a noção geral de padrões EVENTful e cobri a primeira das quatro abordagens comuns: Event Notification ou EN (link TK para o segundo artigo). Neste artigo (parte três), explorarei uma abordagem poderosa para implementar EDA chamada estado realizado por evento ou ECS.

O que é um estado carregado por evento?

As mensagens de estado transportadas por eventos são semelhantes às notificações de eventos simples que abordamos anteriormente. No entanto, em vez de apenas fornecer informações de alerta superficial (como “Mike acabou de se conectar ao servidor-001”), as mensagens do ECS carregam todas as informações relacionadas ao evento em questão. Por exemplo, em vez de apenas transmitir que Mike fez login no server-001 (uma mensagem em EN), a versão ECS dessa mensagem conteria detalhes adicionais importantes. Por exemplo, pode conter informações completas sobre o registro da conta de Mike junto com detalhes adicionais, como dados de localização do dispositivo móvel de Mike quando ele se conectou e informações relacionadas à segurança, como seu perfil de controle de acesso atribuído.

Isso torna as mensagens do ECS muito poderosas. Como o ECS é um tipo de mensagem “pesado”, normalmente é usado para armazenar dados em um banco de dados ou transferir grandes blocos de dados de um sistema para outro. Por exemplo, as informações de login descritas acima podem ser usadas para atualizar o registro do usuário de Mike no banco de dados ou adicionar aos dados de log de todos que acessam seu sistema. Na verdade, você pode pensar nas mensagens do ECS de maneira muito parecida com os objetos de recurso JSON comumente usados ​​para gravar dados em sistemas RESTful. Isso torna as mensagens do ECS uma abordagem útil quando você está mapeando sua mudança de implementações RESTful para EVENTful.

Outra vantagem importante da abordagem ECS é que, ao transportar os detalhes dos dados que foram adicionados / alterados, você pode reduzir o tráfego na rede. Isso é diferente de usar a abordagem EN, em que enviar um alerta simples com um link significa que os destinatários dessa mensagem (possivelmente muitos destinatários) seguirão o link fornecido para coletar dados relacionados ao evento. Em vez disso, a abordagem ECS traz todos esses dados aos destinatários na resposta inicial. Isso significa menos tráfego na rede.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Claro, há uma compensação. As mensagens do ECS transportam mais dados, o que significa mensagens maiores circulando pelo sistema. Além disso, ao adicionar mais informações à mensagem, você também corre o risco de carregar dados que poucos destinatários realmente desejam ou precisam.

A consistência dos dados

O padrão de mensagem do ECS também tem algumas implicações importantes para serviços de armazenamento de dados. Em primeiro lugar, ao usar mensagens do ECS transmitidas para fontes múltiplas – e cada uma dessas fontes armazenará alguns ou todos os dados da mensagem – você introduz a possibilidade de inconsistência no armazenamento de dados. Isso acontece quando o Storage System A (SSA) processa e armazena as informações da mensagem do ECS antes do Storage System B (SSB). Quando alguém lê em SSA, eles podem não obter os mesmos resultados de quando lê em SSB. Essa inconsistência pode durar apenas alguns milissegundos, mas, em um sistema de alto tráfego que envia milhares de mensagens ECS, a probabilidade de uma leitura inconsistente aumenta rapidamente.

O desafio de sincronizar o armazenamento de dados em vários locais é comum em todos os sistemas EVENTful e é chamado de consistência eventual problema. A maioria dos sistemas de armazenamento desenvolvidos para uso EVENTful tem algoritmos de conflito e consistência integrados à plataforma, então você raramente precisa fazer algo especial ao construir seu armazenamento de dados EVENTful. No entanto, é importante estar ciente disso e aprender a lidar com os casos em que a consistência pode causar um problema

Duplicação de dados

Em segundo lugar, em sistemas que contam com uma única fonte de verdade ou padrão de armazenamento de dados do sistema de registro (SOR), o registro ECS precisa ter todos os dados possivelmente relevantes para garantir que o armazenamento de dados seja mantido atualizado. Isso pode significar carregar os mesmos dados em mensagens de atualização subsequentes, mesmo que os dados não tenham mudado. Incluir esses “dados inalterados” pode ser importante quando o sistema de armazenamento de dados precisa validar a integridade das informações antes de salvá-las e processá-las para uso futuro.

Resumo

As mensagens de estado transportadas por eventos representam um grande compromisso com a mudança da infraestrutura RESTful para a EVENTful. Quando sua organização está pronta para passar de notificações simples para o uso de implementações EVENTful para ler e gravar dados vitais, a abordagem ECS é uma adição valiosa ao seu kit de ferramentas EDA. Mas esteja ciente de que, ao passar para o nível ECS, você precisará lidar com o eventual problema de consistência e com a possibilidade de duplicação de dados e tamanhos de mensagens maiores.

Se você deseja continuar a oferecer suporte à gravação de dados em suas implementações EVENTful e também deseja reduzir o tamanho das cargas úteis de mensagens, seria melhor usar outro estilo de mensagem EDA: Event Streaming (ES). Abordaremos isso na próxima parte de “Mudando de RESTful para EVENTful.”

[ad_2]

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Luiz Presso
Luiz Presso