uso de padrão amqp para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfa...

61
Introdu¸ ao Atores remotos com padr˜ ao AMQP Resultados experimentais Trabalhos futuros e conclus˜ oes Uso de padr˜ ao AMQP para transporte de mensagens entre atores remotos Thadeu de Russo e Carmo [email protected] Orientador: Prof. Dr. Francisco da Rocha Reverbel Instituto de Matem´ atica e Estat´ ıstica Universidade de S˜ ao Paulo Maio, 2012 Thadeu de Russo e Carmo [email protected]

Upload: others

Post on 27-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Uso de padrao AMQP para transporte demensagens entre atores remotos

Thadeu de Russo e [email protected]

Orientador: Prof. Dr. Francisco da Rocha ReverbelInstituto de Matematica e Estatıstica

Universidade de Sao Paulo

Maio, 2012

Thadeu de Russo e Carmo [email protected]

Page 2: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao

Explorar a potencial sinergia entre duas classes de sistemas desoftware:

1 Sistemas corporativos: composta de sistemas de middlewareorientados a mensagens e message brokers

2 Programas concorrentes: composta pelas implementacoes domodelo de atores

2 / 61

Page 3: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao – Sistemas corporativos

Middlewares orientados a mensagem (MOMs) trabalham comtroca assıncrona de mensagens

Formam base para simplificar o desenvolvimento de sistemas

Possuem suporte e mecanismos para gerenciamento robustode erros e garantia de entrega de mensagens

Sao frequentemente apresentados como tecnologia que podemudar a maneira como sistemas distribuıdos sao construıdos[Alonso et al 2004]

3 / 61

Page 4: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao – Sistemas corporativos

MOMs sao um tanto quanto inflexıveis em relacao a filtrageme roteamento de mensagens

Message brokers sao descendentes diretos dos MOMs eenderecam essas limitacoes

4 / 61

Page 5: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao – Sistemas corporativos

Os protocolos usados por message brokers variam de produto paraproduto. Algumas abordagens existentes:

A especificacao Java Message Service (JMS) define uma APIpadrao para que programas Java possam interagir commessage brokers

O padrao Advanced Message Queuing Protocol (AMQP) euma proposta recente de padronizacao de protocolo paramessage brokers

5 / 61

Page 6: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao – Programas concorrentes

Processadores multicore impactam a maneira que programas saoescritos:

Programas precisam ser escritos de maneira concorrente parapoderem usufruir dos ganhos de desempenho dosprocessadores multicore [Sutter 2005]

Abordagem convencional com o uso de travas, alem decomplexa, e limitada e nao permite a composicao das travasde modo seguro [Jones 2007]

A maioria das linguagens de programacao nao sao adequadaspara a criacao de tais programas [Sutter & Larus 2005]

6 / 61

Page 7: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao – Programas concorrentes

Modelos nao convencionais de programacao concorrente:

Software Transactional Memory (STM) – mecanismo decontrole analogo as transacoes de bancos de dados

Atores – troca de mensagem assıncrona entre processos

7 / 61

Page 8: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Motivacao

Potencial sinergia entre as duas classes:

Atores em diferentes nos de uma rede de computadorespodem trocar mensagens entre si

Message brokers provem robustez para a troca de mensagensentre entidades de diferentes nos de uma rede decomputadores

8 / 61

Page 9: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Objetivos

Criar de uma implementacao em Scala do modelo de atoresque use o padrao AMQP para o transporte de mensagensentre atores remotos

Comparar o desempenho do prototipo desenvolvido nestetrabalho com o da implementacao original de atores doprojeto Akka

9 / 61

Page 10: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores

10 / 61

Page 11: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores

Algumas implementacoes:

Linguagens: Axum, SALSA e Erlang

C++: Act++, Thal e Theron

Smalltalk: Actalk

Python: Parley e Stackless Python

Ruby: Stage e Rubinius

.Net: Asynchronous Agent Library e Retlang

Java: Akka, Kilim, Jetlang e Actor Foundry

Scala: Scala Actors, Akka e Scalaz

11 / 61

Page 12: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores no projeto Akka

O projeto Akka disponibiliza dois tipos de atores:

