Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com
1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com as regras padronizadas que descrevem a sintaxe e a semântica desses serviços. Em geral, os serviços são especificados por meio de Linguagens de Descrição de Interfaces (IDLs- Interface Definition Language). Especificações adequadas de interfaces devem ser completas e neutras.
2. Comente as transparências desejáveis em Sistemas Distribuídos. Transparência de Localização Oculta o lugar em que um recurso está localizado Transparência de Acesso Oculta diferenças na representação de dados e no modo de acesso a um recurso Transparência de Falhas Oculta a falha e a recuperação de um recurso Transparência de Tecnologia Oculta tecnologias utilizadas para obter o recurso. Transparência de Concorrência Oculta a disputa pelo recurso.
3. Explique o significado de transparência de distribuição. é a capacidade que um sistema tem de ocultar entre os usuários e as diferentes aplicações de ser um sistema único de computador
4. Comente as vantagens e desvantagens do endereçamento direto, com identificadores dependentes e independentes de localização e ainda endereçamento usando servidor de nomes. Vantagem: As vezes a localização física é importante. Desvantagem: As vezes o recurso importa mais que sua localização física. No entanto, nem sempre é fácil achar o recurso. Por isso, serviços de nome são importante para ligar o recurso a sua localização de forma transparente ao usuário.
5. Qual o papel das interfaces em sistemas distribuídos? Descrever os serviços. Como eles funcionam e como devem ser acessados.
6. Considerando o exemplo de Cliente/Servidor usando a API Java para socket em comunicação UDP, apresentado em aula: 6.1. Descreva como o cliente recupera o endereço do servidor, que tipo de mecanismo e que serviço de nomes é utilizado? O cliente precisa saber previamente qual o endereço do servidor. Nenhum serviço de nome é utilizado. 6.2. Como o servidor identifica o cliente que está se comunicando com o mesmo? Através do pacote de chegada. Nele contém todas as informações necessárias ao servidor como IP do cliente e Porta da aplicação requisitante.
7. O que significa a Inexistência de relógio global em um sistema distribuído? Em quê isso impacta no desenvolvimento de softwares distribuídos? É consequência do fato do tempo necessário para a troca de mensagens não ser desprezível em sistemas geograficamente dispersos, como os sistemas distribuídos. Desenvolvedores de software distribuídos precisam estar ciente que não há sincronização natural entre esses sistemas, e portanto é preciso desenvolver mecanismos de sincronização, caso esse seja um requisito desejado da aplicação.
8. Por que é dito que um sistema distribuído ocorre Falhas independentes? Com a separação física dos sistemas distribuídos, a falha de um componente de um sistema distribuído não compromete o funcionamento dos outros componentes. Porém, essa falha pode afetar a comunicação entre os componentes.
9. Exemplifica a transparência de falhas em um sistema distribuído Caso uma mensagem não seja entregue um sistema distribuído tolerante a falhas pode retransmitir a mensagem.
10. Por que a heterogeneidade de tecnologia é um desafio em sistemas distribuídos? Porque a cada instante surgem novas tecnologias, novas linguagens de programação, novos sistemas operacionais. Para que o software distribuído não se torne obsoleto ele precisa ser escrito de forma extensível de modo que seja fácil e rápida a inserção de novas tecnologias.
11. Qual a diferença entre sistemas distribuídos síncronos e assíncronos. Os síncronos aguardam retorno, bloqueando o processo de requisição. Os assíncronos não aguardam retorno e não bloqueia o processo que fez a requisição.
12. O serviço NTP (Network Time Protocol) pode ser usado para sincronizar relógios de computador. Explique por que, mesmo com esse serviço, nenhum limite garantido é dado para a diferença entre dois relógios. Porque as redes não são determinísticas, não é possível garantir o atraso de propagação dos pacotes. O atraso de uma requisição NTP pode afetar a sincronia do relógio alvo.
13. Cite e explique vantagens e desvantagens da distribuição no contexto de sistemas distribuídos. Vantagens: Economia, Aumento da Disponibilidade, Aumento do Desempenho, Escalabilidade Desvantagens: mais fontes de falhas, maior necessidade de tratar essas falhas, mais dificuldade em manter a consistência, mais problemas de segurança
14. Qual a diferença entre um socket TCP e um socket UDP. A mesma entre o protocolo TCP e UDP.
15. O que é um webservice? é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Pode ser Localizado dinamicamente, ter sua interface descoberta automaticamente porque o serviço sabe se descrever (WSDL) e pode ser invocado através da Web
O que é um middleware? Camada de software entre o sistema operacional e a aplicação que permite a comunicação entre essas aplicações em uma ambiente distribuído.
Quando um cliente invoca um método num objeto servidor quais os principais componentes de software que podem falhar? (Dar um exemplo de uma falha para cada caso) O cliente pode falhar Requisição mal formada, desconexão do ponto de acesso. O servidor pode falhar Desligamento, Sobrecarga. O canal de comunicação pode falhar Congestionamento na rede, queda de link
18. Para que servem os stubs? (Considere o stub do cliente e o stub do servidor.) Stub do cliente é responsável por empacotar os parâmetros em uma msg e enviar a msg para a máquina do servidor. Quando a resposta chega, o resultado é copiado para cliente, e controle volta a ele Stub do servidor (skeleton) é responsável, no servidor, por desempacotar parâmetros, chamar o procedimento do servidor e retornar resposta para máquina do cliente
19. Qual a principal diferença entre RPC (Remote Procedure Call) e RMI (Remote Method Invocation)? RPC chamada de funções RMI chamada de objetos
20. Que são os stubs e os skeletons e como os mesmos são gerados? Respondido na 18. Skeletons são stubs do no servidor. Através de compiladores de linguagens de descrição de interface. Um exemplo desses compiladores é o idlj que compila interfaces descritas em idl para java.
21. Como um cliente acha o serviço remoto RMI? Fazendo uma requisição ao servidor de nomes do RMI chamada RMIRegistry.
22. Pra que serve Servidor RMI Registry? Para registrar e publicar serviços providos por servidores RMI. Um cliente interessado no serviço pode fazer uma requisição ao RMIRegistry, o mesmo retornará o objeto associado ao serviço requerido pelo cliente.
23. Qual a diferença entre um middleware orientado a objetos e um middleware orientado a mensagem? OO: primitiva de interação: invocação de método, comunicação 1 para 1. Comunicação síncrona. OM: primitiva de interação: passagem de mensagem, comunicação 1 para 1 ou 1 para N. Usa fila de mensagens e a comunicação é assíncrona.
24. O que é IDL? Qual sua finalidade? Interface Description Language é uma linguagem puramente declarativa para descrever uma interface de um serviço de forma genérica e independente de linguagem de programação. Deste modo, o serviço é fornecido de qualquer linguagem de programação (provedor) para qualquer outra linguagem de programação (consumidor).
25. O que você entende por ORB? object request broker ou Agente de Requisição de Objetos é uma parte de um middleware que permite que programadores façam chamadas a programas de um computador para outro através de uma rede de computadores. Portanto, serve como cada de comunicação de um middleware. Após a conexão de um objeto com o ORB, os métodos deste objeto tornam-se acessíveis para invocações remotas
26. O que é CORBA? De Common Object Request Broker Architecture é a arquitetura padrão criada pelo Object Management Group (OMG) para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Existem implementações do CORBA para quase todas as linguagens de programação.
27. Quais os modelos de comunicação suportados pelos sistemas de middleware vistos em sala. Como cada um funciona? Baseada em RPC, passagem de mensagem e memória compartilhada.
28. Quais as camadas de um middleware? Para que servem cada uma dela?
29. O que é um serviço? é uma unidade de software que executa uma função de negócio; estabelece um contrato bem definido: entradas, saídas, restrições, premissas, comportamento (lógica de negócio); esconde do seu consumidor todos os detalhes de implementação, incluindo infraestrutura e lógica interna; é auto-contido, independente e modular; pode ser reutilizado em outros contextos; realiza uma função de negócio integralmente, de forma consistente; pode ser disponibilizado e administrado individualmente; pode ser combinado com outros serviços para compor um serviço de mais alto nível ou um processo de negócio;