Sistemas DistribuídosProva1-15.pdf
Document Details
Uploaded by SportyOphicleide
FASUL
Tags
Related
- Certified Cybersecurity Technician loT and OT Security Exam 212-82 Components of an ICS PDF
- CoE 167 Computing Systems LE 1 - Reviewer PDF
- INFO90002 Lecture 8 PDF
- Distributed Systems - Chapter One PDF
- Security of Distributed Systems and the IoT PDF
- Introduction to Distributed Systems and IoT Security PDF
Full Transcript
cação. Ao mesmo tempo, deve ser capaz de conversar com diferentes sistemas operacionais e versões. Além disso, deve possibilitar a incor- poração de novos componentes e/ou aprimorar os existentes. Segundo Tanenbaum e Van Steen (2007), é possível alcançar uma maior flexibilidade, desde que se fra...
cação. Ao mesmo tempo, deve ser capaz de conversar com diferentes sistemas operacionais e versões. Além disso, deve possibilitar a incor- poração de novos componentes e/ou aprimorar os existentes. Segundo Tanenbaum e Van Steen (2007), é possível alcançar uma maior flexibilidade, desde que se fragmente o sistema em partes me- nores para que estas possam ser adaptadas e/ou substituídas. É preci- so fazer a descrição não somente da interface do sistema distribuído, mas também das partes do software. Ainda, as políticas e os meca- nismos de comunicação devem estar bem descritos. Em termos práticos, quanto maior for a parametrização do siste- ma, mais fácil será para tornar a aplicação customizável. Um exemplo é possibilitar que se especifique o tempo em que os arquivos serão atualizados pelo cache, pois isso minimiza os problemas de se acessar uma informação desatualizada. Logo, um sistema distribuído aberto traz benefícios como a colabora- ção, a depuração de código, o aumento da capacidade da solução e outros. 1.2.3 Segurança A segurança em sistemas distribuídos também segue os três pila- res da segurança da informação, descritos por Coulouris et al. (2013), que são a confidencialidade, a integridade e a disponibilidade. Esses conceitos são detalhados a seguir. Confidencialidade: refere-se à proteção das informações que não devem ser acessadas por pessoas não autorizadas, uma vez que são confidenciais. Integridade: relaciona-se à preservação da integridade da informação durante o armazenamento e a transmissão dos da- dos, ou seja, a informação não deve sofrer qualquer alteração em seu conteúdo durante esses procedimentos. Disponibilidade: diz respeito à garantia da disponibilidade das informações para que, quando se desejar acessá-las, elas este- jam disponíveis. Portanto, percebe-se que a confidencialidade é um grande desafio em sistemas distribuídos, nos quais os usuários acessam e comparti- lham recursos por meio de uma rede aberta, como a internet. Nesse Introdução aos sistemas distribuídos 17 caso, as técnicas de criptografia têm sido utilizadas para minimizar o acesso não autorizado aos dados. Outro problema é a inconsistência ou integridade de dados, o que pode ser resolvido com as técnicas de verificação de erros; as causas podem ser por ruído ou outros fatores durante a transmissão ou, então, durante o armazenamento dos dados. Destaca-se, ainda, que um dos grandes vilões da disponibilidade dos sistemas distribuídos é o ataque de negação de serviços – denial of service (DoS) – ou mesmo um distributed denial of service (DDoS). O objetivo desses ataques cibernéticos é tornar um website ou recurso de rede indisponível, inundando-o com tráfego mal-intencionado, para que não possa operar. Esses ataques são muito frequentes, causados por crackers, por indivíduos ou mesmo por organizações com inte- resses escusos. 1.2.4 Escalabilidade A escalabilidade pode ser definida como a facilidade com que novos recursos são incorporados em um sistema distribuído. Isso significa que a inclusão de novos usuários ou recursos ocorre de maneira transpa- rente para os usuários, as aplicações e o próprio sistema distribuído. Um sistema distribuído é escalável quando possibilita o aumento do número tanto de recursos quanto de usuários. Coulouris et al. (2013) destacam que essa é uma característica central dos sistemas distribuí- dos, mas que pode ser resolvida por meio de técnicas de replicação de dados e de distribuição a servidores que executam tarefas semelhantes. Essa capacidade de aumentar a quantidade de recursos e de usuá- rios é um fator importante em um sistema distribuído – podendo estes estar geograficamente distribuídos. Segundo Tanenbaum e Van Steen (2007), há uma grande probabilidade de que ocorra perda de desempenho se for adotada a escalabilidade em todos os aspectos. É um grande desafio para um sistema distribuído tratar a escalabilidade, principalmente com os sistemas de big data, que estão ficando cada vez maiores, com um grande volume e diversidade de dados. Ademais, a escalabilidade em sistemas distribuídos pode ser explo- rada por meio das técnicas de mitigação, distribuição e replicação, de acordo com Tanenbaum e Van Steen (2007). A mitigação de comuni- 18 Sistemas Distribuídos cação implica reduzir ao máximo o tempo durante o qual um serviço remoto ficará esperando por uma resposta. Já a distribuição consiste em fragmentar os componentes em partes menores e as espalhar pelo sistema distribuído. Por fim, a replicação de recursos – além de possi- bilitar uma maior escalabilidade – garante o aumento de desempenho, tendo em conta um melhor balanceamento da carga de trabalho entre as réplicas. 1.2.5 Tratamento de falhas O tratamento de falhas pode ser definido como a capacidade de um sistema computacional resolver os problemas tanto de hardware quanto de software de maneira autônoma e transparente. Segundo Tanenbaum e Van Steen (2007), os sistemas tolerantes a falhas po- dem utilizar duas abordagens básicas: a primeira é a redundância de hardware; a segunda, a recuperação de software. As falhas em um sistema distribuído podem ocorrer no nível de hardware e software; quando elas ocorrem, a aplicação pode produzir resultados incorretos ou mesmo ser finalizada precocemente. Geral- mente, as falhas não acontecem em todos os componentes de um sis- tema distribuído, o que torna ainda mais desafiador adotar a estratégia de tratamento de falhas. O primeiro passo é possibilitar a detecção de onde e de qual tipo de falha ocorreu – para isso, verifica-se se os dados foram corrompidos. De acordo com Coulouris et al. (2013), o desafio é o gerenciamento das falhas que não podem ser detectadas, mas que são suspeitas. Isso porque algumas falhas podem ser mascaradas por meio da re- transmissão de uma mensagem, quando ela não chegar, ou da grava- ção de dados em duas unidades de armazenamento distintas – nesse último caso, se uma falhar ou corromper, a outra pode ser utilizada. Contudo, é possível tolerar algumas falhas e deixar os usuários cientes desse fato, como nos casos em que um usuário, utilizando um navegador, tenta acessar uma página de um sistema corporativo ou um aplicativo do smartphone e se depara com a rede indisponível. No entanto, algumas aplicações precisam ser projetadas para se recuperar das falhas, ou seja, o software precisa salvar o estado toda vez que houver alguma alteração, uma vez que, se uma falha ocorre, o software retrocede até o último estado válido e retorna a operação. Introdução aos sistemas distribuídos 19 A adoção da redundância é outra forma de tornar os sistemas tole- rantes às falhas, por meio da utilização de componentes replicados no sistema distribuído. Destaca-se que as formas de operação e de falhas, em geral, são as mesmas nos diferentes tipos de sistemas distribuídos. Em virtude de que se espera oferecer um serviço de qualidade para o usuário, um sistema distribuído deve ter mecanismos que o possibilitem se recuperar das falhas, pois o usuário não está disposto a perder seus dados ou mesmo ficar com o serviço indisponível por muito tempo. 1.2.6 Concorrência A concorrência, segundo Coulouris et al. (2013), pode ser caracterizada pelo compartilhamento de recursos, tendo por objetivo uma melhor distri- buição da carga de trabalho entre os computadores do sistema distribuído. Ressalta-se que os recursos tanto de hardware (discos, impressoras e unidades de CDs ou DVDs) quanto de software (arquivos, banco de dados e aplicativos), em um sistema distribuído, são compartilhados. Normalmente, o serviço de gerenciamento do recurso compartilha- do pode manipular uma requisição por vez. Contudo, essa estratégia restringe o desempenho do tratamento de requisições, e tanto os servi- ços quanto os aplicativos devem possibilitar que as requisições possam ser processadas de maneira concorrente. A responsabilidade por garantir que o recurso opere da forma correta, em um ambiente concorrente, é do objeto que representa o recurso, e isso se aplica aos servidores e, também, aos aplicativos. Uma estratégia a ser adotada é controlar a ordem de execução e garantir que dois ou mais processos não escrevam ao mesmo tem- po na mesma região de memória, no caso do compartilhamento da memória. Para resolver esse problema, pode-se utilizar a técni- ca da programação concorrente denominada de semáforos (DEITEL; DEITEL; CHOFFNES, 2005). 1.2.7 Transparência A transparência, também chamada de abstração, pode ser definida como a ocultação da separação dos componentes de um sistema distri- buído, fazendo com que o sistema seja percebido como um elemento monolítico, em vez de um conjunto de elementos independentes. 20 Sistemas Distribuídos Nesse sentido, a transparência é uma das mais importantes ca- racterísticas em um sistema distribuído. Isso porque os usuários não devem perceber que a aplicação está executando de maneira distribuída em um computador que não seja o seu; eles nem mes- mo devem perceber que partes da aplicação estão executando em diferentes computadores. As transparências podem ser tanto de hardware como de software. De acordo com Coulouris et al. (2013), a característica de transparência pode ocorrer em diferentes níveis nos sistemas distribuídos, a saber: na transparência de acesso, o usuário não tem conhecimento quanto a se um recurso está sendo acessado local ou remota- mente, e isso possibilita o acesso aos componentes remotos e locais pelas mesmas operações; na transparência de concorrência, o acesso concorrente e o compartilhamento de recursos existem sem interferências entre os acessos; na transparência de desempenho, o sistema se reconfigura para se adaptar à carga de trabalho, com o objetivo de melhorar o desempenho; na transparência de escalabilidade, a estrutura e os algoritmos de uma aplicação não sofrem alteração à medida que mais re- cursos são adicionados, permitindo a expansão do sistema e das aplicações sem necessitar de mudanças significativas na infraestrutura; na transparência de falhas, as falhas de software e hardware não são percebidas, e isso possibilita ocultar a ocorrência de fa- lhas dos usuários; Livro na transparência de localização, os recursos são acessados sem O livro Sistemas distri- buídos: princípios e para- que o usuário perceba onde eles estão localizados fisicamente; digmas é um clássico na na transparência de mobilidade, uma movimentação é realiza- área de sistemas distri- buídos e, por essa razão, da sem prejudicar a execução dos programas e a operação dos é uma boa fonte de usuários, possibilitando a realocação de recursos e aplicações consulta para ampliar os conhecimentos, a fim de sem afetar a sua utilização; obter um maior detalha- na transparência de replicação, os recursos são replicados sem mento das características dos sistemas distribuídos. que os usuários percebam, de modo que se utilizem de múlti- TANENBAUM, A. S.; VAN STEEN, M. plas cópias de um mesmo recurso lógico, sem conhecimento da 2. ed. São Paulo: Pearson, 2007. existência das réplicas. Introdução aos sistemas distribuídos 21 Um sistema distribuído pode atender um ou mais tipos de transpa- rência, dependendo da suas características e aplicações. 1.2.8 Qualidade de serviço A qualidade de serviços está diretamente relacionada à experiência do usuário interagindo com o sistema distribuído, por isso esse siste- ma precisa ser confiável, seguro e apresentar bom desempenho. As aplicações distribuídas têm adotado estratégias para se adaptar às circunstâncias do ambiente em que se encontram. Um exemplo é o serviço de streaming distribuído pela Netflix, que adapta automatica- mente a resolução do vídeo ao dispositivo que o está reproduzindo, com base na largura de banda do usuário, visando à otimização do de- sempenho e à minimização da possibilidade de travamento. Assim, a qualidade de serviço é fundamental em diferentes ti- pos de sistemas distribuídos. Em alguns casos, o mais importante é o desempenho; em outros, a segurança ou a confiabilidade. Segundo Coulouris et al. (2013), a qualidade do serviço – quality of service (QoS) – depende dos recursos computacionais e da disponibilidade da rede. 1.3 Tipos de sistemas distribuídos Vídeo Os sistemas distribuídos podem ser classificados em três grandes tipos: computacionais, que atendem a aplicações de computação de alto desempenho; de informação, projetados para responder às aplicações corporativas que envolvam acesso a serviços distribuídos; e pervasivos, que atendem a aplicações que executam em dispositivos embarcados e móveis. Devido à complexidade envolvida no projeto de sistemas distri- buídos, é importante saber diferenciá-los e entender como são desenvolvidos. Essa classificação ajuda a evidenciar e distinguir os de- safios de cada um deles. 1.3.1 Sistemas computacionais distribuídos Esse primeiro tipo corresponde a uma classe muito importante de sistemas distribuídos, a qual – conforme Pfister (1998) – está direcionada para computação de alto desempenho – high-performance computing 22 Sistemas Distribuídos (HPC). Segundo Tanenbaum e Van Steen (2007), esse tipo de sistema ainda pode ser subdividido em clusters e grids (grades) computacionais. O conceito básico envolvido na utilização tanto dos clusters quanto dos grids é o de realizar uma combinação com a capacidade de proces- samento dos computadores da rede, criando um supercomputador. Clusters computacionais Os clusters de computadores, muitas vezes denominados de multicomputadores, possuem um conjunto de computadores dedi- cados e conectados por meio de uma rede de interconexão que é, normalmente, de alta velocidade (PFISTER, 1998) Esse tipo de sistema se popularizou à medida que os computado- res diminuíram de preço e aumentaram seu desempenho. Com isso, a construção de supercomputadores se tornou viável do ponto de vista financeiro e técnico. Em geral, esses sistemas são utilizados para processamento pa- ralelo, no qual um único programa pode ser executado em múltiplos computadores. Na Figura 6, tem-se uma ilustração de um cluster de computadores, composto de diversos computadores utilizados para processamento (chamados de nós auxiliares) e de um computador de acesso (chamado de nó controlador). Figura 6 Exemplo de cluster de computadores Rede pública Nós auxiliares Lakmal Ditmax/Shuterstock Nó controlador Nós auxiliares Fonte: Elaborada pelo autor. Introdução aos sistemas distribuídos 23