UFOP – Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas Aluno: Henrique Barcelos Saraiva Professora: Carla Rodrigues Figueiredo Lara Disciplina: Sistemas Distribuídos 1 – Partindo das definições dos principais autores da área de Sistemas Distribuídos apresente uma definição para Sistemas Distribuídos e destaque as suas principais características. O conceito de Internet das Coisas (IoT) altera esses conceitos tradicionais que foram publicados por esses autores? Justifique. R. Um sistema distribuído segundo a definição de Andrew Tanenbaum é uma "coleção de computadores independentes entre si que se apresenta ao usuário como um sistema único e coerente”. Ou seja, o usuário acredita estar acessando um único serviço ou servidor, quando na verdade a complexidade da comunicação é enorme e pode envolver diferentes hardwares, softwares e até empresas diferentes. As principais características: compartilhamento de recursos, concorrência (devido ao uso de computadores e processos paralelos) e transparência (onde o usuário pode estar acessando um serviço, mas vários atributos são ocultos do usuário, como acesso, localização, migração, relocação, replicação, concorrência e falha, de forma que a única coisa que importe seja a aplicação final). Acredito que o conceito de IoT não, mas é importante lembrar que de certa forma o conceito de IoT soma novos desafios e aumenta a complexidade dos SDs, já que passaram a surgir outras preocupações nas áreas de comunicação, coordenação, heterogeneidade, tolerância a falhas, desempenho, escalabilidade, segurança, privacidade além de recursos limitados de energia, processamento e memória. 2 – O conceito de “Transparência” no projeto de um Sistemas Distribuído (SD) é fundamental. Considerando os diversos tipos de transparência possíveis em um SD escolha três deles que você considera os mais importantes, explique-os e justifique sua importância. R.: - Replicação: acredito ser muito importante, já que as técnicas de replicação atuais garantem que você acesse serviços com uma latência muito menor, além de tolerância a falhas, uma vez que na sociedade atual todos prezam por velocidade e eficiência das aplicações. - Relocação: semelhante a replicação, é importante lembrar que um datacenter pode ter falhas, quedas de energias e problemas na infraestrutura. A relocação é essencial para garantir continuidade do sistema, sem que o usuário perceba. - Falha: quando o sistema consegue se recuperar de uma falha de memoria ou disco sem que o usuário perceba, é um bom sinal de que o serviço irá rodar de maneira confiável. 3 - Considere as estratégias de implementação de MMOG (massively multiplayer online games) discutidas na Seção 1.2.2 do livro texto. Em particular, quais vantagens você vê em adotar a estratégia de servidor único para representar o estado do jogo para vários jogadores? Quais problemas você consegue identificar e como eles poderiam ser resolvidos? R. A vantagem é a redução no tempo de comunicação entre dois ou mais computadores do cluster/grid. Além disso, o servidor centralizado ajuda significativamente no gerenciamento do mundo virtual. Os problemas são vários. Os jogadores podem estar em locais diferentes, e a latência ser diferente para cada jogador, fazendo com que a experiência seja péssima. Além disso, essa arquitetura seria uma espécie de centralização, e traria os outros problemas por causa da largura de banda limitada, problemas na sincronização de movimentos e não teria tolerância a falhas, piorando ainda mais a situação. Para resolver, é necessário melhorar e desenvolver novos middlewares capazes de distribuir as cargas, ou usar arquiteturas peerto-peer. 4 - Qual o principal papel do middleware em um sistema distribuído? É possível criar um SD sem a sua utilização? Se sim, quais seriam as diferenças? R. O papel basicamente é conectar componentes de software ou aplicações empresariais. É a camada que fica entre o sistema operacional e a aplicação, podendo essa aplicação ser de diferentes linguagens, e o sistema operacional de diferentes empresas. Até poderia existir, mas ela perderia o sentido de transparência, e não esconderia mais as naturezas das diferentes camadas que até então eram invisíveis ao usuário final. 5 – Apresente e discuta sobre as principais diferenças entre um Sistema de Computação Paralela e um sistema de Computação Distribuído e associe aos conceitos de Grid e Cluster de computadores. A principal diferença entre o um sistema com processamento paralelo e distribuído é que as configurações paralelas incluem muitos processadores dentro de um único sistema, enquanto configurações distribuídas podem aproveitar o poder de processamento de muitos computadores ao mesmo tempo, mesmo em locais diferentes. O paralelo também fornece baixa latência, sendo um pouco mais confiável nas tarefas, mas tem a limitação da quantidade de processadores incorporados no sistema. O distribuído é altamente escalável, e o poder de processamento é mais barato do que os computadores paralelos. Podemos associar o Grid com os Sistemas Distribuídos, pois nos grids os computadores também não precisam compartilhar as mesmas configurações, ou precisam ser conectados via LAN, ou trabalhar juntos em um conjunto de problemas. Cada computador pode ser armazenado numa localização geográfica diferente. A limitação do Cluster também se assemelha à Computação Paralela, já que um cluster utiliza vários sistemas de computador que são idênticos em hardware e sistema operacional para realizar as tarefas (limitados localmente). 6 - Um serviço é implementado por vários servidores. Explique por que recursos poderiam ser transferidos entre eles. Seria satisfatório para os clientes fazer multicast (difusão seletiva) de todos os pedidos para o grupo de servidores, como uma maneira de proporcionar transparência de mobilidade para os clientes? R. Recursos poderiam ser transferidos entre eles porque dependendo da abstração da aplicação, uma tarefa pode exigir hardware ou aplicações que estão distribuídas em servidores especializados para aquela tarefa (como por exemplo renderização gráfica), ou até mesmo um banco de dados. Não acredito que que seria satisfatório para os clientes sempre fazerem multicast pois isso iria congestionar a rede. Atualmente os sistemas distribuídos, em conjunto com SDN’s conseguem direcionar muito bem as requisições para servidores disponíveis. 7 – Construir um servidor concorrente por meio da multiplicação de um processo tem algumas vantagens e desvantagens em comparação com servidores multithread. Cite e explique algumas. R. Na multiplicação de um processo, programas completamente separados tem suas próprias variáveis, pilha e alocação de memória, enquanto no multithread rotinas compartilham o mesmo espaço de memória e variáveis globais. A criação e terminação de uma thread nova é em geral mais rápida do que a criação e terminação de um processo novo. Além disso, multi-programação usando o modelo de threads é mais simples e mais portável do que multi-programação usando múltiplos processos. 8 – Considerando o projeto de um serviço onde os conceitos de mobilidade de código serão aplicados, comente sobre quais questões o projetista deve ser levar em conta antes de realizar as suas escolhas. R. Se for mobilidade fraca é possível transferir somente o segmento de código e um programa transferido é sempre iniciado de acordo com várias posições de partida predefinidas. E quando se escolhe a mobilidade forte o segmento de execução também pode ser transferido e um processo em execução pode ser parado e, na sequência, movido para uma outra máquina e então retomar a execução no ponto em que ele a deixou, porém é mais difícil de implementar. 9 - Frequentemente, os computadores usados nos sistemas peer-to-peer são computadores desktop dos escritórios ou das casas dos usuários. Quais são as implicações disso na disponibilidade e na segurança dos objetos de dados compartilhados que eles contêm e até que ponto qualquer vulnerabilidade pode ser superada por meio da replicação? R. Como os sistemas peer-to-peer funcionam de maneira que as maquinas são cliente e servidor ao mesmo tempo, existe uma abertura no firewall do computador que deixa a máquina mais vulnerável quando está conectada por esse sistema. A integridade dos recursos compartilhados passa a ser um problema sério nesse meio. A replicação pode ser válida, mas se todos os computadores de uma determinada área forem infectados, o problema persistirá. 10 – A comunicação em SDs é fundamental. Cite e explique os principais métodos existentes para se implementar essa comunicação. R. Memória Compartilhada: uma região de memória é compartilhada entre os processos. Troca de Mensagem: Ocorre por meio de troca de mensagens entre os processos. Para a comunicação existir deve haver entre eles um canal de comunicação – A implementação da maioria destes canais se baseia nas primitivas de mensagens send(msg) e receive(msg). 11 – Faça uma análise geral sobre os servidores multimídia e suas principais diferenças em relação aos servidores tradicionais. Aproveite para consolidar seus conhecimentos sobre servidor com estado e sem estado. R. Os servidores multimídia trabalham com alta tolerância a falhas, escalabilidade, localidade e diversas outras técnicas para reduzir a latência e aumentar a disponibilidade do conteúdo de quem está acessando, usando fortemente dos conceitos de SDs e CDNs, para distribuir a balancear as suas cartas. Em um servidor sem estado cada pedido deve conter toda a informação necessária para seu processamento. Servidores sem estado apresentam maior escalabilidade. Servidores com estado armazenam informação sobre cada cliente. Operações podem ser implementadas de forma mais eficiente. Mensagens com pedidos podem ser menores. Em contrapartida, as informações salvas no servidor só são apagadas se forem explicitamente removidas, o que faz com que o disco ou banco de dados possa se tornar enorme sem uma política adequada de retenção de dados. 12 – Explique como funciona a Chamada Remota de Procedimento (RPC) e quais as vantagens da Invocação Remota de Método (RMI) em relação à RPC. R. No RPC, a rotina que invoca o procedimento coloca os argumentos em uma área de memória bem conhecida e transfere o controle para o procedimento em execução, que lê os argumentos e os processa. Em algum momento, a rotina retoma o controle, extraindo o resultado da execução de uma área bem conhecida da memória. Após isso, a rotina prossegue com a execução normal. A principal vantagem do RMI é sua capacidade de baixar o código de um objeto, caso a classe desse objeto não seja definida máquina virtual do receptor. Os tipos e o comportamento de um objeto, previamente disponíveis apenas em uma máquina virtual, agora podem ser transmitidos para outra máquina virtual, possivelmente remota. Essa funcionalidade do RMI permite que o código da aplicação seja atualizado dinamicamente, sem a necessidade de recompilar o código.