Comunicaçãoentre processos: Mensagens



Documentos relacionados
UNIVERSIDADE. Sistemas Distribuídos

A interface de uma mensagem é extremamente flexível e permite várias formas de customização de conteúdo. Figura 1 - Tipos de Mensagens JMS

Tópicos em Sistemas Distribuídos. Modelos de Comunicação


Sistemas Distribuídos. Coulouris Capítulo 4

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Programação Paralela com Troca de Mensagens. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Sistemas Distribuídos. Nomeação. Nazareno Andrade. Universidade Federal de Campina Grande 02/2008

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Sistemas Distribuídos

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Sistemas Distribuídos

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE

Programação com sockets (em Java)

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Comunicação entre Processos

Camada de Transporte. Bruno Silvério Costa

REDES DE COMPUTADORES

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Aula 30 - Sockets em Java

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Sistemas Distribuídos

Curso de especialização em Teleinformática Disciplina Sistemas Distribuídos Prof. Tacla

Programação de Sockets

Capítulo 7 CAMADA DE TRANSPORTE

FTP FILE F TRANSFER PROTOCOL. Tópicos

CAMADA DE TRANSPORTE

SISTEMAS DISTRIBUIDOS

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Distributed Systems Principles and Paradigms

Considerações no Projeto de Sistemas Cliente/Servidor

Message Driven Beans. Apresentação. Introdução Implementação de MDBs Deployment no JBoss Java Messaging Service Exemplo

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

CST em Redes de Computadores

Paradigma Cliente/Servidor

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Comunicação em Sistemas Distribuídos

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

Sistemas Distribuídos

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Redes de Computadores

Rede de Computadores

Capítulo 7 CAMADA DE TRANSPORTE

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP

Utilização do Appia. Tolerância a Faltas Distribuída 2003/04. Nuno Carvalho nunomrc@di.fc.ul.pt

P L A N O D E D I S C I P L I N A

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Cliente-servidor com Sockets TCP

TCP é um protocolo de TRANSMISSÃO, responsável pela confiabilidade da entrega da informação.

Comunicação entre processos

SISTEMAS DISTRIBUÍDOS

Tutorial JMS com ActiveMQ Nível: Introdutório Autor: José Damico IBM Data: 26 de novembro de 2006

Sistemas Distribuídos Grupos

Plataforma para Agentes

1 Redes de Computadores - TCP/IP Luiz Arthur

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

3. Comunicação em Sistemas Distribuídos

JXTA. Alessandro Vasconcelos Ferreira de Lima.

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Enterprise Java Beans

Prof. Marcelo Cunha Parte 5

Programação de sockets com TCP

Camada de Transporte

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Prof. Luís Rodolfo. Unidade III REDES DE COMPUTADORES E TELECOMUNICAÇÃO

Protocolos Hierárquicos

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

INF1013 MODELAGEM DE SOFTWARE

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Redes. Pablo Rodriguez de Almeida Gross

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Comunicação entre Processos

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Sistemas Distribuídos

MÓDULO 8 Modelo de Referência TCP/IP

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

A Camada de Transporte

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Arquitetura de Redes de Computadores. Bruno Silvério Costa

Prof. Samuel Henrique Bucke Brito

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Middleware de Aplicações Paralelas/Distribuídas

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Alan Menk Santos Redes de Computadores e Telecomunicações. Camada de Transporte 03/06/2013


Transcrição:

Sistemas Distribuídos Comunicaçãoentre processos: Mensagens Nazareno Andrade Universidade Federal de Campina Grande 02/2008

Fundamentos Coordenando processos Construíndo sistemas Sistemas construídos 2

Fundamentos Coordenando processos Mensagens (e fluxos): UDP, TCP, MPI, Enfileiramento, Gossiping RPC e objetos distribuídos: RMI Mensagens vs. RPC Nomeação Sincronização e replicação Construíndo sistemas Sistemas construídos 3

Objetivos Dominar primitivas usadas para a comunicação entre processos Visão geral de paradigmas de comunicação entre processos 4

Fundamental: Mensagens e RPC/RMI Tudoéconstruídocom TCP e UDP Mensagens Diretocom primitivastcp ouudp Primitivasmaissofisticadas: MPI, enfileiramento, multicast, epidemias, boatos RPC/RMI Abstração de nível mais alto que mensagens 5

6

Transporte: TCP, UDP Tipicamente, um programador sólida com a camada de transporte As camadas inferiores são responsáveis por enviar dados brutos sem garantias de: Recebimento Ordem Integridade A camada de transporte torna isso tratável para nós 7

TCP vs. UDP Em resumo, confiabilidade vs. desempenho Propriedades do TCP não são sempre importantes 8

Antes de mais detalhes Lembremos 2 ou 3 coisas Camada de rede (no nosso caso IP): Responsável por comunicação best-effort de pacotes entre nós Pacotes podem seguir rotas diferentes ou não chegar Camada de transporte: Comunicação entre processos Multiplexamos a comunicação do IP com portas 9

