Uploaded by Henrique Barcelos

Lista 1 de SD

advertisement
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.
Download