1 Atores locais: um ator local e um ator que pode recebermensagens apenas de atores residentes na mesma maquinavirtual

2 Atores remotos: um ator remoto e um ator que pode recebermensagens de quaisquer outros atores, inclusive daquelesresidentes em outras maquinas virtuais

12 / 61

Page 13: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores locais

Declaracao e uso de um ator:

class SampleActor(val name: String) extends akka.actor.Actor {

def this() = this("No name")

def receive = {

case "hello" => println("%s received hello".format(name))

case _ => println("%s received unknown".format(name))

}

}

/* theActor representa uma LocalActorRef */

val theActor = Actor.actorOf[SampleActor].start

theActor ! "hello"

13 / 61

Page 14: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Envios assıncronos e sem resposta – !

14 / 61

Page 15: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Envios sıncronos com resposta – !! e !!!

Interface do metodo !!!:

def !!!(message: Any, timeout: Long = this.timeout) (implicit sender: Option[ActorRef] =

None): Future[T] = {

...

}

Feicao CompletableFuture:

trait CompletableFuture[T] extends Future[T] {

def completeWithResult(result: T)

def completeWithException(exception: Throwable)

def completeWith(other: Future[T])

// declarados em akka.dispatch.Future

def result: Option[T]

def await : Future[T]

}

15 / 61

Page 16: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Envios sıncronos com resposta – !! e !!!

Passos executados na execucao do metodo !!!:

1 Uma instancia de CompletableFuture e criada

2 A mensagem e depositada na fila do ator junto com umareferencia para a instancia do passo 1

3 Uma outra referencia para a instancia do passo 1 e devolvidaa quem fez a chamada do metodo

4 O resultado do processamento da mensagem e utilizado paracompletar a instancia criada no passo 1

16 / 61

Page 17: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores remotos

17 / 61

Page 18: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores remotos

Registro de um ator remotamente acessıvel:

object SampleRemoteServer extends Application {

Actor.remote.start("localhost", 2552)

Actor.remote.register("hello-service", Actor.actorOf[SampleActor])

}

Pesquisa e uso de um ator remotamente acessıvel:

object SampleRemoteClient extends Application{

/* helloActor representa uma RemoteActorRef */

val helloActor = Actor.remote.actorFor("hello-service", "localhost", 2552)

helloActor ! "Hello"

}

18 / 61

Page 19: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Formato e seriacao das mensagens

message RemoteMessageProtocol {

required UuidProtocol uuid = 1;

required ActorInfoProtocol actorInfo = 2;

required bool oneWay = 3;

optional MessageProtocol message = 4; // <- payload da mensagem

optional ExceptionProtocol exception = 5;

optional UuidProtocol supervisorUuid = 6;

optional RemoteActorRefProtocol sender = 7;

repeated MetadataEntryProtocol metadata = 8;

optional string cookie = 9;

}

Formatos suportados de seriacao:

Java, SBinary, JSON e Protobuf

19 / 61

Page 20: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Atores remotos

20 / 61

Page 21: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Advanced Message Queuing Protocol

21 / 61

Page 22: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Advanced Message Queuing Protocol

22 / 61

Page 23: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

MotivacaoAtoresAtores no projeto AkkaAdvanced Message Queuing Protocol

Advanced Message Queuing Protocol

Algumas implementacoes:

Apache Qpid

ZeroMQ

RabbitMQ

Utilizamos neste trabalho a implementacao de codigo abertoRabbitMQ

23 / 61

Page 24: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP

Uma ponte AMQP e:

Um componente intermediario entre o message broker e acamada de suporte a atores remotos

O componente responsavel pela criacao de objetos como filase exchanges no message broker

O componente responsavel pelo envio e recebimento demensagens

24 / 61

Page 25: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP

Principais caracterısticas:

Rotulacao de entidades por nome (e.g.: node1)

Suporte para acesso concorrente nos canais do RabbitMQ viahierarquia de atores

Suporte para separacao do fluxo de leitura/escrita dasmensagens em canais distintos

Suporte para criacao de objetos duraveis, transientes ouexclusivos com auto remocao

25 / 61

Page 26: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP

Principais caracterısticas (cont):