As primitivas mais básicas da comunicação entre processos são send e receive Se são bloqueantes, a comunicação é síncrona Uma última abstração é o soquete: socket any port agreed port socket client Internet address = 138.37.94.248 message other ports server Internet address = 138.37.88.249 10

UDP: como e pra quê UDP éo IP no nível do transporte Transmissão de datagramas convertidos em pacotes Checksum opcional Nenhuma garantia de chegada ou ordenação Não há retransmissão 11

Primitivas UDP Send() um datagrama, pode ser não-bloqueante Receive() bloqueante de um datagrama Recebe de qualquer fonte Pode ter um timeout de espera Mensagens são enviadas quando dadas ao IP e são postas em um buffer de recebimento no destino até o receive() O que pode dar errado aqui? 12

Traduzindoemum modelo Mensagens podem ser perdidas Nos buffers, por exemplo A comunicação está sujeita a falhas de omissão Mensagens podem sair de ordem Seguindo caminhos diferentes no roteamento IP A comunicação está desordenamento das msgs Isso nos diz algo sobre que tipo de sistemas devemos construir sobre o UDP 13

O UDP éútil! Um monte de problemas pode ser solucionado no modelo UDP DNS, DCHP, traceroute, SNMP, NTP Transmissão de vídeo Transmissão de áudio Utilização eficiente de banda em alto desempenho... 14

Exemplo UDP 15

TCP: como e para quê TCP soma ao IP Confiabilidade Fluxos de dados (em conexões) Segmentação automática dos fluxos em pacotes Garantias com retransmissões, ordenação e checksums Controle de fluxo Buffering (TCP éuma mãe) A que custo? O que disso poderia ser feito sobre UDP? Haveria ganhos? 16

Primitivas TCP accept() e connect() estabelecem uma conexão send() e receive() de bytes, não de datagramas Abstraem: Tamanhos de mensagem Perdas de mensagens Diferenças na velocidade de envio e recebimento (fluxo) Duplicação e ordenação de mensagens Destino das mensagens! (outro lado da conexão) 17

E o modelo disso? Não há falhas de omissão ou desordenação de mensagens Timeouts escondem de você que o mundo é assíncrono Há falhas de fail-stop Mas quando a conexão cai, falhou o canal ou o processo? Processos não detectam imediatamenteque mensagem não foi recebida Têm que esperar o ack não vir 18

Exemplo TCP 19

Quando TCP, quando UDP Comparemos quem usa um e outro: UDP: grupo 1: NTP, DHCP, DCP grupo 2: vídeo e áudio TCP: HTTP, FTP, SMTP Fora isso, hoje em dia, se usa UDP para driblar segurança que visa TCP NATs e alguns firewalls 20

Primitivas mais apropriadas para desenvolvedores send() e receive() são primitivas Comumente, émais conveniente usar abstrações de nível mais alto: Comunicação 1 N Multicast Comunicação eficiente em grupo MPI Observer-like Enfileiramento Disseminação de informação Protocolos epidêmicos... (Pra não falar em RPC/RMI) 21

Message Passing Interface: por que Queremos simular uma placa de ferro recebendo calor de duas fontes Dividimos a placa em pedaços, pedaços em processadores Simula t em um pedaço, comunica resultado com vizinhos Até estabilizar Que tipos de primitiva são úteis para computação paralela? E se queremos poder rodar a aplicação em clusters de qualquer tamanho? E se fôssemos físicos? 22

MPI: O queé Antes de MPI, mil empresas forneciam mil bibliotecas MPI éum padrãopara o desenvolvimento de aplicações paralelas com passagem de mensagens Émuitousado Hoje existem mil implementações do padrão Tudo que uma aplicação paralela pode querer: Comunicação ponto-a-ponto transparente, comunicação em grupo, abstrações para escrever aplicações portáveis... 23

Uma idéia O básico para cada processo: MPI_INIT MPI_FINALIZE MPI_COMM_SIZE MPI_COMM_RANK MPI_SEND MPI_RECV MPI_BCAST MPI_REDUCE 24

