Introdução ao Akka – uma biblioteca de código aberto para desenvolvimento distribuído

Introdução ao Akka – uma biblioteca de código aberto para desenvolvimento distribuído

Escrito em Scala, Akka é um kit de ferramentas para construir aplicativos distribuídos e orientados a mensagens. Baseado no sistema Actor-Model, Akka é a escolha de muitas empresas para seu backend. Por que?

Imagem em destaque

O que é Aká?

Akka é uma ferramenta de desenvolvimento de aplicativos para construir aplicativos Java e Scala altamente simultâneos e orientados a mensagens. É uma estrutura de desenvolvimento que permite criar aplicativos distribuídos, JVMaplicativos baseados em.

Os aplicativos criados por meio do Akka são orientados a eventos e resilientes. Eles também são altamente escalonáveis ​​e permitem que você se concentre nos objetivos principais do negócio. Além disso, você não precisa se preocupar com primitivas de simultaneidade de baixo nível ou roteamento de tráfego do lado do servidor ao criar seu aplicativo com Akka.

Os aplicativos Akka podem enviar 50 milhões de mensagens por segundo. Também pode lidar com 2,5 milhões de atores por GB. Isso permite que os aplicativos sejam altamente escalonáveis ​​e eficientes. A máquina também é autocorretiva, ou seja, pode corrigir automaticamente atores locais e remotos em caso de qualquer problema. O dimensionamento pode ser feito por meio de diferentes técnicas, como balanceamento, clustering, fragmentação e particionamento.

O que são atores Akka?

Os atores Akka são semelhantes aos objetos em um design orientado a objetos. Eles recebem mensagens, desacoplam-nas e executam tarefas de acordo com as instruções da mensagem. Eles próprios podem executar uma tarefa ou encaminhar a mensagem para outro ator com autenticação para executar a tarefa necessária.

Os atores são usados ​​para criar, configurar e implementar componentes Akka. Eles são normalmente usados ​​no Sistema Ator-Modelo para sincronização e passagem de mensagens. Esses atores são executados em threads diferentes e se comunicam entre si por meio de um roteador de grupo. O roteador usa uma recepcionista para descobrir os atores disponíveis. A recepcionista também é responsável por encaminhar a mensagem apenas para os atores cadastrados.

Quais são os problemas dos modelos de simultaneidade tradicionais?

Na infraestrutura de TI moderna, há muitas maneiras de lidar com a simultaneidade, como multithreading e encapsulamento, entre outras. No entanto, nesses métodos, você deve atribuir parte de sua memória para compartilhamento, o que geralmente leva a estados internos corrompidos dos objetos.

Você pode aplicar bloqueios para corrigir esse problema. No entanto, são um método ineficiente e desatualizado de resolver problemas de comunicação. Eles não escalam com eficiência e podem causar problemas como impasses.

Você pode usar pilhas de chamadas para corrigir alguns dos problemas de multithreading. No entanto, as pilhas de chamadas não conseguem lidar com solicitações de falha. Por exemplo, o thread principal não acessará o thread de trabalho se você tiver uma mensagem aguardando em uma fila. Nesse cenário, se o thread de trabalho começar a trabalhar na mensagem e falhar, o thread principal não receberá uma notificação da falha. Além disso, se o thread de trabalho for encerrado quando o thread principal não estiver acessando-o, sua falha não gerará nenhuma notificação. Isso significa que o thread permanecerá com falha até a próxima vez que for acessado, momento em que gerará sua primeira exceção de estado com falha.

Como funciona o Akka?

O modelo de ator de Akka resolve o problema de simultaneidade enviando mensagens para outros atores em vez de usar o thread principal. Isso permite emular o encapsulamento sem usar bloqueios. Akka também garante que os estados dos atores sejam mantidos de maneira segura para threads.

Os atores passam a responsabilidade de enviar notificações ao ator receptor. Eles também processam mensagens de thread recebidas sequencialmente, em vez de instantaneamente. Isso permite que eles sincronizem sem usar vários threads.

Como funcionam os atores?

Akka segue o modelo de ator e supervisor de ator. Quando ocorre uma falha, os atores subordinados se fecham e lançam uma exceção. Nessa situação, o supervisor pode escalar a falha, reiniciar o subordinado ou parar permanentemente o ator. Contudo, se o ator fracassado também for um supervisor, encerrá-lo significaria encerrar todos os seus subordinados.

Você também pode encerrar os subordinados de um ator antes de reiniciá-lo. Os atores não podem ser anexados a supervisores de fora da rede e serem desligados de forma limpa quando seus supervisores falham.

Em vez de comunicação direta, os atores comunicam-se através da passagem de mensagens. As referências do ator apoiam as mensagens que o ator deseja enviar. Os atores seguem métodos conhecidos de passagem de mensagens, como disparar e esquecer, solicitar resposta e resposta adaptada.

Cada ator possui uma configuração padrão que inclui uma caixa de correio (para enfileiramento de mensagens), ambiente de execução (para manipulação de código e passagem de mensagens), variáveis ​​de comportamento e endereço. No entanto, os atores podem ser diferenciados com base nos caminhos.

Caminhos são endereços que descrevem o protocolo e a localização de um ator. Cada ator possui um caminho físico e lógico. Esses caminhos ajudam os engenheiros a definir a localização funcional de um ator no sistema de atores.

O método preferido para lidar com os atores é através de clusters, em vez de conectar-se remotamente a eles. O módulo clusters lida com a adição e remoção de atores em diferentes sistemas de cluster. Também é responsável pela distribuição da computação.

Serviços Akka

Alpaca

Este é um produto de código aberto para integração de pipeline Java/Scala.

Alpakka possui uma extensão chamada Alpakka Kafka que permite conectar-se a fluxos Kafka. O uso de transações de serviços de desenvolvimento Akka para Kafka garante que todas as mensagens sejam consumidas sem duplicação e produzidas com êxito no coletor.

Fluxos Akka

Akka Streams é um kit de ferramentas que permite criar fluxos de abstração de alto nível sem se preocupar com o comportamento e as variáveis ​​do ator.

Projeções Akka

As projeções Akka permitem processar um fluxo de uma fonte. O fluxo deve ter uma carga útil e um deslocamento rastreável. Você também pode usá-lo para reiniciar e acompanhar essas projeções.

Akka vs Spark?

Apache Spark é um mecanismo de processamento de dados usado para processar dados em lote. Ele se concentra na tolerância a falhas. Ele usa conjuntos de dados distribuídos resilientes para compartilhamento e processamento rápido de dados. Também permite executar tarefas em diferentes máquinas em paralelo.

Akka é uma estrutura de uso geral para a construção de sistemas distribuídos de alto desempenho. Ele permite que você processe transações sem se preocupar com a simultaneidade.

O Spark é muito mais útil para executar ações em grandes conjuntos de dados (big data), enquanto o Akka enfatiza um maior grau de controle do ator. Você deve usar o Akka onde precisar realizar processamento em lote em tempo real usando lógica de negócios.

Vale a pena aprender Akka em 2022?

O sistema Actor-Model é altamente útil se você estiver trabalhando em algoritmos e processos distribuídos. Se você deseja executar sua aplicação em segundo plano, este modelo seria benéfico para sincronizar mensagens e facilitar a comunicação, especialmente se você estiver trabalhando em linguagens como Scala, Java ou Erlang.

Fonte: BairesDev

Вернуться к блогу

Комментировать

Обратите внимание, что комментарии проходят одобрение перед публикацией.