Dois tipos de pontes AMQP para acesso ao message broker :1 ServerAMQPBridge: Define o comportamento das entidades

com papel de servidor2 ClientAMQPBridge: Define o comportamento das entidades

com papel de cliente

Recebimento de mensagens via MessageHandler associado aspontes

26 / 61

Page 27: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP

27 / 61

Page 28: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – SupervisedConnectionWrapper

Metodos da classe SupervisedConnectionWrapper:

class SupervisedConnectionWrapper(

connection: ActorRef,

readChannel: ActorRef,

writeChannel: ActorRef) {

def clientSetup(setupInfo: RemoteClientSetup) { ... }

def serverSetup(setupInfo: RemoteServerSetup) { ... }

def publishTo(exchange: String, routingKey: String, message: Array[Byte]) { ... }

def close() { ... }

}

28 / 61

Page 29: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – SupervisedConnectionWrapper

29 / 61

Page 30: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – SupervisedConnectionWrapper

30 / 61

Page 31: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

31 / 61

Page 32: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

Broker AMQP

Virtual Host: /actor_host

32 / 61

Page 33: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

33 / 61

Page 34: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

actor.queue.in.node1

34 / 61

Page 35: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

actor.queue.in.node1

to.se

rver.

nod

e1

(bin

din

g)

35 / 61

Page 36: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

36 / 61

Page 37: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

JVM2

ClientAMQPBridge

