Você está na página 1de 31

Sistema Distribuido

Prof: Carlos Alberto Pereira Costa Email:carlos.costa83@yahoo.com.br

Sistema Distribuido

Comunicao entre Processos

Sistema Distribuido

API para Protocolos Internet


Caractersticas de Comunicao
A comunicao entre processos se d por datagramas UDP e fluxos TCP Mensagens entre processos suportada porcomunicao send/receive Comunicao Sncrona send e receive bloqueantes Comunicao Assncrono send no bloqueante receive bloqueante / no bloqueante

Sistema Distribuido

API para Protocolos Internet


Caractersticas de Comunicao

Destinos de Mensagens Para IP + Porta Local. Exemplo: 192.168.1.14:25 Portal Local: destino de mensagem representado por valor inteiro (2^16 portas = 65.536 portas)

Confiabilidade Validade - garantia da entrega Integridade no corrompidas e sem duplicao Ordenamento

Sistema Distribuido

API para Protocolos Internet


Soquetes (Sockets)

Abstraes utilizadas pelo UDP e TCP

So pontos de destino para a comunicao entre processos


Originrios no UNIX BSD Presentes tambm em


Outras versoes do Unix Linux Windows Macintosh

Sistema Distribuido

API para Protocolos Internet


Soquetes (Sockets)

Sistema Distribuido

API para Protocolos Internet


Comunicao por Datagrama UDP Enviado de remetente para destino sem confirmao de recebimento ou repetio de envio

Tamanho da mensagem

permite at 64Kbytes por datagrama Necessidade eventual de fragmentao

Bloqueio

Normalmente receive bloqueante Se nenhum processo existir no destino, a mensagem descartada sem conhecimento do remetente Se o processo tiver tarefas a executar, deve utilizar threads separadas

Sistema Distribuido

API para Protocolos Internet


Emprego da Comunicao UDP

Agilidade versus Confiabilidade


Entrega garantida (TCP) sobrecarrega o servio

Armazena informaes de estado (origem/destino) Transmite mensagens extra Latncia no remetente Lentido no receptor

Para certas aplicaes aceitvel servios expostos a falhas

Domain Name Service Voice Over IP (VOIP)

Sistema Distribuido

API para Protocolos Internet API Java para UDP / UDPClient

Sistema Distribuido

API para Protocolos Internet


API Java para UDP / UDPServer

Sistema Distribuido

API para Protocolos Internet


Comunicao por Fluxo TCP
Abstrao de fluxo de bytes Tamanho de mensagens

De dados muito pequenos a muito grandes Controle realizado pela camada TCP

Mensagens perdidas

Esquema de confirmao Se o remetente no receber confirmao, reenvia a mensagem Obs: Janela Deslizante (Comer, 2000)

Sistema Distribuido

API para Protocolos Internet


Comunicao por Fluxo TCP

Controle de Fluxo Duplicao e Ordenamento Identificadores associados aos datagramas IP Permite rejeitar duplicatas / ordenar mensagens Mensagens perdidas Conexo estabelecida no incio (connect / accept) Modelo causa sobrecarga

Sistema Distribuido

API para Protocolos Internet


Emprego da Comunicao TCP
Transferncia de Hipertexto HTTP Transferncia de Arquivos FTP Acesso a computadores remotos via Terminal Telnet Protocolo de envio de e-mail - SMTP

Sistema Distribuido

API para Protocolos Internet


API Java para TCP / TCPClient

Sistema Distribuido

API para Protocolos Internet


API Java para TCP / TCPServer

Sistema Distribuido

API para Protocolos Internet


API Java para TCP / TCPServer / Classe Connection

Sistema Distribuido

Representao Externa de Dados e Empacotamento

Representao da informao em programas em execuo


Strings Arrays Colees Objetos Complexos Estruturas de dados avanadas (rvores, grafos)

Representao da informao nos canais de comunicao

Sequncia pura de bits

Necessidades

Converso no remetente Transmisso da sequncia de dados Reconstruo no destinatrio

Sistema Distribuido

Representao Externa de Dados


Diferenas entre dados

Representao difere de mquina para mquina Ex: ordem big-endian versus ordem little-endian Inteiros e nmeros em ponto-flutuante divergem, eventualmente ASCII versus UTF-8 Mtodos de Transmisso Formato remetente -> formato externo -> formato destinatrio Formato remetente -> converso no destino (se necessrio)

Sistema Distribuido

Representao Externa de Dados


Padro aceito para representao de estruturas de dados e valores primitivos

Modelos

Representao Comum da Dados CORBA Serializao de Objetos JAVA Extensible Markup Language - XML

Sistema Distribuido

Representao Externa de Dados


CDR/CORBA

CORBA 2.0

Representa todos os tipos de dados de argumentos e retornos de procedimento

Quinze tipos primitivos, dentre eles: short (16-bit), long (32bits), unsigned short, unsigned long, float (32-bits), double (64-bits), char, boolean (TRUE, FALSE), octet (8-bits), any

Tipos Compostos: sequence, string, array, struct, enumerated,

Sistema Distribuido

Empacotamento / Marshalling
CORBA
struct { string nome; string lugar; unsigned long ano; } Struct Pessoa, valor: {Smith, London, 1984}

Sistema Distribuido

Empacotamento / Marshalling
CORBA
Struct Pessoa, valor: {Smith, London, 1984}

Sistema Distribuido

Empacotamento / Marshalling
JAVA RMI

Objetos so instncias de classes

Classes precisam ser serializveis


Implementar a interface Serializable

Em Java, serializar significa: prepara o objeto para armazenamento em disco ou transmitido via rede

Desseriabilizao o processo reverso

Premissa: o processo de reconstruo do objeto no possui nenhum conhecimento da estrutura do objeto transmitido

Sistema Distribuido

Empacotamento / Marshalling
JAVA RMI
Classe Pessoa

Sistema Distribuido

Empacotamento / Marshalling
JAVA RMI
Classe Pessoa, serializada

Sistema Distribuido

Empacotamento / Marshalling XML

Assim como HTML, XML derivada de SGML Itens XML so rotulados com Strings de marcao (tags)

Tags esto relacionadas com a estrutura do dado

Utilizada, no contexto de SD, para permitir a comunicao entre WebServices


Dados XML so empacotados em formato textual

CDR Corba e Java RMI empacotam em binrio

E quanto a transmisso de multimdia por XML?

Base64 Encode

Sistema Distribuido

Empacotamento / Marshalling
XML

Sistema Distribuido

Estudo de Caso
Message Passing Interface - MPI

Padro de comunicao de dados em computao paralela

Infra-estrutura para transmisso de mensagens entre vrios ns ou processadores de um cluster


Oferece um paradigma de programao leve e eficiente

Utilizado em classes de sistema onde performance


primordial: computao de alto desempenho

Padro herda a simplicidade e poder do modelo send/ receive (incio da aula), com extenses teis

Sistema Distribuido

Estudo de Caso
Message Passing Interface - MPI

Sistema Distribuido

Estudo de Caso
Message Passing Interface - MPI

Sistema Distribuido

Estudo de Caso
Message Passing Interface - MPI

Exemplo de aplicao de MPI Cenrio

Cluster de alto desempenho para quebra de senhas Alvo: senhas de sgbd mysql ou sistemas linux Necessidade de muito processamento Um servidor master, dois servidores slaves, virtualizados

Padro utilizado para troca de mensagens entre processos: MPICH - Implementao Multiplataforma do Padro MPI

Você também pode gostar