int main( int argc, char *argv[]){ int n, myid, numprocs, i; double mypi, pi, h, sum, x; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid == 0) { printf("enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; else { h = 1.0 /(double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h *((double)i-0.5); sum += (4.0/(1.0 + x*x)); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT)); } } MPI_Finalize(); 25 return 0; }

Mais algumas primitivas MPI MPI_send bloqueia até msg estar em buffer para envio MPI_Ssend bloqueia até destino receber mensagem MPI_Rsend dispensa handshake e é mais eficiente Sópode ser chamada se destino estáem receive() Isso dáuma idéia do mundo da otimização de comunicação... 26

Enfileiramento (Message queueing) E se queremos comunicação com o mínimo possível de acoplamento entre partes que se comunicam? Não quero saber a interface dos componentes láfora Não quero saber se os componentes estão online ou não Não quero bloquear até eles receberem a mensagem Mas quero comunicação confiável! Email é assim Sistemas baseados em publish/subscribe podem ser assim 27

Usode enfileiramento O princípio é que clientes põem mensagens em filas Filas são persistentes, implementadas por servidores Destinos lêem mensagens de suas filas Serve para aplicações pouquíssimo acopladas E.g.: Conectar diversas operações legadas Comunicação assíncrona e confiável: email entre apps. Implementado com Message Oriented Middleware: IBM WebSphere MQ, Java Messaging Service, JBoss Messaging Admin instala e administra filas, aplicações usam-nas para se comunicar 28

29

public class Chat implements javax.jms.messagelistener{ /* Run the Chat client */ public static void main(string [] args){ try{ // args[0]=topicname; args[1]=username; args[2]=password Chat chat = new Chat(args[0],args[1],args[2]); // Read from command line BufferedReader commandline = new java.io.bufferedreader(new InputStreamReader(System.in)); // Loop until the word "exit" is typed while(true){ String s = commandline.readline( ); if (s.equalsignorecase("exit")){ chat.close( ); System.exit(0); } else chat.writemessage(s); } } catch (Exception e){ e.printstacktrace( ); } (...) } 30

public Chat(String topicname, String username, String password) throws Exception { InitialContext jndi = new InitialContext(env); // Look up a JMS connection factory TopicConnectionFactory confactory = (TopicConnectionFactory)jndi.lookup("TopicConnectionFactory"); // Create a JMS connection TopicConnection connection = confactory.createtopicconnection(username,password); // Create two JMS session objects TopicSession pubsession = connection.createtopicsession(false, Session.AUTO_ACKNOWLEDGE); TopicSession subsession = connection.createtopicsession(false, Session.AUTO_ACKNOWLEDGE); // Look up a JMS topic Topic chattopic = (Topic)jndi.lookup(topicName); // Create a JMS publisher and subscriber TopicPublisher publisher = pubsession.createpublisher(chattopic); TopicSubscriber subscriber = subsession.createsubscriber(chattopic); // Set a JMS message listener subscriber.setmessagelistener(this); } // Start the JMS connection; allows messages to be delivered connection.start( ); 31

/* Receive message from topic subscriber */ public void onmessage(message message) { try { TextMessage textmessage = (TextMessage) message; String text = textmessage.gettext( ); System.out.println(text); } catch (JMSException jmse){ jmse.printstacktrace( ); } } /* Create and send message using topic publisher */ protected void writemessage(string text) throws JMSException{ TextMessage message = pubsession.createtextmessage( ); message.settext(username+" : "+text); publisher.publish(message); } 32

Multicast Comunicação 1 vários A priori, existe no nível da rede (IP Multicasting) Quando tudo está configurado e permitido Geralmente éfeito sobre UDP Processos entram em um grupo de multicast tudo que éenviado para o grupo érecebido por todos nele Temos que limitar o alcance do multicast Freqüentemente, fazemos no nível da aplicação Note que broadcast é um caso particular de multicast Broad/Multicast confiável e ordenado é uma primitiva poderosa 33

Exemplo com multicast 34

Boatos e Epidemias como algo útil Problema: Muitos nós, uma informação que precisa ser difundida a todos periodicamente Solução 1: broadcasts o tempo todo O que émelhor que isso? E se eunão conheço a topologia da rede? 35

Boatos e epidemias Boatos e epidemias são duas coisas que se espalham eficientemente em topologias desconhecidas Essencialmente, boatos == epidemias 36

Protocolo básico de boato De aplicação pra aplicação: Escolha de nós Informação a ser trocada Consolidação da informação Em geral, espalha informação em o(log(n)) rounds, independente de N 37

Exemplos com epidemias e boatos Disseminação éo uso básico, mas existe mais um mundo láfora Disseminação da informação: Roteamento IP Gerência de recursos: Quem éo servidor mais carregado no sistema? Visão comum para detecção de falhas Computação: Se a cada rodada, v i, v k (v i + v k )/2, alguma hora v k seráa média para todos os nós A partir disso, podemos estimar o tamanho de um sistema! 38

Onde estamos Mensagens Primitivas básicas para envio e recebimento Paradigmas mais sofisticados RPCe RMI 39

RPC (e RMI) Outra apresentação 40

RPC vs. Mensagens RPC ou RMI: Transparências Facilidade de programação Semântica clara Sincronismo na comunicação Mensagens: Eficiência Síncrono ou assíncrono Heterogeneidade de plataformas e versões 41

Recapitulando Mensagens (e fluxos) UDP TCP MPI Enfileiramento Gossiping RPC e objetos distribuídos: RMI Mensagens vs. RPC 42

Mais sobre esse assunto Mundo UDP/TCP: RCP, umamodificação do TCP para otimizar tempo de download Como o Skype usa UDPpara contornar NATs MPI: Como rodar uma aplicação MPI em um sóprocessador para testá-la Enfileiramento: Apache ActiveMQ, JMS Gossiping: Introdução ao tema 43