Este documento discute Akka, uma biblioteca para programação concorrente e reativa em Scala. Akka implementa o modelo de ator, onde atores enviam e recebem mensagens de forma assíncrona. O documento também discute como Akka permite escalabilidade, distribuição e tolerância a falhas de forma simples.
2. Por que Akka?
Curiosidades
Akka é o nome de uma montanha na Suécia (Lapônia)
É também o nome de uma deusa que representava toda a
beleza do mundo para os antigos povos suecos.
4. Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• Responsivo e Resiliente parecem ser termos que soam bem e
são propriedades desejáveis. […] Na semana passada eu vi uma
demonstração da linguagem de programação Extempore
controlando uma parede 3D com interação através do toque
humano. A visualização era impressionante e a resposta ao toque
em tempo real. Se sistemas assim podem ser construídos por que
a maioria dos websites levam segundos para responder a
mudanças simples em páginas?
5. Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• A maioria das pessoas considera que escalável significa aumentar
escala. Pode ser tão importante aumentar quanto diminuir de
forma que um negócio possa economizar. Tenho clientes do
varejo e de aluguel de espaços para férias e feriados que
apresentam variações de 3 ordens de magnitude na necessidade
de recursos entre períodos tranquilos e períodos de pico.
Dimensionar recursos com base no uso de pico seria desperdício
ao ponto de tornar o negócio economicamente inviável.
6. Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• Ao ler sobre sistemas reativos muitas pessoas acham que estes
implicam na necessidade de um sistema de fila de mensagens.
Esse não é o caso. Qualquer mecanismo de comunicação que
proporcione uma fronteira assíncrona binária é suficiente. Pode
ser um produto de mensagens, mas também podem ser
websockets ou um protocolo assíncrono construído sobre REST.
7. O que é
• Akka oferece um modelo matemático de
computação concorrente (concurrency), conhecido
como o "modelo de ator". Neste modelo, o "ator"
fornece uma construção leve para:
• enviar e receber mensagens,
• tomar decisões locais, eventualmente criando novos
atores, de forma assíncrona e sem bloqueios.
8.
9. Proposta de valor
• Um modelo de programação unificado para:
• simplificação de concorrência - escrever código com
a ilusão de "single-threadedness" sem bloqueios,
variáveis sincronizadas ou atômicas.
• distribuição mais simples - distribuída por padrão,
com configuração local ou remota.
• tolerância a falhas mais simples - desacopla a
comunicação da falha através da supervisão.
10. Comparando casos
• Devore e Walsh exemplificam chamadas
assíncronas entre duas “threads”:
• com bloqueio
• com callback
• com Future
• com Akka