Comunica¸c˜
ao
Geanderson Esteves dos Santos
Pontif´ıcia Universidade Cat´olica de Minas Gerais Instituto de Ciˆencias Exatas e Inform´atica
Apresenta¸c˜
ao da disciplina
Introdu¸
c˜
ao
Desafios e caracter´ısticas
Arquitetura Comunica¸c˜ao Nomea¸c˜aoControle de tempo e sincronismo Transa¸c˜ao e controle de concorrˆencia Seguran¸ca
Arquitetura Orientada a Servi¸
cos (SOA) e WebServices
Sistemas de arquivos distribu´ıdos
Aplica¸
c˜
oes m´
oveis
Semin´
arios
A comunica¸
c˜
ao ´
e o cora¸
c˜
ao de todo e qualquer sistema
distribu´ıdo, assim n˜
ao faz sentido estudarmos sistemas
distribu´ıdos sem examinar em detalhes como m´
aquinas trocam
informa¸
c˜
oes
Esta comunica¸
c˜
ao ser´
a baseada na troca de mensagens
oferecida pela rede
Sistemas Distribu´ıdos Modernos frequentemente s˜
ao
compostos de milhares de m´
aquinas ou at´
e mesmo milh˜
oes de
processos dispersos na rede com comunica¸
c˜
ao n˜
ao confi´
avel!!
A menos que tais primitivas de comunica¸
c˜
ao sejam
substitu´ıdas por algo melhor, o desenvolvimento de aplica¸c˜
oes
Premissa: toda comunica¸c˜
ao em sistemas distribu´ıdos tem
por base o envio e recep¸
c˜
ao de mensagens no n´ıvel mais baixo
da pilha de comunica¸
c˜
ao em raz˜
ao da ausˆ
encia de mem´
oria
compartilhada
Embora esta id´
eia b´
asica pare¸ca simples, os processos que
desejam trocar informa¸
c˜
oes devem acordar a forma como os
bits/bytes ser˜
ao enviados – protocolo.
Exemplo:
A envia informa¸
c˜
oes escritas em Francˆ
es e codificadas em
C´
odigo EBCDIC, enquanto B aguarda as informa¸
c˜
oes em
Inglˆ
es e codificada em C´
odigo ASCII
EBCDIC (Extended Binary Coded Decimal Interchange Code):
codifica¸
c˜
ao de caracteres 8 bits descendente do C´
odigo BCD
(6 bits) criado pela IBM no in´ıcio dos anos 1960 e usado no
IBM 360
Processos que desejam trocar informa¸
c˜
oes devem acordar na
forma como os bits/bytes ser˜
ao enviados.
Modelo OSI: prop˜
oe um modelo de referˆ
encia que claramente
identifica os v´
arios n´ıveis/camadas bem como nomes e
servi¸
cos que devem oferecer;
OSI (Open System Interconnection): foi proposto para
permitir que sistemas abertos se comuniquem;
“open systems”: sistema preparado para comunicar-se com outro sistema aberto utilizando as regras padr˜oes que governam o formato, conte´udo e significado das mensagens Tais regras s˜ao formalizadas e chamadas de protocolos
Fundamentos de Redes
Tipos de redes
Esquemas de comuta¸c˜ao Protocolos
Interliga¸c˜ao de redes
Comunica¸c˜
ao entre Processos
API de protocolos Internet Representa¸c˜ao externa de dados e Empacotamento
Invoca¸
c˜
ao Remota
Protocolos de Requisi¸c˜ao/Resposta
Chamadas de Procedimento Remoto (RPC) Invoca¸c˜ao de M´etodo Remoto (RMI)
Comunica¸c˜
ao Indireta
Caracter´ısticas e t´ecnicas Sistemas publicar-subescrever
Fundamentos de Redes
Tipos de redesEsquemas de comuta¸c˜ao Protocolos
Interliga¸c˜ao de redes
Comunica¸c˜
ao entre Processos
API de protocolos Internet Representa¸c˜ao externa de dados e Empacotamento
Invoca¸
c˜
ao Remota
Protocolos de Requisi¸c˜ao/Resposta
Chamadas de Procedimento Remoto (RPC) Invoca¸c˜ao de M´etodo Remoto (RMI)
Comunica¸c˜
ao Indireta
Caracter´ısticas e t´ecnicas Sistemas publicar-subescrever Fila de mensagens
Esquemas de comuta¸
c˜
ao
Broadcast
Tudo ´e enviado para todos os nodos Comuta¸c˜ao de circuitos
Estabelecimento de canais dedicados de comunica¸c˜ao Comuta¸c˜ao de pacotes
Sistema de armazenamento e encaminhamento de pacotes com base nas informa¸c˜oes de origem e destino
Frame Relay
Avan¸co na comuta¸c˜ao de pacotes com a passagem de pacotes em tempos reais
Protocolos
Protocolos
Camadas
— Suites — Portas — Endere¸camento
Premissa: para permitir que computadores troquem
informa¸
c˜
oes pela rede, ´
e preciso acordar quais protocolos
ser˜
ao usados na comunica¸
c˜
ao
Existem dois tipos gerais de protocolos de comunica¸
c˜
ao:
“connection oriented”: necess´ario estabelecer uma conex˜ao e possivelmente negociar que protocolo ser´a utilizado e, somente depois, efetuar a troca de mensagens de conex˜ao “connectionless”: N˜ao ´e necess´ario estabelecimento de conex˜ao, assim o transmissor simplesmente transmite a mensagem quando estiver pronto
Formato de uma mensagem t´ıpica trocada na rede
Protocolos
Camadas
— Suites — Portas — Endere¸camento
“protocol suite” ou “protocol stack”: cole¸c˜ao de protocolos usados em um sistema em particular
´
E importante distinguir o modelo de referˆencia dos protocolos comumente utilizados nos sistemas de comunica¸c˜ao dispon´ıveis Iniciando pelas camadas inferiores:
Protocolos das Camadas de N´ıvel Baixo Protocolos de Transporte
Protocolos de Camadas Superiores Protocolos de Middleware
Protocolos
Camadas
— Suites — Portas — Endere¸camento
Camada f´ısica: cont´em a especifica¸c˜ao e implementa¸c˜ao dos bits e da transmiss˜ao entre transmissor e receptor
Camada de enlace: prescreve a transmiss˜ao como uma s´erie de bits no frame para permitir o controle de fluxo e de erros Camada de rede: descreve como pacotes em uma rede de computadores ser˜ao roteados e/ou encaminhados
Observa¸c˜ao: Para muitos sistemas distribu´ıdos, a interface da camada mais baixa ´e aquele disposto na camada de redes e n˜ao na camada f´ısica
Protocolos
Camadas
— Suites — Portas — Endere¸camento
Camada de transporte: provˆe as facilidades de comunica¸c˜ao que possibilitam a troca de mensagens entre os processos – base para a maioria dos sistemas distribu´ıdos
Protocolos da internet:
Transmission Control Protocol (TCP): orientado a conex˜ao, confi´avel e comunica¸c˜ao orientada por “stream” (fluxo de bytes)
User Datagram Protocol (UDP): comunica¸c˜ao n˜ao confi´avel Real-time Transport Protocol (RTP): especifica formato de pacotes para tempo real sem prover mecanismo que garanta a entrega do dado.
Protocolos
Camadas
— Suites — Portas — Endere¸camento
Camada de sess˜ao: vers˜ao melhorada da camada de transporte tem por fun¸c˜ao oferecer controle de sess˜ao e facilidades de sincroniza¸c˜ao
Camada de apresenta¸c˜ao: se preocupa com a representa¸c˜ao canˆonica dos dados bem como com a estrutura¸c˜ao dos mesmos Camada de aplica¸c˜ao: aplica¸c˜ao que provˆe um ou uma cole¸c˜ao de servi¸cos
Modelo OSI foi originalmente proposto para acomodar um cole¸c˜ao de aplica¸c˜oes padr˜oes de rede tais como email, transferˆencia de arquivo e emula¸c˜ao de terminal
Protocolos
Protocolos
Camadas — Suites —
Portas
— Endere¸camento
Protocolos
Protocolos
Camadas — Suites — Portas —
Endere¸camento
Protocolos de “Middleware”
Proposto para prover servi¸
cos comuns e protocolos a serem
utilizados por diferentes aplica¸
c˜
oes;
´
E uma aplica¸
c˜
ao que est´
a presente em muitas camadas de
aplica¸
c˜
ao, mas que cont´
em protocolos de prop´
osito geral que
garantem suas pr´
oprias camadas
Este protocolos devem suportar servi¸
cos de comunica¸c˜
ao de
alto n´ıvel de forma transparente
Suporte para servi¸
cos de comunica¸c˜
ao de forma transparente:
“data (un)marshaling”: necess´ario para sistemas integrados “naming protocols”: facilitar o compartilhamento de recursos “security protocols”: para seguran¸ca de comunica¸c˜ao “scaling mechanisms”: para replica¸c˜ao e salvaguarda
Adaptive Reference Model
Para melhor entender as v´
arias alternativas de comunica¸
c˜
ao
que o middleware pode ofererecer para as aplica¸
c˜
oes, podemos
ver o middleware como um servi¸co adicional no modelo
cliente/servidor
Por exemplo: considere um sistema de correio eletrˆ
onico, cujo
n´
ucleo do sistema de entrega de mensagens pode ser visto
como um servi¸
co de comunica¸c˜
ao do “middleware”
Cliente ´
e representado pelo agente do usu´
ario que permite ao
mesmo a composi¸
c˜
ao, envio e recep¸c˜
ao de emails
Um agente transmissor repassa este email para o sistema de
entrega de mensagens – respons´
avel pela entrega da
mensagem ao sistema de entrega de mensagens do
destinat´
ario
Para melhor entender as v´
arias alternativas de comunica¸
c˜
ao
que o middleware pode ofererecer para as aplica¸
c˜
oes, podemos
ver o middleware como um servi¸co adicional no modelo
cliente/servidor
comunica¸
c˜
ao transiente: servidor de comunica¸
c˜
ao descarta
mensagens quando n˜
ao podem ser entregues no pr´
oximo
servidor ou mesmo no solicitante da requisi¸
c˜
ao
comunica¸
c˜
ao persistente: mensagem ´
e armazenada no
servidor de comunica¸
c˜
ao pelo tempo que for necess´
ario de
modo que a entrega da mensagem seja garantida
comunica¸
c˜
ao ass´ıncrona: remetente continua o seu
processamento imediatamente ap´
os submeter a mensagem
comunica¸
c˜
ao s´ıncrona: remetente ´
e bloqueado at´
e que sua
requisi¸
c˜
ao seja enviada/processada pelo receptor.
Interliga¸
c˜
ao
de Redes
Roteador Ponte (Bridge) Hub Switch Modem VPN NAT FirewallInterliga¸
c˜
ao de Redes - Virtual Private Network (VPN)
Interliga¸
c˜
ao de Redes - Firewall
Fundamentos de Redes
Tipos de redes
Esquemas de comuta¸c˜ao Protocolos
Interliga¸c˜ao de redes
Comunica¸c˜
ao entre Processos
API de protocolos Internet Representa¸c˜ao externa de dados e Empacotamento
Invoca¸
c˜
ao Remota
Protocolos de Requisi¸c˜ao/Resposta
Chamadas de Procedimento Remoto (RPC) Invoca¸c˜ao de M´etodo Remoto (RMI)
Comunica¸c˜
ao Indireta
Caracter´ısticas e t´ecnicas Sistemas publicar-subescrever
Processos
Processos
API de protocolos Internet
Caracter´ısticas da comunica¸c˜ao entre processos
Comunica¸c˜ao s´ıncrona e ass´ıncrona Destinos de mensagem
Confiabilidade Ordenamento
Sockets
De acordo com KUROSE: ”socket ´e a interface entre a camada de aplica¸c˜ao e a de transporte dentro de uma m´aquina”.
Cada socket tem um endere¸co ´unico na internet. Este endere¸co ´e formado por um n´umero IP e por um n´umero de porta.
Processos
API de protocolos Internet - Sockets
Processos
API de protocolos Internet - Sockets
Uma API de comunica¸c˜ao via sockets oferece classes que permitem o envio e o recebimento de dados
Os sockets podem utilizar:
UDP (User Datagram Protocol): Comunica¸c˜ao via datagramas n˜ao orientada a conex˜ao
TCP (Transmission Control Protocol): Comunica¸c˜ao via stream orientada a conex˜ao
Ao socket deve ser fornecido o endere¸co de IP e a porta de destino
Na plataforma Java, a API de sockets provˆe as seguintes classes:
Comunica¸c˜ao via datagramas: DatagramSocket e DatagramPacket
Processos
Nota
Stream ´
e uma sequˆ
encia de dados que ´
e transmitida de um
processo a outro.
Datagrama ´
e uma unidade de transferˆ
encia em uma rede baseada
em pacotes.
Processos
Processos
API de protocolos Internet - Sockets - UDP
Processos
Processos
Programando o Cliente
Inicializa¸c˜ao
gethostbyname - traduz nome do servidor
socket - cria o socket connect - conecta `a porta do servidor
Transmiss˜ao
send - envia msg para o servidor recv - recebe msg do servidor Encerramento
close - fecha o socket
Processos
Programando o Servidor
Inicializa¸c˜ao
socket - cria o socket
bind - associa o socket ao endere¸co local
listen - associa socket a requisi¸c˜ao de entrada
Transmiss˜ao
accept - aceita cone¸c˜ao de cliente recv - recebe msg do cliente recv - envia msg para o cliente Encerramento
Processos
API de protocolos Internet - Sockets - TCP
Processos
Processos
API de protocolos Internet - Sockets - TCP
Processos
Representa¸c˜
ao externa de dados e Empacotamento
Formatos diferentes de dados em diferentes computadores.Ex: ASCII, big-endian/little-endian
Processos
Empacotamento
Marshalling: montar os itens de dados de forma apropriada para transmiss˜ao da mensagem
Unmarshalling: desmontar o pacote da mensagem e restaurar os itens de dados equivalentes
Representa¸c˜
ao de dados
Serializa¸c˜ao de objetos XML
CORBA
Processos
Representa¸c˜
ao externa de dados e Empacotamento
-Serializa¸
c˜
ao de objetos
Serializa¸c˜ao e De-serializa¸c˜ao
Tarefa de converter objetos ou um conjunto de objetos em uma sequˆencia de dados para armazenamento em disco ou transmiss˜ao de uma mensagem.
A sequˆencia de dados gerada preserva informa¸c˜oes sobre a classe de cada objeto
Referˆencias para outros objetos s˜ao representadas por handles Serializa¸c˜ao em Java
Classe: ObjectOutputStream
M´etodos: ObjectOutputStream.writeObject, ObjectInputStream.readObject
Processos
Uso de reflection
Reflection: funcionalidade que permite verificar informa¸c˜oes (nomes, tipos, m´etodos) a partir de uma instˆancia. Isto permite a cria¸c˜ao de objetos a partir do nome das classes. Atrav´es de reflection ´e poss´ıvel realizar a serializa¸c˜ao e a de-serializa¸c˜ao de uma forma gen´erica
Processos
Representa¸c˜
ao externa de dados e Empacotamento
-Serializa¸
c˜
ao de objetos
Processos
Representa¸c˜
ao externa de dados e Empacotamento - XML
Tags definidas pelo usu´ario (diferente do HTML que possui tags predefinidas)
Aplica¸c˜oes diferentes utilizam diferentes tags Conte´udo 100% textual
Permite uso de namespaces para resolu¸c˜ao de conflitos Permite defini¸c˜ao de tipos e de esquemas
Fundamentos de Redes
Tipos de redes
Esquemas de comuta¸c˜ao Protocolos
Interliga¸c˜ao de redes
Comunica¸c˜
ao entre Processos
API de protocolos Internet Representa¸c˜ao externa de dados e Empacotamento
Invoca¸
c˜
ao Remota
Protocolos de Requisi¸c˜ao/Resposta
Chamadas de Procedimento Remoto (RPC) Invoca¸c˜ao de M´etodo Remoto (RMI)
Comunica¸c˜
ao Indireta
Caracter´ısticas e t´ecnicas Sistemas publicar-subescrever
Protocolos de Requisi¸c˜
ao/Resposta
Primitivas
DoOperation: Cliente invoca uma opera¸c˜ao no servidor GetRequest: Obt´em a requisi¸c˜ao do cliente
SendReplay: Envia uma resposta ao cliente
Protocolos de Requisi¸c˜
ao/Resposta
Primitivas de Comunica¸c˜ao
Protocolos de Requisi¸c˜
ao/Resposta - Exemplo HTTP
Requisi¸c˜ao
M´etodos HTTP: GET, HEAD, POST, PUT, DELETE, OPTIONS
URL: Identifica¸c˜ao do recurso Headers
Resposta do Servidor
Vers˜ao do protocolo: HTTP 1.0 x HTTP 1.1 Status code e Raz˜ao do retorno
Protocolos de Requisi¸c˜
ao/Resposta - Exemplo HTTP
Chamadas de Procedimento (RPC)
O RPC permite que um processo execute um
procedimento/fun¸c˜ao em outro processo, situado na mesma m´aquina ou em um computador remoto conectado por uma rede, de forma transparente.
Chamadas de Procedimento (RPC)
Birrell & Nelson (1984): quando um processo em uma m´aquina “A” chama um procedimento em um processo em uma m´aquina “B”, processo “A” ´e suspenso e a chamada ´e executada em “B”
Considerado um dos maiores avan¸cos de Sistemas Distribu´ıdos (1984)
Informa¸c˜oes podem ser passadas do remetente para o
destinat´ario como parˆametros assim como do destinat´ario para o remetente como resultado do procedimento.
Este m´etodo ´e conhecido como Remote Procedure Call (RPC).
Chamadas de Procedimento (RPC)
A ideia central do RPC ´e fazer com que a Chamada RPC se pare¸ca tanto quanto poss´ıvel com uma “chamada local”, ou seja, queremos uma chamada remota que seja transparente A comunica¸c˜ao entre remetente e destinat´ario pode ser escondida utilizando o mecanismo de chamada de procedimento.
Chamadas de Procedimento (RPC)
Caracter´ısticas Relevantes
Programa¸c˜ao de sistemas distribu´ıdos tornou-se similar (ou at´e idˆentica) a sistemas centralizados
Alto n´ıvel de transparˆencia
Procedimentos em m´aquinas remotas s˜ao chamados como se estivessem no espa¸co de endera¸camento local
Quest˜oes de Projeto
Estilo de Programa¸c˜ao (Interfaces) Transparˆencia
Chamadas de Procedimento (RPC) - Interfaces
Define um contrato entre seus utilizadores
Permite modifica¸c˜oes de implementa¸c˜ao sem afetar os clientes do procedimento
Interfaces de Servi¸co
Especifica¸c˜ao das procedures ofertadas pelo servidor
Defini¸c˜ao dos tipos de entrada e retorno de cada procedimento
Benef´ıcios
Abstra¸c˜ao de detalhes de implementa¸c˜ao Permite implementa¸c˜ao em diferentes linguagens
Chamadas de Procedimento (RPC) - Interfaces
Impacto da natureza distribu´ıda das aplica¸c˜oes
M´odulo cliente n˜ao acessa espa¸co de vari´aveis do m´odulo remoto
Parˆametros de entrada e retorno s˜ao, na verdade, transmitidos entre m´aquinas na rede
Parˆametros de entrada e retorno s˜ao mapeados para vari´aveis ou pontos do retorno ap´os transmiss˜ao
Um mecanismo RPC pode ser integrado a uma particular linguagem de programa¸c˜ao
´
Util quando todas as partes do SD s˜ao implementadas em uma mesma linguagem
Exemplo: Java para cliente e objeto remoto (servidor)
Linguagens de Defini¸c˜ao de Interfaces (IDLs) s˜ao projetadas para permitir que procedimentos implementados em linguagens diferentes possam executar uma a outra.
IDL - Linguagem de Defini¸
c˜
ao de Interfaces
Vantagens
IDL ´e uma linguagem neutra que permite que clientes e servidores sejam implementados em linguagens diferentes Um cliente Java pode interagir com aplica¸c˜oes COBOL empacotadas com Java IDL
IDL permite que a especifica¸c˜ao dos servi¸cos seja separada da implementa¸c˜ao.
Desvantagens
Dif´ıcil de usar
IDL - Linguagem de Defini¸
c˜
ao de Interfaces
M´odulo sayHello seria implementado por um servidor e chamado por um cliente remotamente
Invoca¸
c˜
ao de M´
etodo Remoto (RMI)
Conceito pr´oximo ao RPC, extendido para objetos
Evolu¸c˜ao do RPC com base nos princ´ıpios da programa¸c˜ao orientada a objetos.
O RMI permite que um processo instancie um objeto remoto e utilize seus m´etodos e propriedades. Este objeto remoto pode estar no mesmo computador ou em um outro computador conectado por rede.
Permite a passagem de objetos como parˆametros por referˆencia
Invoca¸
c˜
ao de M´
etodo Remoto (RMI) - Exemplo Java RMI
Comandos para execu¸
c˜
oa do servidor RMI
1 javac *.java
2 rmiregistry & (levanta o servidor na porta padr˜ao)
3 java CalculatorServer
4 java CalculatorClient
RPC vs RMI
Ambos os paradigmas suportam programa¸c˜ao com interfaces Constru´ıdos sobre o protocolo pedido/resposta
(request/response)
N´ıvel similar de transparˆencia
Sistemas distribu´ıdos orientados a objetos (expressividade e poder do paradigma)
Modelo mais sofisticado de passagem de parˆametros
Passagem de parˆametro por valor Passagem de parˆametro por referˆencia
Fundamentos de Redes
Tipos de redes
Esquemas de comuta¸c˜ao Protocolos
Interliga¸c˜ao de redes
Comunica¸c˜
ao entre Processos
API de protocolos Internet Representa¸c˜ao externa de dados e Empacotamento
Invoca¸
c˜
ao Remota
Protocolos de Requisi¸c˜ao/Resposta
Chamadas de Procedimento Remoto (RPC) Invoca¸c˜ao de M´etodo Remoto (RMI)
Comunica¸c˜
ao Indireta
Caracter´ısticas e t´ecnicas Sistemas publicar-subescrever
Caracter´ısticas
Comunica¸c˜ao via um intermedi´ario
N˜ao h´a acoplamento direto entre emissor e receptor Paradigma que suporta comunica¸c˜ao 1 para N Desacoplamento Espacial
O remetente n˜ao conhece ou precisa conhecer a identidade do destinat´ario e vice versa
Desacoplamento Temporal
O remetente e o destinat´ario podem ter independˆencia do momento de existˆencia
T´
ecnicas de comunica¸
c˜
ao indireta:
Comunica¸c˜ao em grupo
Mensagem ´e enviada para um grupo
Grupo: Um conjunto de processos que cooperam entre si para prover um servi¸co
Posteriormente a mensagem ´e enviada para todos os destinat´arios
Exemplos
Jogos multiusu´arios
Estrat´egias de balanceamento de carga Replica¸c˜ao de bancos de dados Conferˆencias multim´ıdia
Aplica¸c˜oes que em geral necessitem de uma alta taxa de disponibilidade, confiabilidade, tolerˆencia a falhas
T´
ecnicas de comunica¸
c˜
ao indireta:
Comunica¸c˜ao em grupo
Comunica¸c˜ao de grupo coordena a troca de mensagens entre os membros do grupo e dos processos externos com o grupo Comunica¸c˜ao em RPC envolve somente dois processos, gerando problemas quando se quer enviar mensagens para mais de um servidor
Em comunica¸c˜ao de grupos, com uma ´unica opera¸c˜ao pode-se enviar uma mensagem ´a v´arios destinos
Permitem que processos em um grupo sejam tratados como uma ´unica abstra¸c˜ao
Pode ser implentada usando Unicast, Multicast ou Broadcast Exemplos
Unicast: de um source para um destino e.g. One-to-One
Broadcast: de um source para todos os destinos poss´ıveis e.g. One-to-All Multicast: de um source para m´ultiplos destinos com o interesse de receber o tr´afico e.g. One-to-Many
Aspectos de SDs – Comunica¸c˜
ao – Comunica¸c˜
ao Indireta
Comunica¸
c˜
ao em grupo - Aplica¸
c˜
oes
Dissemina¸c˜ao de informa¸c˜ao para grande n´umero de destinat´arios
Suporte a aplica¸c˜oes colaborativas, ex: jogos multi-usu´ario
implementado em meados de 1998
Open source e possui licen¸ca que pode ser usada em projetos comerciais
Considerado altamente confi´avel
Suporta grupos de processos nos quais cada entidade pode entrar ou deixar o grupo
Envio de mensagens Todo o grupo
Aspectos de SDs – Comunica¸c˜
ao – Comunica¸c˜
ao Indireta
Comunica¸
c˜
ao em grupo - Aplica¸
c˜
oes
Dissemina¸c˜ao de informa¸c˜ao para grande n´umero de destinat´arios
Suporte a aplica¸c˜oes colaborativas, ex: jogos multi-usu´ario Ex: JGroups toolkit: Paradigma de Grupos de Processos
Toolkit para comunica¸c˜ao em grupo escrito em Java implementado em meados de 1998
Open source e possui licen¸ca que pode ser usada em projetos comerciais
Considerado altamente confi´avel
Suporta grupos de processos nos quais cada entidade pode entrar ou deixar o grupo
Para um simples integrante
Comunica¸
c˜
ao em grupo - Aplica¸
c˜
oes
Dissemina¸c˜ao de informa¸c˜ao para grande n´umero de destinat´arios
Suporte a aplica¸c˜oes colaborativas, ex: jogos multi-usu´ario Ex: JGroups toolkit: Paradigma de Grupos de Processos
Toolkit para comunica¸c˜ao em grupo escrito em Java implementado em meados de 1998
Open source e possui licen¸ca que pode ser usada em projetos comerciais
Considerado altamente confi´avel
Suporta grupos de processos nos quais cada entidade pode entrar ou deixar o grupo
Envio de mensagens Todo o grupo
Aspectos de SDs – Comunica¸c˜
ao – Comunica¸c˜
ao Indireta
Sistemas Publicar-Subscrever
Permite que v´arios objetos sejam notificados sobre eventos ocorrendo em um dado objeto
Publicador: Objeto que gera eventos publica os eventos que deseja tornar dispon´ıveis
Assinador: Objetos interessados em eventos de um dado outro objeto
Sa´ıda de um usu´ario de uma sala de bate papo
Sistemas Publicar-Subscrever
Permite que v´arios objetos sejam notificados sobre eventos ocorrendo em um dado objeto
Publicador: Objeto que gera eventos publica os eventos que deseja tornar dispon´ıveis
Assinador: Objetos interessados em eventos de um dado outro objeto
Exemplos
Notifica¸c˜ao de altera¸c˜ao em documentos colaborativos Sa´ıda de um usu´ario de uma sala de bate papo
Sistemas Publicar-Subscrever
S˜ao conhecidos como sistemas baseados em eventos distribu´ıdos
A tarefa principal do sistema ´e combinar as assinaturas com os eventos publicados e garantir a entrega correta para os assinantes
Aspectos de SDs – Comunica¸c˜
ao – Comunica¸c˜
ao Indireta
T´
ecnicas de comunica¸
c˜
ao indireta:
Sistemas de fila de mensagens: As mensagens s˜ao direcionadas para a abstra¸c˜ao de uma fila com receptores de extra¸c˜ao de mensagens de tais filas
Filas de mensagens
Prov´em servi¸co de comunica¸c˜ao ponto-a-ponto Desacoplamento espacial e temporal
Tamb´em chamados de Message-Oriented Middleware
Regras de remo¸c˜ao de mensagens da fila
FIFO (first in, first out)
Baseadas em prioridades do “leitor”
Baseadas em sele¸c˜ao de propriedades de mensagens
T´
ecnicas de comunica¸
c˜
ao indireta:
Sistemas de fila de mensagens: As mensagens s˜ao direcionadas para a abstra¸c˜ao de uma fila com receptores de extra¸c˜ao de mensagens de tais filas
Filas de mensagens
Prov´em servi¸co de comunica¸c˜ao ponto-a-ponto Desacoplamento espacial e temporal
Tamb´em chamados de Message-Oriented Middleware
Regras de remo¸c˜ao de mensagens da fila
FIFO (first in, first out)
Baseadas em prioridades do “leitor”
Baseadas em sele¸c˜ao de propriedades de mensagens
Exemplos
Sistema de Pagamento Brasileiro Plataformas WebSphere MQ
Sistemas de fila de mensagens
Processos produtores enviam (send ) mensagens para fila Processos consumidores recebem (receive) mensagens desta fila
Mensagens s˜ao persistentes (permanecem na fila at´e serem consumidas)
Podem ser implementados controles de seguran¸ca via SSL para confidencialidade e autentica¸c˜ao para controle de acesso Aplica¸c˜ao: Java Messaging Service (JMS)
Java Messaging Service (JMS)
Especifica¸c˜ao padr˜ao para comunica¸c˜ao indireta em programas Java
Unifica os paradigmas
Publicar/Assinar Filas de Mensagens
Implementa¸c˜oes
OW2, Java Messaging from JBoss, Sun’s Open MQ, Apache ActiveMQ and OpenJMS
Componentes JMS
Cliente JMS: programa Java que produz ou consome mensagens Provedor JMS: uma implementa¸c˜ao do servi¸co segundo a especifica¸c˜ao Mensagem JMS: objeto utilizado para comunica¸c˜ao entre clientes JMS (produtores ou consumidores)
Destino JMS: suporte `a comunica¸c˜ao indireta
Aspectos de SDs – Comunica¸c˜
ao – Comunica¸c˜
ao Indireta
T´
ecnicas de comunica¸
c˜
ao indireta:
Abordagens baseadas em mem´oria compartilhada:
Processos lˆeem e escrevem na mem´oria compartilhada como se estivessem acessando seu espa¸co de endere¸camento de
mem´oria
Abstra¸c˜ao utilizada para compartilhar dados entre computadores em espa¸cos de mem´oria diferentes
Processos acessam mem´oria compartilhada realizando leitura e escrita como se estivem em seus espa¸cos de mem´oria pr´oprios Um servi¸co ´e respons´avel por garantir de forma transparente que cada processo tome conhecimento dos updates dos outros processos
T´
ecnicas de comunica¸
c˜
ao indireta:
Abordagens baseadas em mem´oria compartilhada:
Processos lˆeem e escrevem na mem´oria compartilhada como se estivessem acessando seu espa¸co de endere¸camento de
mem´oria
Abstra¸c˜ao utilizada para compartilhar dados entre computadores em espa¸cos de mem´oria diferentes
Processos acessam mem´oria compartilhada realizando leitura e escrita como se estivem em seus espa¸cos de mem´oria pr´oprios Um servi¸co ´e respons´avel por garantir de forma transparente que cada processo tome conhecimento dos updates dos outros processos
Exemplos Clusters
Abordagens baseadas em mem´
oria compartilhada
Vantagens:
Transparˆencia: usu´ario n˜ao precisa lidar diretamente com mecanismos de comunica¸c˜ao
Desenvolvimento:
Programador lida com conceitos com os quais j´a est´a familiarizado
Aplica¸c˜oes centralizadas podem ser facilmente paralelizadas/distribu´ıdas