Akka basics
-
Upload
mauricio-fernandes-de-castro -
Category
Software
-
view
119 -
download
1
Embed Size (px)
Transcript of Akka basics

Akka basicsWhy | What | When | How …

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.

Akka é reativo

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?

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.

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.

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.


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.

Comparando casos
• Devore e Walsh exemplificam chamadas
assíncronas entre duas “threads”:
• com bloqueio
• com callback
• com Future
• com Akka

Caso 1:
Chamada assíncrona com bloqueio
• Ruim!

Caso 2:
Chamada assíncrona com "callback"
• Razoável.

Caso 3:
Chamada assíncrona com
"Future"
• Melhor.

Akka:
Chamada assíncrona com mensagens
• Melhor ainda!

Akka runtime

Ferramental Scala
necessário
• Partial Function
• Similaridade com “Pattern matching”
• Case classes
• Future
• Implicit

Receita
• Criar aplicação
• sbt, dependências ao Akka
• Criar protocolo
• Criar um ator
• Run it!

Exemplo

Crie um projeto e inclua
Akka
SBT
Akka

Crie um protocolo
Case classes

Crie um ator
Partial function

Bootstrap class
Scala Singleton
App

Bootstrap class
Runtime
Instância o ator

Bootstrap class
Exemplo de chamada

Run
https://github.com/iservport/iservport-akka-sample/tree/master

Using Akka
• Play framework
• Lagom framework (ES/CQRS)
• Akka.js

Leitura recomendada
• https://info.lightbend.com/COLL-20XX-Actor-Based-
Distributed-Systems-Concurrent-Computing-for-
Reactive-Architectures_RES-LP-
TY.html?aliId=18739267
• https://info.lightbend.com/COLL-20XX-Reactive-
Microservices-Architecture-RES-LP.html?lst=WS
• http://akka.io/docs/