PROFESSOR Marília Costa Machado Leal Data para entrega: 24/02/2022 ALUNO(a) Gustavo da Silva Aguiar
Lista de Exercícios sobre Comunicação entre processos em sistemas distribuídos.
1) Explique porque comunicação transiente síncrona pode resultar em problemas de
escalabilidade e como estes problemas poderiam ser resolvidos. R- Pode causar problemas de escalabilidade porque a comunicação síncrona exige que o chamador seja bloqueado até que a mensagem seja recebida, isso pode levar um longo tempo até que um chamador continue quando o receptor estiver longe. A única maneira de resolver esse problema é projetar o aplicativo de chamada para que ele tenha outro trabalho útil para fazer enquanto a comunicação ocorre, e efetivamente estabelecer uma forma de comunicação assíncrona.
2) A comunicação entre processos em um sistema distribuído pode se dar utilizando-se
os serviços de comunicação fornecidos pela camada de transporte. Por que, no entanto, está nem sempre é uma opção adequada? R- Em aplicações tradicionais de rede, a comunicação costuma ser baseada nas primitivas de troca de mensagem de baixo nível oferecidas pela camada de transporte. Uma questão importante em sistema middleware é oferecer um nível mais alto de abstração que facilitará expressar comunicação entre processos mais do que o suporte oferecido pela interface com a camada de transporte.
3) Qual a diferença entre RPC síncrono e RPC assíncrono?
R- Transmissão assíncrona, itens no stream são transmitidos um após outro sem restrições temporais. Transmissão síncrona, existe um retardo máximo definido para cada unidade sem importar se a transferência é mais rápida. 4) Descreva o mecanismo de RPC e discuta como ele contribuiu para o avanço de sistemas distribuídos R- RPC é uma tecnologia popular para a implementação do modelo cliente-servidor de computação distribuída. É um protocolo que um programa pode usar para requisitar serviço de outro programa localizado em outro computador na rede, sem ter nenhum entendimento sobre os detalhes de localização. Uma chamada de procedimento é também conhecida como uma chamada de função ou uma chamada de sub-rotina. Este tipo de protocolo utiliza o modelo cliente-servidor, onde um programa (cliente) solicita o serviço em outra máquina (servidor). RPC é um tipo de protocolo requisição-resposta. Ele é iniciado por um cliente que envia uma requisição em formato de mensagem para um servidor remoto. Lá é executada, a partir de um procedimento já conhecido entre as partes, a requisição com os argumentos. O servidor remoto envia para o cliente a resposta do que foi processado. Enquanto o servidor está processando o conteúdo, o cliente fica bloqueado esperando o resultado (enquanto o servidor executa o procedimento e retorna o valor), a não ser que este cliente envie uma requisição assíncrona ao servidor, como uma chamada XHTTP. A utilização de um RPC facilita o desenvolvimento de sistemas distribuídos pois permite a utilização de semânticas claras e diretas. O que torna fácil transferir o gasto computacional para os servidores, ou até mesmo possibilitando a utilização de procedimentos que não poderiam funcionar localmente. Além de diminuir a necessidade de reescrita de código.
5) Faça uma pesquisa na internet e descreva as características da Comunicação de
computadores utilizando Sockets. R- Socket é uma interface de comunicação bidirecional entre processos através de uma rede de computadores. Essa mesma interface permite que essa comunicação utilize diversas famílias de protocolos (Unix domain, Internet domain, Xerox NS domain). Sockets são representados como descritores de arquivos e podem permitir a comunicação entre processos distintos na mesma máquina ou em máquinas distintas, através de uma rede. Os sockets são a base da comunicação em redes TCP/IP e também são muito usados em comunicações entre processos no interior de um mesmo computador. Essa comunicação é baseada no paradigma cliente –servidor. Eles normalmente são identificados como uma interface entre a camada de aplicação e a camada de transporte que também tem a função de servir como interface de programação pela qual as aplicações de rede são inseridas na Internet (= Interface de Programação de Aplicação – API). A interface padronizada de soquetes surgiu originalmente no sistema operacional Unix BSD (Berkeley Software Distribution); portanto, eles são muitas vezes chamados de Berkeley Sockets. É também uma abstração computacional que mapeia diretamente a uma porta de transporte (TCP ou UDP) e mais um endereço de rede. Com esse conceito é possível identificar unicamente um aplicativo ou servidor na rede de comunicação IP. Um bom exemplo de um estabelecimento de uma conexão entre computadores através de socket seria o acesso à uma página da Internet. Um servidor Web tem a porta 80 como porta padrão de comunicação entre os clientes. Quando digitamos um endereço de um site no Internet Explorer do Windows, automaticamente esse endereço é convertido em seu respectivo endereço IP. Se estamos numa rede, nosso micro tem um único endereço IP. E finalmente, junto deste processo, uma porta em seu computador é disponibilizada dinamicamente, sendo um número maior que 1024, para esta conexão. Então, temos todas as informações necessárias para estabelecer a conexão, tendo assim um socket. O cliente, no caso de uma conexão à uma página da Internet, é quem a solicita através de um browser (Internet Explorer, por exemplo), e o servidor é quem disponibiliza a página para ser acessada. Muito do que fazemos no dia a dia faz uso de sockets. O nosso navegador utiliza sockets para requisitar as páginas; quando acessamos o nosso servidor pelo protocolo de aplicação SSH também estamos abrindo e utilizando um socket.
6) Faça uma pesquisa na internet e descreva as vantagens e desvantagens da
Comunicação orientada a mensagem. R- Vantagens O paradigma de comunicação por mensagens é simples, natural e fácil de entender. A reconfiguração de sistemas é simplificada, pois os participantes não precisam conhecer os endereços uns dos outros os endereços uns dos outros, basta saberem onde é mantida a fila de mensagens. Participantes da comunicação não precisam se sincronizar para trocar dados, o que reduz o tempo ocioso durante a comunicação. Participantes não precisam estar Participantes não precisam estar permanentemente conectados à rede, basta conectar para enviar/receber mensagens. Desvantagens Exigência de um elemento central responsável pelo gerenciamento das filas de mensagens. Problemas: ponto único de falha; gargalo na comunicação. Solução: replicar esse elemento A comunicação assíncrona pode retardar a entrega de mensagens. Problema para aplicações com requisitos de desempenho. Solução: filas com prioridades de entrega.