sistemas distribuÍdossmd/isctem/teoricas/sd-3-comm-directa.pdf · capítulo 3 - comunicação em...
TRANSCRIPT
![Page 1: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/1.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 1
SISTEMAS DISTRIBUÍDOS
Capítulo 3 - Comunicação em
Sistemas Distribuídos – Comunicação Direta
![Page 2: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/2.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 2
NOTA PRÉVIA
A estrutura da apresentação é semelhante e utiliza algumas das figuras do livro de base do curso
G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, Addison-Wesley, 4th Edition, 2005
![Page 3: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/3.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 3
COMUNICAÇÃO NUM SISTEMA DISTRIBUÍDOS
Sistemas de comunicação de base
Sistemas de comunicação
middleware
Applications, services
Computer and network hardware Platform
Operating system
Middleware
![Page 4: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/4.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 4
SISTEMAS DE COMUNICAÇÃO DE BASE
Os sistemas de operação podem suportar a comunicação de dados entre os diferentes computadores envolvidos num sistema distribuído.
Protocolos mais populares: TCP/IP HTTP
![Page 5: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/5.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 5
TCP/IP: UDP
Comunicação por mensagens.
Mensagens podem-se perder, duplicar e chegar fora de ordem.
DatagramSocket socket = new DatagramSocket( 9000 ) ;
byte[] buffer = new byte[1500] ;DatagramPacket packet = new DatagramPacket( buffer, buffer.length ) ;socket.receive( packet ) ;
byte[] msg = ...DatagramSocket socket = new DatagramSocket() ;
DatagramPacket packet = new DatagramPacket( msg, msg.length) ;packet.setAddress( InetAddress.getByName( "localhost" ) ) ;packet.setPort( 9000 ) ;socket.send( packet ) ;
![Page 6: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/6.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 6
TCP/IP: IP MULTICAST (UDP MULTICAST)
Comunicação por mensagens com múltiplos recetores.
Cliente envia mensagem para endereço do grupo. Qualquer processo se pode juntar ao grupo para receber mensagens.
Mensagens podem-se perder, duplicar e chegar fora de ordem. MulticastSocket socket = new MulticastSocket( 9000 ) ;socket.joinGroup( InetAddress.getByName( "225.10.10.10" ));
byte[] buffer = new byte[1500] ;DatagramPacket packet = new DatagramPacket( buffer, buffer.length ) ;socket.receive( packet ) ;
byte[] msg = ...DatagramSocket = new DatagramSocket() ;
DatagramPacket packet = new DatagramPacket( msg, msg.length) ;packet.setAddress( InetAddress.getByName( "225.10.10.10" ) ) ;packet.setPort( 9000 ) ;socket.send( packet ) ;
![Page 7: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/7.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 7
TCP/IP: TCP
Dados transmitidos como fluxo contínuo.
Dados chegam de forma fiável a menos que o stream seja quebrado.
ServerSocket ss = new ServerSocket( 9000) ;while( true ) { Socket cs = ss.accept() ; ....}
byte[] msg = ...Socket cs = new Socket("localhost", 9000) ;OutputStream os = cs.getOutputStream() ;InputStream is = cs.getInputStream() ;
os.write( msg)int b = is.read();
![Page 8: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/8.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 8
HTTP
Comunicação pedido/resposta sobre TCP, invocando URL.
Dados chegam de forma fiável a menos que o stream seja quebrado.
HttpURLConnection con = (HttpURLConnection)new URL( "http://asc.di.fct.unl.pt/sd/xpto").openConnection();
con.setRequestMethod("POST");con.setDoOutput(true);con.setDoInput(true);OutputStream os = con.getOutputStream();....os.flush();InputStream is = con.getInputStream();....
![Page 9: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/9.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 9
HTTP ASSÍNCRONO
Comunicação pedido/resposta, com resposta a ser recebida de forma assíncrona.
Qual o interesse?
Solução adotada nos browser: JavaScript nativo ou bibliotecas JavaScript (e.g. Jquery)
[javascript]var url = …var xmlhttp = new XMLHttpRequest();xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {result = xmlhttp.response;// process result
}};xmlhttp.open("GET", url, true);xmlhttp.responseType = "json";xmlhttp.send();
readyState 0: request not initialized 1: server connection established 2: request received 3: processing request 4: request finished and response is ready
![Page 10: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/10.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 10
WEB SOCKETS
Comunicação full-duplex sobre TCP entre clientes e servidores Web. Permite notificações dos servidores, streaming.
Suporte na maior parte dos browsers recentes.
[javascript]var ws = new WebSocket("ws://asc.di.fct.unl.pt/websocket");!
!ws.onopen = function() {
ws.send(”Connecting... ");};ws.onmessage = function (evt) {
var received_msg = evt.data; !...
};ws.onclose = function() { !
...};
![Page 11: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/11.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 11
COMUNICAÇÃO NO NÍVEL MIDDLEWARE
Implementa sistema de comunicação recorrendo às primitivas de comunicação base
Fornece propriedades adicionais, atrasando a entrega das mensagens
Definição: Entrega de uma mensagem num sistema de comunicação representa a ação do sistema disponibilizar a mensagem para ser lida pelas aplicações Atrasar a entrega de uma mensagem pode, por exemplo, permitir que a ordem de entrega das mensagens seja diferente da ordem de chegada.
![Page 12: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/12.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 12
FACETAS DA COMUNICAÇÃO
Forma da interação Streams Mensagens
Ordenação das mensagens
Número de destinatários Ponto-a-ponto Multi-ponto (estudado mais tarde) Um-de-muitos (anycast)
Direção de interação Uni-direcional Bi-direcional
Tipo de sincronização Comunicação síncrona Comunicação assíncrona
Persistência Comunicação persistente Comunicação volátil
Fiabilidade (modelo de falhas)
![Page 13: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/13.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 13
FORMA DE INTERAÇÃO: STREAMS / FLUXOS
Emissor e recetor estabelecem um fluxo contínuo de dados Ordem dos dados enviados é mantida; Fronteira das escritas dos dados não é preservada.
Exemplos de situações em que é apropriado?
P Q write
Outgoing message buffer Incoming message buffer
read m
![Page 14: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/14.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 14
FORMA DE INTERAÇÃO: MENSAGENS
Emissor e recetor comunicam trocando mensagens Cada mensagem tem um limite (e dimensão) bem-definida.
Exemplos de situações em que é apropriado?
Como implementar sobre TCP?
P Q send
Outgoing message buffer Incoming message buffer
receive m
![Page 15: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/15.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 15
FORMA DE INTERAÇÃO: MENSAGENS
Emissor e recetor comunicam trocando mensagens Cada mensagem tem um limite (e dimensão) bem-definida.
Exemplos de situações em que é apropriado?
Como implementar sobre TCP?
<dimensão, dados> ou <dados,delimitador> ou ...
vantagens? desvantagens de cada opção?
P Q send
Outgoing message buffer Incoming message buffer
receive m
![Page 16: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/16.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 16
FORMA DE INTERAÇÃO: ORDENAÇÃO DAS MENSAGENS
Sem garantias de ordem Sistema não garante que as mensagens são entregues pela ordem que foram enviadas
Entrega pela mesma ordem da emissão – FIFO (first in first out) Sistema garante que as mensagens dum emissor são entregues pela mesma ordem que foram enviadas. Como implementar em TCP/UDP? Haverá outras garantias de ordem?
![Page 17: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/17.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 17
NÚMERO DE DESTINATÁRIOS
Comunicação ponto-a-ponto (unicast) Comunicação entre um emissor e um recetor
Comunicação multi-ponto (difusão) Comunicação entre um emissor e um conjunto de recetores Broadcast / Difusão total: envio de 1 emissor para todos os recetores Multicast / Difusão particial : envio de 1 emissor para todos os recetores de um grupo Anycast: envio de 1 emissor para um recetor de um grupo
(o receptor é escolhido com base numa métrica definida pelo operador da rede, pode mudar ao longo do tempo, pelo que está pensado para suportar serviços com estado ou noção de sessão)
![Page 18: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/18.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 18
DIRECÇÃO DE INTERAÇÃO
Comunicação uni-direccional: Comunicação apenas num sentido: emissor->recetor
Comunicação bi-direccional: Comunicação nos dois sentidos
![Page 19: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/19.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 19
SINCRONIZAÇÃO
Comunicação assíncrona: o emissor só fica bloqueado até o seu pedido de envio ser tomado em consideração o recetor fica bloqueado até ser possível receber dados
Em geral, o sistema de comunicação do receptor armazena (algumas) mensagens caso não exista nenhum recetor bloqueado no momento da sua recepção. Assim, funciona como um buffer entre o emissor e o recetor É possível variante em que o recetor não fica bloqueado e devolve erro ou a receção é efectuada em segundo plano (background)
Comunicação síncrona: o emissor fica bloqueado até:
o recetor “receber” os dados – comunicação síncrona unidireccional receber a resposta do receptor – comunicação pedido / resposta ou cliente / servidor
o receptor fica bloqueado até ser possível consumir dados
![Page 20: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/20.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 20
PERSISTÊNCIA
Comunicação volátil: mensagens apenas são encaminhadas se o recetor existir e estiver a executar, caso contrário são destruídas.
Exemplo: ???
Comunicação persistente: mensagens são guardadas pelo sistema de comunicação até serem consumidas pelos destinatários, que podem não estar a executar. Mensagens são guardadas num receptáculo independente do recetor – mailbox, canal, porta persistente, etc.
Exemplo: ???
![Page 21: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/21.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 21
FIABILIDADE
Comunicação fiável: o sistema garante a entrega das mensagens em caso de falha temporária. Como implementar?
Comunicação não-fiável: em caso de falha, as mensagens podem-se perder
![Page 22: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/22.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 22
RESUMO: SISTEMAS DE COMUNICAÇÃO MIDDLEWARE
Podem ter diferentes modelos Simples por mensagens Simples por streams Pedido/resposta Baseado no paradigma de código móvel …
Fornecem diferentes propriedades relativas às facetas abordadas Forma da interação Número de destinatários Direção de interação Tipo de sincronização Persistência Fiabilidade (modelo de falhas)
![Page 23: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/23.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 23
COMUNICAÇÃO SÍNCRONA UNIDIRECCIONAL
O emissor fica bloqueado à espera de o receptor estar disposto a receber a mensagem
Implementação exige envio de mensagem com informação de recepção para o emissor
tempo
emissor receptor
send ( )
receive ( )
processo bloqueado
processo a executar
![Page 24: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/24.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 24
COMUNICAÇÃO SÍNCRONA UNIDIRECCIONAL
Concorrência: Limita a concorrência, porque o emissor se bloqueia até o receptor receber a mensagem enviada.
Sincronização: Após o envio o emissor sabe que o receptor acabou de receber a mensagem; Após a recepção, o receptor sabe que o emissor esteve bloqueado até esse momento.
Ordenação: Em geral, garante a ordem das mensagens do mesmo emissor.
Modelo de falhas: Em caso de sucesso o emissor sabe que o receptor recebeu a mensagem. Em caso de insucesso não se sabe exactamente o que se passou (problemas de rede ou do receptor ?).
Variações: é possível o emissor só ficar bloqueado até a mensagem chegar ao site do receptor mesmo que este não a consuma logo.
![Page 25: SISTEMAS DISTRIBUÍDOSsmd/isctem/teoricas/sd-3-comm-directa.pdf · Capítulo 3 - Comunicação em Sistemas Distribuídos ... 2 NOTA PRÉVIA A estrutura da apresentação é semelhante](https://reader030.vdocuments.pub/reader030/viewer/2022041100/5ed71f90c30795314c173d54/html5/thumbnails/25.jpg)
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça – Copyright DI – FCT/ UNL / 25
PARA SABER MAIS
George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair, Distributed Systems – Concepts and Design, Addison-Wesley, 5th Edition, 2011
Capítulo 4.1-4.3.