(name=node1)(id=client1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

actor.queue.in.node1

to.se

rver.

nod

e1

(bin

din

g)

37 / 61

Page 38: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

JVM2

ClientAMQPBridge

(name=node1)(id=client1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

actor.queue.in.node1

to.se

rver.

nod

e1

(bin

din

g)

actor.queue.out.node1.client1

38 / 61

Page 39: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

JVM2

ClientAMQPBridge

(name=node1)(id=client1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

actor.queue.in.node1

to.se

rver.

nod

e1

(bin

din

g)

actor.queue.out.node1.client1

clien

t.nod

e1

.clie

nt1

(bin

din

g)

39 / 61

Page 40: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Estrutura

JVM1

ServerAMQPBridge

(name=node1)

JVM2

ClientAMQPBridge

(name=node1)(id=client1)

Broker AMQP

Virtual Host: /actor_hostactor.exchange.in.

node1

actor.queue.in.node1

to.se

rver.

nod

e1

(bin

din

g)

actor.queue.out.node1.client1

actor.queue.out.node1.clientn

clien

t.nod

e1

.clie

ntn

(bin

din

g)

clien

t.nod

e1

.clie

nt1

(bin

din

g)

JVMn

ClientAMQPBridge

(name=node1)(id=clientn)

40 / 61

Page 41: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Envio

41 / 61

Page 42: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Envio

Envio via WriteChannelActor:

...

case BasicPublish(exchange, routingKey, mandatory, immediate, message) =>

{

channel.foreach {

ch => ch.basicPublish(exchange, routingKey, mandatory, immediate, null, message)

}

}

...

42 / 61

Page 43: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Pontes AMQP – Recebimento

43 / 61

Page 44: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Novos componentes no Akka

44 / 61

Page 45: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Adaptacoes e alteracoes necessarias

1 Adaptacao dos valores host e porta recebidos nos metodos dabiblioteca do Akka para o padrao @host:porta

Exemplo:

Actor.remote.start(”localhost”, 2552) -> name: localhost@2552

45 / 61

Page 46: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Adaptacoes e alteracoes necessarias

1 Adaptacao dos valores host e porta recebidos nos metodos dabiblioteca do Akka para o padrao @host:porta

2 Novas entradas na secao remote do arquivo de configuracoesdo Akka:

Informacoes para conexao com o message brokerPolıticas de armazenamento e compartilhamento de canaisIdentificador utilizado na criacao das pontes cliente

46 / 61

Page 47: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Adaptacoes e alteracoes necessarias

remote {

...

layer = "akka.remote.amqp.AMQPRemoteSupport"

amqp {

broker {

host = "192.168.0.121"

port = 5673

virtualhost = "/actor_host"

username = "actor_admin"

password = "actor_admin"

}

policy {

storage {

mode = "PERSISTENT"

client_id {

suffix = "MYPLACE"

}

}

connection {

server = "ONE_CONN_PER_NODE"

client = "ONE_CONN_PER_NODE"

}

}

}

...

}

47 / 61

Page 48: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Adaptacoes e alteracoes necessarias

1 Adaptacao dos valores host e porta recebidos nos metodos dabiblioteca do Akka para o padrao @host:porta

2 Novas entradas na secao remote do arquivo de configuracoesdo Akka:

Informacoes para conexao com o message brokerPolıticas de armazenamento e compartilhamento de canaisIdentificador utilizado na criacao de pontes cliente

3 Novo campo no formato das mensagens para que o servidorremoto possa identificar o cliente remetente

48 / 61

Page 49: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Adaptacoes e alteracoes necessarias

message RemoteMessageProtocol {

required UuidProtocol uuid = 1;

required ActorInfoProtocol actorInfo = 2;

required bool oneWay = 3;

optional MessageProtocol message = 4;

optional ExceptionProtocol exception = 5;

optional UuidProtocol supervisorUuid = 6;

optional RemoteActorRefProtocol sender = 7;

repeated MetadataEntryProtocol metadata = 8;

optional string cookie = 9;

optional string remoteClientId = 10; // <- identificador do cliente

}

49 / 61

Page 50: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Pontes AMQPIntegracao com o Akka

Fluxo de envio de mensagens

50 / 61

Page 51: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trading SystemComparacao de desempenho

Trading System

51 / 61

Page 52: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trading SystemComparacao de desempenho

Rede de baixa latencia

Impl. Clientes ER/S 25% (µs) 50% (µs) 75% (µs) 95% (µs) Dur. (s)

Netty 1 501 1364 1433 1968 3266 59.85AMQP 1 263 3283 3361 3537 4550 113.91

Variacao -47.50% 140.69% 134.54% 79.73% 39.31% 54.06 (90.33%)Netty 2 894 1770 1796 1836 3290 33.57

AMQP 2 528 3234 3359 3552 4208 56.83Variacao -40.99% 82.71% 87.03% 93.46% 27.90% 23.26 (69.33%)

Netty 4 1245 2070 2517 2726 4214 24.09AMQP 4 906 3248 3614 4134 5088 33.12

Variacao -27.31% 56.91% 43.58% 51.65% 20.74% 9.03 (37.48%)Netty 8 1494 3274 3771 4745 6168 20.07

AMQP 8 1389 3567 4149 5168 6425 21.60Variacao -7.10% 8.95% 10.02% 8.91% 4.17% 1.52 (7.60%)

Netty 10 1542 4005 4330 5704 7041 19.45AMQP 10 1424 4396 5107 6136 7610 21.06

Variacao -7.72% 9.76% 17.94% 7.57% 8.08% 1.61 (8.31%)Netty 20 1568 8206 9646 10146 12015 19.13

AMQP 20 1503 8728 9964 10888 13430 19.96Variacao -4.15% 6.36% 3.30% 7.31% 11.78% 0.82 (4.33%)

Netty 40 1589 17616 18183 19436 21350 18.82AMQP 40 1518 18496 19525 20842 23360 19.75

Variacao -4.41% 5.00% 7.38% 7.23% 9.41% 0.87 (4.64%)Netty 80 1615 35403 36541 37863 40041 18.57

AMQP 80 1535 37915 39399 40943 43496 19.54Variacao -5.02% 7.10% 7.82% 8.13% 8.63% 0.97 (5.24%)

52 / 61

Page 53: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trading SystemComparacao de desempenho

Rede de baixa latencia

1 2 4 8 10 20 40 80NettyAMQP

NettyAMQP

1995 1119 893 669 648 637 629 6193797 1894 1104 720 702 665 658 651

238 366 339 105 118 65 71 80501 894 1245 1494 1542 1568 1589 1615263 528 906 1389 1424 1503 1518 1535

0200400600800

100012001400160018002000

1 2 4 8 10 20 40 80

ER/S - Total x Clientes

Quantidade de Clientes

Netty AMQP

53 / 61

Page 54: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trading SystemComparacao de desempenho

Rede de alta latencia

Impl. Clientes ER/S 25% (µs) 50% (µs) 75% (µs) 95% (µs) Dur. (s)

Netty 1 163 3387 4279 6265 13403 183.87AMQP 1 106 5998 7223 9624 17360 283.92

Variacao -34.97% 77.09% 68.80% 53.62% 29.52% 100.05 (54.41%)Netty 2 341 3418 4113 5635 11481 87.855

AMQP 2 152 8963 10784 14077 22309 196.815Variacao -55.43% 162.23% 162.19% 149.81% 94.31% 108.96 (124.02%)

Netty 4 479 5248 6334 8219 13892 62.5275AMQP 4 183 16231 18823 22940 34045 164.04

Variacao -61.80% 209.28% 197.17% 179.11% 145.07% 101.51 (162.35%)Netty 8 491 10528 12692 15780 23123 61.095

AMQP 8 198 26918 33224 41392 58513 151.73625Variacao -59.67% 155.68% 161.77% 162.31% 153.05% 90.64 (148.36%)

Netty 10 559 12737 14918 18099 25705 53.649AMQP 10 243 29653 34970 41936 56755 122.673

Variacao -56.27% 132.81% 134.41% 131.70% 120.79% 69.02 (128.66%)Netty 20 563 22392 26879 32957 47837 53.23

AMQP 20 323 47710 55291 64509 84108 92.92Variacao -42.63% 113.07% 105.70% 95.74% 75.82% 39.69 (74.58%)

Netty 40 607 41155 49748 60805 83042 49.33AMQP 40 390 62679 77785 98463 150803 74.21

Variacao -35.75% 52.30% 56.36% 61.93% 81.60% 24.87 (50.42%)Netty 80 889 36654 39031 50225 103695 33.41

AMQP 80 628 66128 77563 94990 139215 42.34Variacao -29.36% 80.41% 98.72% 89.13% 34.25% 8.93 (26.74%)

54 / 61

Page 55: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trading SystemComparacao de desempenho

Rede de alta latencia (wireless)

55 / 61

Page 56: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trading SystemComparacao de desempenho

Fluxo nas redes de alta e baixa latencia

56 / 61

Page 57: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trabalhos futurosConclusoes

Trabalhos futuros

Melhoria no tratamento de erros nas pontes AMQP

Aproveitar a hierarquia de supervisao ja definida nas pontesAMQP para o tratamento de errosImplementar suporte a reconexao e restauracao do estado dosatores relacionados a ponte AMQP no caso de desconexoes oufalhas de rede

Experimentos em um ambiente de computacao em nuvem

Fazer as alteracoes necessarias para que nossa implementacaode atores remotos possa ser implantada em uma infraestruturade computacao em nuvemFazer uma avaliacao experiemental do Trading System nanuvem utilizando uma quantidade de clientes bem maiores doque as utilizadas em nossos experimentos

57 / 61

Page 58: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trabalhos futurosConclusoes

Conclusoes

Conclusao:

As duas classes de sistemas estudadas neste trabalho possuem boasinergia.

58 / 61

Page 59: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trabalhos futurosConclusoes

Conclusoes

O emprego de um message broker ainda traz outros benefıcios,como por exemplo:

Mensagens duraveis: envios de mensagens para entidades queestao temporariamente fora de execucao

Ferramentas administrativas: a maioria dos message brokerspossuem ferramentas para administraca e monitoramento

Simplificacao de acesso: com a identificacao por notesm,apenas o endereco IP do message broker precisa ser conhecido

59 / 61

Page 60: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trabalhos futurosConclusoes

Conclusoes

Ainda que o modelo de atores venha ganhando muita atencaoem programas de alta concorrencia, o modelo nao tememprego difundido em ambientes corporativos

Nossa expectativa e que a integracao com sistemas orientadosa troca de mensagens contribua para a adocao do modelo deatores em tais ambientes

60 / 61

Page 61: Uso de padrão AMQP para transporte de mensagens entre ...thadeurc/resources/slides-defesa.pdfA especi ca˘c~ao Java Message Service (JMS) de ne uma API padr~ao para que programas

IntroducaoAtores remotos com padrao AMQP

Resultados experimentaisTrabalhos futuros e conclusoes

Trabalhos futurosConclusoes

Fim

Obrigado!

61 / 61