Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução Aula 01 002 Aplicações Distribuídas e TI VERDE Aula 02 035 Tratamento de Falhas Aula 03 055 Classificação de Flynn Aula 04 084 Modelo Cliente/Servidor Aula 05 112 Sockets e RPC Aula 06 072 Modelo P2P Aula 07 084 Sistemas de Arquivos Distribuídos Aula 08 104 Serviços WEB Aula 09 120 Tecnologia: Computação Ubíqua e nas Nuvens Aula 10 135 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS ESTRUTURA DA DISCIPLINA Aula de REVISÃO para AV1 RAV1 155 DIEGO RAFAEL MORAES / Simone Markenson ARQ SIST DISTRIBUÍDOS Conteúdo Programático AULA 1 Evolução da computação Conceitos de Sistemas Distribuídos Computação centralizada x Computação Distribuída O profissional da área de tecnologia da informação atua diretamente no planejamento, na implementação e na implantação de soluções de TI nas organizações. Dessa forma, é importante que compreenda os conceitos, os benefícios, as características e as restrições de cada arquitetura. Nesta aula abordaremos esses tópicos, com alguns exemplos. 3 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 1970 2013 1980 Evolução Histórica do Processamento 1950 1960 Mainframe Time-sharing Redes Sistemas Distribuídos ? Nuvem 4 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS A ERA DO MAINFRAME Main = Principal Frame = Estrutura Não está relacionado a tamanho nem a poder computacional ! Até meados dos anos 70: - Proprietário - Caro - Pouco escalável - Limites 5 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Menu 01 02 03 04 05 06 07 08 09 10 RAV1 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS Aula 4 – Classificação de Flynn Definir a classificação de Flynn; 2) Reconhecer as implementações da arquitetura MIMD e as características de desenvolvimento de aplicações para essa arquitetura; 3) Descrever a motivação a partir de alguns modelos de programação paralela. Classificação geral Detalhando cada tipo Modelos de programação ARQ SIST DISTRIBUÍDOS 84 7 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 8 Arquiteturas Sequenciais Arquiteturas Pipeline Arquiteturas Superescalares Arquiteturas SMT Arquiteturas VLIW ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Menu 01 02 03 04 05 06 07 08 09 10 RAV1 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS Aula 7 – Modelo PEER TO PEER (P2P) 1- Reconhecer o modelo Peer-to-Peer (P2P) e seus componentes de comunicação; 2- Identificar os diferentes tipos de implementação desse modelo. Características do Modelo P2P Aplicações P2P ARQ SIST DISTRIBUÍDOS 207 MISD – Multiple Instruction Single Data ????????? 89 Não há implementação desse modelo ainda. Teria de ter um módulo de controle e Todos os processadores trabalhando em cima de um único dado. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Menu 01 02 03 04 05 06 07 08 09 10 RAV1 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS Aula 9 – Serviços WEB Definir o conceito de serviços web; Identificar os componentes utilizados para o desenvolvimento desses serviços; ARQ SIST DISTRIBUÍDOS 256 Arquiteturas MIMD todos os processadores compartilham a memória principal MIMD Multiprocessadores UMA NUMA Multicomputadores MPP COW 92 Memória Compartilhada Memória NÃO Compartilhada ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Menu 01 02 03 04 05 06 07 08 09 10 RAV1 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS Aula de Revisão AV1 ARQ SIST DISTRIBUÍDOS 156 Arquiteturas MIMD Cada computador é um nó de processamento MIMD Multiprocessadores UMA NUMA Multicomputadores MPP COW 95 Memória Compartilhada Memória NÃO Compartilhada ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 15 B ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 16 C ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 17 D ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Técnicas de tratamento 74 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 19 1 – Mainframe: termo utilizado para se referenciar a um grande computador, normalmente produzido por uma grande empresa. O nome tem origem na forma com que estes computadores eram construídos. Todos os componentes (processador, memória...) do computador principal (main) são colocados em uma única estrutura (frame). – Características – Sistemas multiusuários – Sistemas proprietários -> hardware, software, rede – Instalação e manutenção feita pelo fabricante -> confiabilidade X custo Computação centralizada ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Ampliação do parque computacional, em função de: • Processadores mais rápidos e mais baratos. • Redes mais rápidas e acessíveis. • Liberdade de escolha. • Menor custo de manutenção. • Necessidade inerente de conectividade. • Aplicação básica: compartilhamento de recursos. Evolução: Os terminais foram sendo substituídos pelos primeiros microcomputadores, que começavam a ficar obsoletos. Em geral, o uso de um programa emulador de terminais e de uma unidade de disquete era suficiente para que um simples PC-XT executasse essa tarefa, uma vez que só precisaria executar o emulador. A partir deste ponto, o micro passaria a se comportar como um terminal. Em alguns casos, era necessário o uso de uma placa que compatibilizasse a forma de comunicação serial entre os dois computadores. 20 2 Microcomputadores e redes de computadores ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 21 3 Utilização das Redes de Computadores (locais e de longa distância) para execução colaborativa e cooperativa de aplicações e não somente para compartilhamento de recursos. Conceito: É um sistema em que os computadores estão conectados em rede e coordenam suas ações por meio de troca de mensagens. Sistema Distribuído = computadores + rede + aplicação Sistemas Distribuídos ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 22 4 Vantagens: • Melhor relação preço/desempenho • Capacidade de crescimento incremental (escalabilidade) • Tolerância a falhas Comparação com sistemas centralizados Desvantagens: • Falta de padronização para desenvolvimento de software • Falta de uma divisão clara entre sistema/aplicação • Latência e possibilidade de congestionamento na rede • Redução da segurança ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS AINDA EXISTE “MAINFRAME”? Desde seu início, a indústria de computadores tem se voltado para uma pesquisa interminável, em busca de ampliar, cada vez mais, seu poder no âmbito computacional. O Eniac podia executar 300 operações por segundo, sendo, tranquilamente, mil vezes mais rápido do que qualquer calculadora anterior a ele, e, mesmo assim, as pessoas ainda não estavam satisfeitas. Hoje temos máquinas um milhão de vezes mais rápidas do que o Eniac e, contudo, existe demanda para um poder computacional maior. Não importa quanto poder computacional exista: ele nunca será suficiente. No passado, a solução era fazer com que o relógio do processador fosse executado mais rápido (overclocking). Infelizmente, estamos começando a atingir alguns limites fundamentais na frequência do clock. De acordo com a teoria da relatividade de Einstein, nenhum sinal elétrico pode propagar mais rápido do que a velocidade da luz. Construir computadores com tamanho reduzido pode ser possível, mas, logo surge outro problema fundamental: a dissipação de calor. Quanto maior a frequência do relógio do processador, maior será a produção de calor produzida por ele; e quanto menor o computador, maiores serão os problemas associados à dissipação desse calor. Uma maneira de aumentar a velocidade é fazer uso de computadores altamente paralelos. Essas máquinas são construídas com muitas CPUs (unidade central de processamento), objetivando processar, coletivamente, com muito mais poder computacional do que com apenas uma única CPU. Matéria no Olhar Digital sobre Main Frame 24 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS AINDA EXISTE “MAINFRAME”? Por outro lado, com a evolução da internet, podemos analisar que um sistema com centenas de computadoresespalhados pelo mundo não difere de um sistema de centenas de computadores em uma única sala, embora a latência e outras características técnicas sejam diferentes. Neste contexto, colocar uma quantidade representativa de computadores em uma sala é até fácil, desde que se tenham recursos financeiros, espaço físico e uma infraestrutura mínima. O espaço deixará de ser um problema, se esses computadores estiverem espalhados ao redor do mundo. A preocupação surge quando queremos que eles se comuniquem uns com os outros para trabalhar em conjunto na solução de um único problema. Os sistemas com múltiplos processadores caracterizam-se por possuir mais de uma CPU, interligadas, trabalhando em conjunto. Múltiplos processadores podem ser utilizados, simultaneamente, por diversos processos diferentes, e, com eles, novos problemas de concorrência são introduzidos, porque vários processos podem querer acessar um dispositivo ao mesmo tempo. Matéria no Olhar Digital sobre Main Frame 25 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS AS REDES DE COMPUTADORES Qual a diferença entre um computador na sala ao lado ou na China? Para que uma rede? Compartilhamento Escalabilidade Diferentes formas de conexão 26 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Sistemas em que os computadores estão conectados em rede e coordenam suas ações através de troca de mensagens. SISTEMAS DISTRIBUÍDOS CARACTERÍSTICAS: baixo acoplamento e atrasos na comunicação; processos em sistemas computacionais distintos com probabilidade de falhas; comunicação geralmente não confiável, onde existem atrasos, variação de atrasos, perdas e, em alguns casos, baixas larguras de banda; dificuldade em definir a ordem dos eventos e estado global do sistema, uma vez que a comunicação acontece por troca de mensagens; ambiente geralmente marcado pela heterogeneidade. 27 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS 28 Com a melhoria das tecnologias, o que se conseguia executar, algumas décadas atrás, somente com computadores que custavam milhões de dólares, hoje se consegue executar com computadores de baixo custo. O segundo fator é o surgimento de redes de computadores de alta velocidade, em que informações podem ser transferidas entre computadores na faixa de microssegundos. Como resultado, é possível conectar diversos computadores por meio de uma rede de alta velocidade para executar um sistema de computação colaborativo. Estes sistemas são geralmente chamados de sistemas distribuídos (SD). •Sistema distribuído permite uma nova forma de fazer ciência –Teoria -> experimentos –Teoria -> simulações •Computação usada para modelar sistemas físicos •Vantagens –Possibilidade de repetição de eventos –Manipulação de parâmetros –Estudo de sistemas onde não há teorias exatas ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Para que? Resolver problemas! Muito grandes: modelagem da terra/clima, simulações de reservatórios de petróleo, problemas com grandes escalas (cosmologia). Muito complexos: física de partículas, dinâmica de fluidos, modelagem de comportamento de pessoas. Muito caros: produção e exploração de petróleo, simulação de acidentes. Muito perigosos: tolerância a falhas em aviões, teste de dispositivos nucleares, simulação de estratégias de defesa. SISTEMAS DISTRIBUÍDOS 29 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Por que precisamos de sistemas distribuídos? Eles podem resolver tudo? 30 Problemas que requerem alto desempenho computacional Modelagem climática Mapeamento do genoma Modelagem de semicondutores Dispersão de poluição Projetos farmacêuticos Modelagem de reatores nucleares Renderização de imagem ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Acoplamento 31 Fortemente acoplados - quando os processadores compartilham uma mesma memória principal. Fracamente acoplados – os diversos processadores/estações presentes no sistema utilizam sua memória local individualmente. Sistemas centralizados - Multiprocessador de memória compartilhada é um sistema de computador no qual duas ou mais CPUs compartilham acesso total a uma memória principal comum. Multiprocessadores são populares e atrativos, porque oferecem um modelo de comunicação simples, e a sincronização é possível mediante o emprego de diversas técnicas bem definidas. Uma desvantagem é que os multiprocessadores de grande porte são difíceis de construir e, por isso, são caros. Sistemas distribuídos - Uma solução alternativa que tem sido empregada com sucesso para solucionar esse problema é a utilização de multicomputadores, que são CPUs que não compartilham memória principal. Cada CPU tem sua própria memória e é gerenciada por um sistema operacional individualmente. Esses sistemas também são conhecidos como cluster – COWS (cluster of workstations - aglomerados de estações de trabalho). ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Por que? Existem limites físicos. Velocidade da luz. Miniaturização dos componentes. Isolamento e dissipação de calor. Desafios? Sim, claro. Ausência de fonte comum de tempo (relógio global) Ausência de memória compartilhada Compartilhamento de recursos SISTEMAS DISTRIBUÍDOS 32 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO: Podemos comparar sistemas centralizados x sistemas distribuídos: Vantagens dos sistemas distribuídos: Melhor relação preço/desempenho Capacidade de crescimento incremental (escalabilidade) Tolerância a falhas Desvantagens dos sistemas distribuídos: Falta de padronização para desenvolvimento de software Falta de uma divisão clara entre sistema/aplicação Latência e possibilidade de congestionamento na rede Redução da segurança 33 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATIVIDADE PROPOSTA: Pesquisar sobre Sistemas Distribuídos. Há um grande número de sistemas computacionais que nos auxiliam nas tarefas diárias´. Será que algum deles é sistema distribuído? Era pra colocar no fórum. 34 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MOTIVAÇÃO Ampla utilização das redes de computadores Velocidade e Confiabilidade Trabalho cooperativo Aumento do poder computacional 36 Limitação das Máquinas Fatores econômicos podem limitar a capacidade de um sistema! Sendo assim, ao implementar um sistema com máquinas de baixo custo, é possível projetar um poderoso sistema sem a utilização de equipamentos dispendiosos. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Computação Distribuída é para mim? 37 Vídeo World Community Grid (WCG) www.worldcommunitygrid.org www.eugrido.com.br ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS A computação em grade é um grupo de computadores em rede que trabalham em conjunto, como um super computador virtual, para executar tarefas grandes, como analisar grandes conjuntos de dados e modelagem do clima. Por meio da nuvem, é possível montar e usar vastas grades de computadores por períodos de tempo e fins específicos, pagando somente pelo seu uso e economizando tempo e gastos com a aquisição e implantação de recursos necessários. Ao dividir as tarefas entre várias máquinas, o tempo de processamento é reduzido de forma significativa, aumentando a eficiência e diminuindo os recursos desperdiçados. Ao contrário da computação paralela, os projetos de computação em grade não apresentam nenhuma dependência de tempo associada a eles. Eles utilizam computadores que fazem parte da rede apenas enquanto estiverem ociosos e os operadores podem realizar tarefas não relacionadas à grade a qualquer momento. A segurança deve ser levada em conta ao utilizar grades de computadores, visto que os controles sobre os nós de membros costumam ser dispersos. A redundância também deve ser incorporada, pois muitos computadores podem ser desconectados ou falhar durante o processamento. COMPUTAÇÃO EM GRADE (GRID) Worldwide LHC Computing Grid (CERN) http://boinc.berkeley.edu/ 38 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS DESAFIOS DA COMPUTAÇÃODISTRIBUÍDA Concorrência A execução concorrente é uma característica intrínseca de um sistema distribuído, na qual os processos disputam pelos recursos compartilhados. Ausência de Relógio Global A coordenação dos processos depende de uma noção compartilhada do tempo em que as ações dos programas ocorrem. Falhas independentes Falhas na rede, nos sistemas ou nos processos demoram a ser percebidas nos sistemas distribuídos. (COULOURIS; DOLLIMORE; KINDBERG, 2007). 39 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS FALÁCIAS DA COMPUTAÇÃO DISTRIBUÍDA Os sistemas distribuídos são diferentes dos softwares tradicionais, porque seus componentes estão dispersos em uma rede. A rede é confiável. A rede é segura. A rede é homogênea. A topologia não muda. A latência é zero. A largura de banda é infinita. O custo do transporte é zero. Há somente um administrador 40 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATRIBUTOS DOS SITEMAS DISTRIBUÍDOS Latência Tempo entre o início de uma operação e seu término. O termo latência é usado, normalmente, para comunicações entre partes de um sistema Taxa de Transmissão Mede a capacidade de transmissão/recepção de informações por tempo. Bottleneck Gargalo. Speedup Termo que significa ganho relativo de velocidade ou desempenho. Como exemplo de speedup, podemos citar a razão dos tempos de execução sequencial e o paralelo 41 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Escalabilidade Capacidade de melhoria do desempenho do sistema distribuído conforme cresce o número de elementos processadores. Balanceamento de Carga Permite ao sistema distribuído dividir adequadamente suas tarefas, para que um elemento processador não fique mais sobrecarregado que outros. Confiabilidade Funcionar continuamente sem falhas. Tolerância a falhas Capacidade de o sistema sobreviver à falha de alguns de seus elementos. Disponibilidade Característica que indica quanto tempo o sistema funcionará ininterruptamente sem ser afetado por falhas, manutenção preventiva ou corretiva etc. Estar pronto para ser usado imediatamente. ATRIBUTOS DOS SITEMAS DISTRIBUÍDOS 43 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATRIBUTOS DOS SITEMAS DISTRIBUÍDOS Capacidade de manutenção facilidade com que um sistema que falhou pode ser consertado. Mobilidade: movimento de recursos ou clientes dentro do sistema não podem afetar a operação dos usuários ou programas Abertura: determina se o sistema pode ser estendido ou reimplementado de diversas maneiras 44 Segurança Capacidade de melhoria do desempenho do sistema distribuído conforme cresce o número de elementos processadores. Migração de Tarefas Transferência da responsabilidade de execução de uma tarefa de um elemento para outro. Podem ser tarefas de processos ou computação. Migração de Dados Transferência da dados de um elemento processador para outro. Replicação Duplicação de recursos de um elemento processador para outro. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATRIBUTOS DOS SITEMAS DISTRIBUÍDOS 45 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 46 Um computador japonês conquistou o 1º lugar no ranking de junho de 2011, com desempenho medido em 8.16 petaflops. O K computer é mais poderoso que os próximos cinco sistemas da lista combinados. O desempenho foi medido com 68.554 processadores SPARC64VIIIfx, cada um com oito núcleos, em um total de 548.352 núcleos (quase o dobro de qualquer outro sistema dessa lista). Até sua conclusão, essa máquina terá mais de 80.000 processadores! Máquinas mais velozes ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Desde 1993, o site TOP500 publica, semestralmente, um ranking dos 500 computadores com maior desempenho no mundo. Rank Site Computer 1 DOE/NNSA/LLNL UnitedStates Sequoia-BlueGene/Q, Power BQC 16C 1.60 GHz,Custom,IBM 2 RIKEN Advanced Institute for Computational Science (AICS),Japan Kcomputer, SPARC64VIIIfx2.0GHz, Tofuinterconnect,Fujitsu 3 DOE/SC/Argonne NationalLaboratory,UnitedStates Mira-BlueGene/Q, Power BQC 16C 1.60GHz,Custom,IBM 4 LeibnizRechenzentrum Germany SuperMUC-iDataPlexDX360M4, Xeon E5-2680 8C 2.70GHz,InfinibandFDR,IBM 5 NationalSupercomputingCenter inTianjin,China Tianhe-1A-NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA2050,NUDT 47 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TOP 500 - BRASIL Rank Site System Cores Rmax (TFlop/s) Rpeak (TFlop/s) Power (kW) 68 PETROBRAS Brazil Grifo04- Itautec Cluster, Xeon X5670 6C 2.930GHz,InfinibandQDR, NVIDIA 2050 Itautec 17.408 251.5 563.4 365.5 79 INPE (National Institute for Space Research) Brazil Tupi- Cray XE6, Opteron 6172 12C 2.10GHz, Cray Gemini interconnect Cray Inc. 31.104 214.2 261.3 456 NACAD/COPPE/UFRJ Brazil Galileu- SunBladex6048, Xeon X5560 2.8Ghz,InfinibandQDR Oracle 6.464 64.6 72.4 430 48 Na lista do ranking, são obtidos pelo benchmark os seguintes resultados: Rmax – performance para o maior problema executado em uma máquina (em Gflop/s); Nmax – tamanho do maior problema executado em uma máquina; N1/2 – tamanho quando metade de Rmax é executado; Rpeak – pico de performance teórico para a máquina (em Gflop/s). ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Gráfico do TOP 500 49 A seguir, gráficos fornecidos pelo ranking TOP500 que apresentam o desenvolvimento da performance dos supercomputadores, de 1993 a 2011, e sua projeção: ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TI VERDE VIRTUALIZAÇÃO 50 A virtualização é a camada de abstração entre sistemas de hardware de computador e do software que roda nesses sistemas, proporcionando uma visão lógica dos recursos de computação. Trata-se de uma das formas de economizar recursos e praticar TI verde! A virtualização trata de estender ou substituir uma interface existente, de modo a imitar o comportamento de outro sistema. Uma das razões mais importantes para introduzir a virtualização na década de 1970 foi permitir que softwares herdados (aplicações e sistemas operacionais) executassem em hardwares de mainframe. (TANENBAUM, 2007) Procure, por exemplo, comparar o que é real e o que é virtual! Algo real possui características físicas; já o virtual está vinculado à simulação. Sendo assim, a virtualização pode ser definida como uma simulação de um ambiente real. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS O que fazer com o lixo eletrônico? 52 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO Sistemas Distribuídos Desafios: ausência de memória compartilhada, relógio comum, falhas independentes Falácias : existe uma rede Aplicações : cluster, grid TI verde : melhor utilização dos equipamentos 53 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATIVIDADE PROPOSTA (02): 54 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS INTRODUÇÃO O profissional da área de Tecnologia da Informação atua diretamente no planejamento, na implementação e na implantação de soluções de TI nas organizações. Dessa forma, é importante que sejam compreendidos os conceitos, os benefícios, as características e as restrições dos sistemas tolerantes a falhas e com alta disponibilidade. Tais sistemas devem ser confiáveis! 56 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS FALHAS EM SISTEMAS DISTRIBUÍDOS Uma característica dos sistemas distribuídos que os distingue de sistemas centralizados é a noção de falha parcial. A falha parcial pode acontecer quando um componente em um sistema distribuído não funciona. Essa falha pode afetar a operação adequada de outros componentes e, ao mesmo tempo, deixar outros totalmente ilesos. Está funcionando ???????? 57 FALHAS PARCIAIS A falha em sistemas não distribuídos quase sempre é TOTAL, no sentido de que afeta todos os componentes e pode, facilmente, fazer o sistema inteiro cair. Um objetivo importante do projeto de sistemasdistribuídos é construir o sistema de tal modo que possa se recuperar automaticamente de falhas parciais, sem afetar, seriamente, seu desempenho global. Em particular, sempre que ocorrer uma falha, o sistema distribuído deve tolerar falhas e continuar a funcionar até certo ponto, mesmo na presença dessas falhas. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TOLERÂNCIA A FALHAS Disponibilidade estar pronto para ser usado imediatamente Confiabilidade funcionar continuamente sem falhas. Segurança deixar de funcionar corretamente durante certo tempo e nada de catastrófico acontecer. Capacidade de manutenção facilidade com que um sistema que falhou pode ser consertado. 58 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TOLERÂNCIA A FALHAS 59 Disponibilidade Consiste na propriedade de um sistema estar pronto para ser usado imediatamente. Trata-se da probabilidade de o sistema funcionar corretamente em qualquer momento determinado e estar disponível para executar suas funções em nome de seus usuários. A alta disponibilidade, por sua vez, representa o que provavelmente funcionará em dado instante de tempo. Por exemplo, se um sistema não cai nunca, mas é desligado por duas semanas em um determinado mês, todos os anos, tem alta confiabilidade, mas somente 96% de disponibilidade. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TOLERÂNCIA A FALHAS 60 Confiabilidade Consiste na propriedade de um sistema poder funcionar continuamente sem falhas. É definida em termos de um intervalo de tempo, não de um instante de tempo. A alta confiabilidade representa o que provavelmente continuará a funcionar, sem interrupção, durante um período de tempo relativamente longo. Por exemplo, se um sistema ficar fora do ar por 1ms a cada hora, terá disponibilidade de mais de 99,99%, mas sua confiabilidade ainda será muito baixa. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TOLERÂNCIA A FALHAS 61 Segurança Se um sistema deixar de funcionar corretamente durante um certo tempo, nada de catastrófico acontecerá. É o que acontece, por exemplo, com sistemas de controle de processos usados em usinas de energia nuclear ou sistemas para enviar pessoas ao espaço. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TOLERÂNCIA A FALHAS 62 Capacidade de manutenção Consiste na facilidade com que um sistema que falhou possa ser consertado. Sistemas de alta capacidade de manutenção também podem mostrar alto grau de disponibilidade, em especial se as falhas puderem ser detectadas e reparadas automaticamente. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Falha, Erro e Defeito Falha (físico) Erro (informação) Defeito (erro percebido) A HISTÓRIA DO BUG 63 O defeito acontece quando o sistema não pode cumprir o que foi especificado ou prometido. Em particular, se um sistema distribuído é projetado para oferecer a seus usuários uma série de serviços, o sistema falha quando um ou mais desses serviços não podem ser fornecidos completamente. O erro representa o estado de um sistema que pode levar a uma falha. É o caso da transmissão de pacotes por uma rede. Espera-se que alguns pacotes estejam danificados quando chegam ao receptor. Meios de transmissão com problemas podem facilmente danificar pacotes. Erros de transmissão também podem ser causados por más condições atmosféricas, como ocorre com redes sem fio. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS TIPOS DE FALHAS 64 Transientes As falhas transientes ocorrem uma vez e, depois, desaparecem. Se a operação for repetida, a falha não acontecerá novamente. Por exemplo, um pássaro voando pelo feixe de um transmissor de microondas pode causar perda de bits em alguma rede. Intermitentes As falhas intermitentes ocorrem e desaparecem por sua própria vontade. Depois, essas falhas reaparecem e assim por diante. Por exemplo, um conector com um contato frouxo causará, muitas vezes, uma falha intermitente. Permanentes As falhas permanentes continuarão a existir até que o componente faltoso seja substituído. É o caso dos chips queimados e dos bugs de software. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE FALHAS 65 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE FALHAS 66 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE FALHAS 67 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE FALHAS 68 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE FALHAS 69 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE FALHAS 70 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Técnicas de tratamento 71 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Técnicas de tratamento 72 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Técnicas de tratamento 73 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Técnicas de tratamento 75 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Técnicas de tratamento 76 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Acordo em Sistemas com Falha 77 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Detecção de falha 78 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RECUPERAÇÃO 79 Uma vez ocorrida a falha, é essencial que o processo em que a mesma aconteceu se possa recuperar para um estado correto. A recuperação de um erro é fundamental para a tolerância à falha! ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS FORMAS DE RECUPERAÇÃO DE ERRO 80 Essencialmente, existem duas formas de recuperação de erro, quais sejam: ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS No dia a dia, o que fazemos? 81 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO Identificação das falhas Tolerância a falhas Falhas, Erros e Defeitos “QUEM TEM DOIS TEM UM. QUEM TEM UM NÃO TEM NENHUM.” 82 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATIVIDADE PROPOSTA (03): Complete a frase: A detecção de falhas é uma das bases da tolerância à falha em sistemas distribuídos. 83 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS INTRODUÇÃO 85 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS PRINCIPIOS DA CLASSIFICAÇÃO Fluxo de instruções Fluxo de Dados 86 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS SISD – Single Instruction Single Data Máquina clássica de Von Neumann (não paralela) 87 C[i] = A[i] + B[i] Soma de 2 vetores ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS SIMD – Single Instruction Multiple Data (Computador Vetorial: CRAY) Arquitetura vetorial – Execução síncrona 88 C = A + B Soma de 2 vetores ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MIMD – Multiple Instruction Multiple Data Execução simultânea de instruções diferentes para cada dados 90 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MIMD Multiprocessadores UMA NUMA Multicomputadores MPP COW Arquiteturas MIMD – Memória Compartilhada 91 Memória Compartilhada Memória NÃO Compartilhada Limitação: colocar vários processadores no mesmo barramento. Criaria um enorme gargalo no acesso à memória. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Arquiteturas MIMD Memória global compartilhada e memória local. MIMD Multiprocessadores UMA NUMA Multicomputadores MPP COW 93 Memória Compartilhada Memória NÃO Compartilhada ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Arquiteturas MIMD – Memória Compartilhada MIMD Multiprocessadores UMA NUMA Multicomputadores MPP COW 94 Memória Compartilhada Memória NÃO Compartilhada ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Arquiteturas MIMD Estações de trabalho interligadas MIMD Multiprocessadores UMA NUMA Multicomputadores MPP COW 96 Memória Compartilhada Memória NÃO Compartilhada ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Classificação de Flynn e Modelos de Programação 97 Os nós são compostos de componentes do sistema ou de chaves que fazem o roteamento das mensagens entre componentes. O enlace é uma conexão entre dois nós. Bissecção : número mínimo de enlaces que precisam ser cortadospara dividir a rede em duas metades não conectadas. Diâmetro da rede: distância mais curtas entre os dois nós mais remotos do esquema de interconexão. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 98 Coerência de cache A coerência de memória passou a ser uma consideração de projeto quando surgiram os caches, porque as arquiteturas de computador permitiam caminhos de acesso diferentes aos dados (por meio da cópia do cache ou da cópia da memória principal). Em sistemas multiprocessadores, o tratamento da coerência é complexo, pois cada processador mantém um cache privado. A coerência de cache pode ser UMA ou NUMA. Vamos conhecê-las? Coerência de cache UMA Implementar protocolos de coerência de cache para multiprocessadores UMA é simples, pois os caches são relativamente pequenos, e o barramento que conecta a memória compartilhada é relativamente rápido. Quando um processador atualiza um item de dado, o sistema também deve atualizar ou descartar todas as instâncias daquele dado nos caches de outros processadores e na memória principal, o que pode ser realizado por escuta do barramento (também denominada escuta do cache). Nesse protocolo, um processador escuta o barramento, determinando se uma escrita requisitada de outro processador é para um item de dado que está no cache do processador. Se o dado residir no cache do processador, esse remove o item de dado de seu cache. A escuta de barramento é de simples implementação, mas gera tráfego adicional no barramento compartilhado. NUMA com cache coerente (CC-NUMA) Quando ocorre uma falha de cache em um nó, este contacta o nó associado ao endereço de memória requisitado. Se o item de dado estiver limpo (ou seja, se nenhum outro nó tiver uma versão modificada do item de dado em seu cache), o nó nativo o despachará para o cache do processador requisitante. Se o item de dado estiver sujo (ou seja, se outro nó escrever para o item de dado, desde a última vez, que a entrada da memória principal foi atualizada), o nó nativo despachará a requisição para o nó que tem a cópia suja. Esse nó enviará o item de dado para o requisitante e, também, para o nó nativo. Similarmente, requisições para modificar dados são realizadas via nó nativo. O nó que desejar modificar dados em determinado endereço de memória requisita propriedade exclusiva dos dados. A versão mais recente dos dados (se já não estiver no cache do nó modificador) é obtida da mesma maneira que uma requisição de leitura. Após a modificação, o nó nativo notifica a outros nós, com cópias dos dados, que esses foram modificados. Esse protocolo é relativamente simples de implementar, porque todas as leituras e escritas contatam nó nativo. Embora possa parecer ineficiente, esse protocolo de coerência requer o número máximo de comunicações de rede. Esse protocolo também facilita a distribuição de carga por todo o sistema, designando cada nó nativo com, aproximadamente, o mesmo número de endereços, o que aumenta a tolerância à falha e reduz a contenção. Contudo, se a maioria dos acessos aos dados vier de nós remotos, esse protocolo pode apresentar mau desempenho. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 99 Arquiteturas de acesso à memória ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 100 Acesso uniforme à memória - UMA Sistemas UMA também são denominados sistemas multiprocessadores simétricos – Symmetric MultiProcessor (SMP) –, porque qualquer processador pode ser designado para qualquer tarefa, e todos os processadores compartilham todos os recursos (incluindo memória, dispositivos de E/S e processos). Os multiprocessadores UMA com um pequeno número de processadores normalmente usam uma interconexão de rede de barramento compartilhado ou de matriz de comutação de barras cruzadas. Os dispositivos de E/S são ligados diretamente à rede de interconexão e igualmente acessíveis a todos os processadores. Arquiteturas UMA são encontradas, normalmente, em sistemas multiprocessadores pequenos (de dois a oito processadores). Os multiprocessadores UMA não escalam bem – um barramento torna-se rapidamente saturado quando mais do que alguns processadores acessam a memória principal simultaneamente. As matrizes de comutação de barras cruzadas, por sua vez, ficam muito caras mesmo para sistemas de pequena dimensão. Veja,um diagrama esquemático que representa uma arquitetura de acesso uniforme à memória – Uniform Memory Access multiprocessor (UMA): ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 101 Acesso não uniforme à memória - NUMA Os multiprocessadores NUMA abordam os problemas de escalabilidade da arquitetura UMA. O gargalo primário de um sistema UMA de grande escala é o acesso à memória compartilhada – o desempenho degrada-se devido à contenção entre numerosos processadores que estão tentando acessar a memória compartilhada. Se uma matriz de comutação de barras cruzadas for usada, o custo do esquema de interconexão pode aumentar substancialmente, para facilitar vários caminhos à memória compartilhada. Os multiprocessadores NUMA gerenciam esses problemas, reduzindo a restrição de uniformidade imposta aos tempos de acesso à memória para todos os processadores que estão acessando qualquer item de dado. A arquitetura NUMA tem alto grau de escalabilidade, pois reduz colisões no barramento quando a memória local de um processador atende à maioria das requisições de memória do processador. Veja o diagrama esquemático e uma figura que representam uma arquitetura de acesso não uniforme à memória – Non Uniform Memory Access multiprocessor : diagrama de uma arquitetura NUMA Diagrama de arquitetura NUMA integrado a arquitetura UMA: Fonte: http://www.tomshardware.com/reviews/brute-force-quad-cores,1371-4.html. Fonte: http://download.oracle.com/docs/cd/A57673_01/DOC/server/doc/SPS73/chap3.htm. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 102 NUMA com cache coerente (CC-NUMA) Quando ocorre uma falha de cache em um nó, este contacta o nó associado ao endereço de memória requisitado. Se o item de dado estiver limpo (se nenhum outro nó tiver uma versão modificada do item de dado em seu cache), o nó nativo o despachará para o cache do processador requisitante. Se o item de dado estiver sujo (se outro nó escrever para o item de dado, desde a última vez, que a entrada da memória principal foi atualizada), o nó nativo despachará a requisição para o nó que tem a cópia suja. Esse nó enviará o item de dado para o requisitante e, também, para o nó nativo. Similarmente, requisições para modificar dados são realizadas via nó nativo. O nó que desejar modificar dados em determinado endereço de memória requisita propriedade exclusiva dos dados. A versão mais recente dos dados (se já não estiver no cache do nó modificador) é obtida da mesma maneira que uma requisição de leitura. Após a modificação, o nó nativo notifica a outros nós, com cópias dos dados, que esses foram modificados. Esse protocolo é relativamente simples de implementar, porque todas as leituras e escritas contatam nó nativo. Embora possa parecer ineficiente, esse protocolo de coerência requer o nº máximo de comunicações de rede. Esse protocolo também facilita a distribuição de carga por todo o sistema, designando cada nó nativo com, aproximadamente, o mesmo nº de endereços, o que aumenta a tolerância à falha e reduz a contenção.Mas, se a maioria dos acessos aos dados vier de nós remotos, esse protocolo pode apresentar mau desempenho. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 103 Arquit. de memória so/e de cache – COMA Os sistemas NUMA colocam dados na memória local do processador para os dados que são acessados mais frequentemente, o que não é prático para um compilador ou programador implementar, pois os padrões de acesso aos dados mudam dinamicamente. Sistemas operacionais podem executar essa tarefa, mas transferindo somente porções de dados do tamanho de uma página, o que pode reduzir a velocidadede migração de dados. Além disso, itens de dados diferentes em uma única página, muitas vezes são acessados por processadores em nós diferentes. Os multiprocessadores COMA têm um ou mais processadores, cada um com seu cache associado e uma fração da memória global compartilhada. Contudo, a memória associada a cada nó é organizada como um grande cache – conhecido como Memória de Atração (MA) –, o que permite que o hardware migre dados eficientemente na granularidade de uma linha de memória (equivalente a uma linha de cache), mas na memória principal, normalmente de quatro ou oito bytes. Isso ocorre também porque a memória local de cada processador é vista como um cache. Mas diferentes podem ter cópias da linha de memória. Com essas modificações de projeto, é comum que os dados residam na memória local do processador, que os usa mais frequentemente, o que reduz a latência média de falta de cache. As permutas representam uma sobrecarga de memória devido à duplicação dos itens de dados em vários módulos de memória, hardware e protocolos complicados para garantir que atualizações da memória sejam refletidas em cada MA do processador. Essa sobrecarga resulta em latência mais alta para as faltas de cache atendidas remotamente. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 104 Sem acesso à memória remota - NORMA Em um sistema SVM, quando um processo requisita uma página que não está na memória local de seu processador, o sistema operacional carrega a página na memória local por meio de outro módulo de memória (de um computador remoto através de uma rede) ou do armazenamento secundário (por exemplo, um disco). Os nós de sistemas NORMA que não suportam SVM devem compartilhar dados por meio de passagem de mensagens explícita. Os multiprocessadores UMA, NUMA e COMA são fortemente acoplados. Embora escalem bem, os multiprocessadores NUMA (e COMA, em menor extensão) requerem software e hardware complexos. O software controla o acesso a recursos compartilhados, como a memória, por exemplo. O hardware, por sua vez, implementa o esquema de interconexão. Como exemplo de sistema multiprocessador distribuído NORMA, podemos citar o Google, que alimenta seu serviço usando milhares de servidores de baixo custo localizados no mundo inteiro. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 105 PROGRAMAÇÂO DISTRIBUÍDA ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS COMO FAZER MAIS RÁPIDO ? Aumentar a frequência da CPU Otimização do Algoritmo Colaboração Paralelismo - Execução de uma tarefa em mais de uma CPU (os processadores colaboram para execução dessa tarefa) Concorrência – Os processos disputam CPUs (uma ou mais). 106 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS COMO FAZER MAIS RÁPIDO ? 107 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS CARACTERÍSTICAS DA PROGRAMAÇÃO DISTRIBUÍDA Interação da aplicação e do usuário com o ambiente distribuído em níveis diferentes; Suporte a plataformas heterogêneas através de uma camada de software entre o kernel e a aplicação (middleware); Problemas como custo e carência de produtos de software adequados; Programação paralela, utilizando bibliotecas de troca de mensagem (como, por exemplo, o MPI e o PVM) ou bibliotecas baseadas em memória compartilhada (como, por exemplo, Pthreads). 108 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS CARACTERÍSTICAS DA PROGRAMAÇÃO DISTRIBUÍDA 109 A troca de mensagens (message passing) é o método de comunicação baseada no envio e recebimento de mensagens por meio de uma rede de computadores, seguindo regras de protocolo de comunicação entre vários processadores que possuam memória própria. Os processos possuem acesso à memória local. As informações, por sua vez, são enviadas da memória local do processo à memória local do processo remoto. Nesse modelo, o programador é responsável pela sincronização das tarefas. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO Sistemas classificados quanto ao fluxo de instruções e dados Para cada tipo de sistema um modelo de programação 110 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATIVIDADE PROPOSTA (04): 111 S S S D D I N U M A ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Menu 01 02 03 04 05 06 07 08 09 10 RAV1 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS Aula 5 – Modelo Cliente/Servidor Modelos de comunicação; Características de cada componente do modelo cliente/servidor. Introdução aos modelos de comunicação e a arquitetura cliente/servidor ARQ SIST DISTRIBUÍDOS 112 PARA QUE SERVE UM MODELO? Representa de forma unívoca um conjunto de características 113 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO Modelos de comunicação definem forma de comunicação entre processos O Modelo Cliente-Servidor é baseado na comunicação de dois PROCESSOS por troca de mensagens. 114 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO Modelos de comunicação definem forma de comunicação entre processos O Modelo Cliente-Servidor é baseado na comunicação de dois PROCESSOS por troca de mensagens. 115 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELOS DE COMUNICAÇÃO Aqueles que definem a forma como os componentes dos sistemas interagem. 116 Aqueles que definem o comportamento e as propriedades dos componentes. MODELOS ARQUITETURAIS FUNCIONAIS FUNDAMENTAIS * Na WA ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS MODELO DE ARQUITETURA EM SISTEMAS DISTRIBUÍDOS confiável gerenciável adaptável rentável. simplifica e abstrai as funções dos componentes individuais desse sistema posicionamento dos componentes em uma rede de computadores define padrões para a distribuição de dados e da carga de trabalho. relacionamentos entre os componentes papéis funcionais e os padrões de comunicação entre eles. 117 A arquitetura ou organização de um sistema representa sua estrutura em termos de componentes especificados separadamente. Essa estrutura deve atender às demandas atuais e futuras impostas sobre ela. A maior preocupação é tornar o sistema: ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Os modelos de arquitetura de um sistema distribuído apresentam estrutura em camadas de software de diferentes níveis de abstração, quais sejam: plataforma e middleware. Para definir o padrão de distribuição, devemos considerar o posicionamento e a carga de trabalho de cada componente. Além disso, as tarefas devem ser alinhadas de forma a atender aos requisitos de desempenho e confiabilidade. Características dos modelos de arquitetura 118 Os modelos de arquitetura classificam-se como: • Cliente/servidor; • Peer-to-peer; • De variações. Denominação frequente para as camadas de hardware e software de nível mais baixo. Camada de software que tem como objetivo mascarar a heterogeneidade e fornecer um modelo de programação conveniente para os desenvolvedores de aplicações distribuídas. Utilização de serviços oferecidos por diversos servidores ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Desempenho: Os desafios decorrentes da distribuição de recursos excedem a necessidade de gerenciamento das atualizações concorrentes. Os principais problemas associados à limitação finita da capacidade de recursos de processamento e de comunicação são: reatividade, throughput e balanceamento de carga. Qualidade de serviço: As principais propriedades não-funcionais dos sistemas que afetam a qualidade dos serviços fornecidos aos clientes são: Confiabilidade Segurança Desempenho Adaptabilidade Disponibilidade Replicação: Os problemas de desempenho podem ser (em parte) solucionados por meio de uso de replicação de dados. Dependabilidade: Pode ser definida como correção, seguranã e confiabilidade. Trata-se de um requisito necessário à maior parte dos domínios da aplicação, o que significa que é crucial não apenas nas atividades de comando e controle, mas também em muitas aplicações comerciais. 119 Requisitos de projetodos modelos de arquitetura ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 120 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ABSTRAÇÕES PLATAFORMA = HARDWARE + SOFTWARE BÁSICO 121 CORBA (aberta), ADCOM (MS), RMI (Remote Method Invocation - Java) Exemplos comuns de middleware incluem middleware de banco de dados, middleware de servidor de aplicativos, middleware orientado a mensagens, middleware de web e monitores de processamento de transações. Normalmente, cada programa oferece serviços de sistemas de mensagens para que diversos aplicativos possam se comunicar utilizando estruturas de mensagens como protocolo SOAP, serviços Web, REST (representational state transfer) e JSON (JavaScript Object Notation). Embora todos os tipos de middleware executem funções de comunicação, o tipo que uma empresa escolherá depende de qual serviço está sendo utilizado e qual tipo de informação deve ser comunicado. Isso pode incluir autenticação de segurança, gerenciamento de transações, consultas de mensagens, servidores de aplicativos, servidores da web e diretórios. O middleware também pode ser utilizado para processamento distribuído com ações que ocorrem em tempo real em vez de envio e recebimento repetitivo de dados. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS IMPLEMENTAÇÕES NESTE MOMENTO ESTUDAREMOS O MODELO CLIENTE-SERVIDOR CLIENTE-SERVIDOR PEER –TO – PEER (P2P) 122 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 123 MODELO CLIENTE/SERVIDOR Como a maioria das redes, a internet utiliza um mecanismo simples: um aplicativo é ligado primeiro e espera que o outro aplicativo faça contato. O segundo aplicativo, por sua vez, precisa conhecer a localização na qual o primeiro aplicativo espera contato.O acordo no qual um aplicativo de rede espera pelo contato de outro é conhecido como paradigma cliente-servidor ou arquitetura cliente-servidor. O programa que espera pelo contato é chamado de servidor, e o que inicia o contato é conhecido como cliente. Para iniciar contato, o cliente precisa saber onde o servidor está rodando e especificar a localização para o software de rede. Mas, como um cliente especifica a localização de um servidor? Por exemplo, na Internet, a localização é dada por um par de identificadores. Conceitualmente, o par consiste em: computador e aplicativo. O termo computador identifica a máquina na qual o servidor está rodando. O aplicativo identifica um programa aplicativo em particular naquele computador ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 124 Modelos de Arquitetura de Sistemas Distribuídos Geralmente, os aplicativos desenvolvidos para a internet seguem o mesmo paradigma básico quando se comunicam. Dois aplicativos estabelecem comunicação, trocam mensagens e, só então, finalizam a comunicação. Sendo assim, para fins de comunicação, os aplicativos seguem os seguintes passos: O aplicativo servidor é ativado e aguarda o contato de um cliente. O cliente especifica a localização do servidor e solicita o estabelecimento de uma conexão.. Após o estabelecimento da conexão, cliente e servidor estão aptos a trocar mensagens. 1 3 2 CARACTERÍSTICAS DO PROCESSO CLIENTE É O ELEMENTO ATIVO RESPONSÁVEL PELA INTERFACE COM O USUÁRIO PRECISA CONHECER A LOCALIZAÇÃO DO SERVIDOR CARACTERÍSTICAS DO PROCESSO SERVIDOR É REATIVO NÃO POSSUI INTERFACE COM O USUÁRIO É ESPECIALIZADO PODE SER ITERATIVO OU CONCORRENTE ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Baixo nível: camada de transporte sockets aplicações estão cientes da existência da rede Alto nível: camadas de sessão, apresentação e aplicação RPC aplicações chamam operações de rede como se fossem locais Soluções de alto nível permitem ambiente de computação distribuída 125 CARACTERÍSTICAS DA COMUNICAÇÃO ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 126 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 127 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 128 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS CARACTERÍSTICAS DA COMUNICAÇÃO Configura Cliente Configura Servidor Solicita conexão Aguarda conexão Envia e recebe dados Envia e recebe dados FIM FIM CONEXÃO 129 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS CARACTERÍSTICAS DOS MODELOS DE ARQUITETURA Para manter a API exemplo, independente de algum sistema operacional e software de rede em particular, são definidos três tipos de dados. Esses tipos são utilizados através de códigos.A tabela a seguir lista os nomes e os significados de cada tipo de dados usados na API exemplo: 130 A partir desses três tipos de nomes, podemos definir, precisamente, a API exemplo. Clique e saiba mais! * Em um dado computador, esses tipos são definidos como inteiros e de tamanho específico. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 131 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 132 O PARADIGMA CLIENTE/SERVIDOR O paradigma de organizar uma aplicação que espera passivamente por outro aplicativo para iniciar a comunicação está tão presente na computação distribuída que recebeu um nome: paradigma de interação cliente-servidor. Os termos cliente e servidor referem- se aos dois aplicativos envolvidos em uma comunicação. O aplicativo que começa ativamente o contato é chamado de cliente, enquanto o aplicativo que espera passivamente por contato é denominado servidor. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 133 CARACTERÍSTICAS DE CLIENTES e SERVIDORES Embora existam variações, em geral, a interação cliente-servidor tem as mesmas características. O software cliente é uma aplicação qualquer arbitrária que se torna um cliente temporariamente, quando o acesso remoto for necessário, mas pode executar, também, outro processamento local. Esse software é diretamente invocado por um usuário e executa somente para uma sessão. Essa execução ocorre localmente no computador pessoal de um usuário. O software cliente inicia ativamente o contato com um servidor e, quando necessário, pode acessar múltiplos serviços, mas contata, de forma ativa, um servidor remoto de cada vez. O referido software não exige hardware especial ou sistema operacional sofisticado. Em contraste, o software servidor é um programa privilegiado, de propósito especial, dedicado a fornecer um serviço, mas pode tratar, simultaneamente, de múltiplos clientes remotos. Esse programa é automaticamente invocado quando um sistema inicializa (boot) e continua a executar por muitas sessões. O software servidor executa em um computador compartilhado, e não em um computador pessoal de um usuário, esperando, passivamente, pelo contato de clientes remotos arbitrários. O referido programa aceita o contato de clientes arbitrários, mas oferece um único serviço. Diferentemente do software cliente, o servidor exige hardware poderosoe um sistema operacional sofisticado. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 134 Requisições, Respostas e Direção do Fluxo de Dados ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 135 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 136 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 137 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESUMINDO Modelos de comunicação definem forma de comunicação entre processos O Modelo Cliente-Servidor é baseado na comunicação de dois PROCESSOS por troca de mensagens. 138 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS EXTRAS 139 Desenvolvimento em sistemas distribuídos Fábio Gomes Coqueiro Sistemas Distribuídos Consiste em uma coleção de computadores independentes que se apresentam ao usuário como um sistema único transparente. (TANENBAUM) É um sistema onde os componentes de hardware e software estão localizados em computadores interligados em uma rede, comunicam e coordenam suas ações somente através da troca de mensagens. (COULOURIS) Maior motivação para o desenvolvimento de sistemas distribuídos: compartilhar recursos. Redução no tempo de carga e de execução nas plataformas Cliente; Independência de Localização física; Alta Disponibilidadeda Aplicação; Possibilidade de Heterogeneidade de Ambientes; Maior poder de Escalabilidade; ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Quando distribuir? 140 Às vezes o problema é distribuído; Soluções distribuídas podem trazer benefícios inerentes à distribuição; Soluções distribuídas são mais adaptáveis. Acesso local Homogeneidade Facilidade de gerência Maior consistência Segurança contra intrusos Acesso remoto Heterogeneidade Modularidade Escalabilidade Compartilhamento de recursos Mais sujeito a ataques Sistemas Centralizados x Sistemas Distribuídos Modelos de computação distribuída Cliente/Servidor Peer-to-peer Objetos distribuídos Os exemplos mais familiares são aqueles baseados em redes de computadores: Internet Intranets Sistemas móveis e ubíquo ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 141 Exemplos Internet Um dos maiores exemplos (se não o maior) Compartilhamento de recursos e serviços de forma transparente: WWW E-mail Transferência de Arquivos Serviços multimídia Provedores de Serviços de Internet intranet ISP desktop computer: backbone satellite link server: % network link: % % % ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS Intranets Parte da Internet administrada separadamente por uma organização. Possuem recursos e serviços específicos e gerais: Correio eletrônico Serviços de informação. Recursos de Hardware Comunicam-se normalmente com a Internet por um roteador e fazem uso de firewall para proteção. 142 Exemplos ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 143 Exemplos Sistemas móveis e ubíquos Avanços tecnológicos na miniaturização dos dispositivos e na rede sem fio têm trazido mais interligações de equipamentos: Telefones celulares, smartphones e tablets Dispositivos acoplados ao corpo (Wearable Computing) Redes de Sensores Dispositivos incorporados em aparelhos e objetos Interfaces I/O com usuários Futuramente: robôs A ideia basicamente é um grande sistema distribuído presente em ambientes físicos e dando suporte (com recursos e serviços) para os usuários (aplicações e usuários), mas com comportamento computacional transparente e onipresente: qualquer momento, qualquer lugar. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 144 Tipos de Sistemas Distribuídos Segundo Tanembaum os sistemas distribuídos podem ser classificados como: Sistemas de computação distribuídos Sistemas de informação distribuídos Sistemas distribuídos pervasivos São utilizados para realizar tarefas de computação de alto desempenho. Divide-se em dois grupos Gerais: Sistemas de Computação de Cluster Usados para programação paralela na qual um único programa é executado em várias máquinas Sistemas de Computação em Grade Recursos de diferentes organizações são reunidos para colaboração de um grupo de pessoa A colaboração é realizada como uma Organização Virtual. Sistemas voltados para integrar um conjunto de aplicações a um sistema de informações de âmbito empresarial. Recurso principal: informação. Grupos existentes: Sistemas de processamento de transações: Aplicações de banco de dados Integração de Aplicações Empresariais Aplicações existentes nas empresas (ex. de diferentes setores) precisam realizar troca de informações. A criação de um ambiente “pervasivo” envolve a adoção de protocolos comuns de comunicação entre dispositivos e um espírito de cooperação entre as aplicações/dispositivos, de forma que um usuário imerso deve ter, à sua disposição, o maior número possível de serviços sem despender grandes esforços para utilizá-los. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 145 Tipos de Sistemas Distribuídos Sistemas distribuídos pervasivos (grupos): Sistemas domésticos Sistemas distribuídos pervasivos (grupos): Redes de Sensores: Nó sensor Gateway Sistemas distribuídos pervasivos (grupos): Sistemas para tratamento de saúde: ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 146 Características de um sistema distribuído Compartilhamento de recursos Concorrência Inexistência de um relógio global Falhas independentes Comunicação e organização interna dos computadores ocorrem de forma oculta aos usuários. Desafios Heterogeneidade; Sistemas Abertos; Segurança; Escalabilidade; Tratamento de falhas; Concorrência; Transparência. Eles devem ser construídos a partir de uma variedade de redes, sistemas operacionais, hardware e linguagens de programação diferentes. Devem ser extensíveis, o primeiro passo é publicar as interfaces dos componentes, mas a integração de componentes escritos por diferentes programadores é um grande desafio. A criptografia pode ser usada para proporcionar proteção adequada para os recursos compartilhados e para manter informações sigilosas em segredo, quando são transmitidas por uma rede. Um sistema distribuído permanece eficiente quando há um aumento significativo no número de recursos e no número de usuários. As falhas são parciais, isto é, alguns componentes falham, enquanto outros continuam funcionando. A presença de múltiplos usuários é uma fonte de pedidos concorrentes para seus recursos. O objetivo é tornar certos aspectos da distribuição invisíveis para o programador de aplicativos. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 147 TRANSPARÊNCIA ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 148 Modelo Cliente/Servidor O modelo mais utilizado para aplicações distribuídas em redes de computadores é chamado cliente/servidor. A comunicação costuma se dar através de uma mensagem de solicitação do cliente enviada ao servidor, pedindo que alguma tarefa seja executada. O mecanismo mais utilizado atualmente para esse modelo, que possibilita a comunicação entre aplicações, é chamado de socket. Um marco importante no desenvolvimento de sistemas distribuídos foi a extensão da programação estruturada para ambientes distribuídos pelo modelo cliente/servidor. Os clientes invocam serviços por meio de um mecanismo de interação denominado Chamada de Procedimento Remoto (RPC: Remote Procedure Call). Este mecanismo permite que um elemento invoque procedimentos definidos fora do seu espaço de endereçamento, passando parâmetros e recebendo resultados, de forma similar à chamada de procedimentos locais. Estabelecer conexões entre máquinas Enviar e receber dados Encerrar conexões Esperar por conexões em determinada porta Os elementos assumem papel de clientes (requisitantes do serviço) ou servidores (provedores do serviço) ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 149 Programação Orientada a Objetos Os objetos passam a se localizar em diferentes espaços de endereçamento (objetos distribuídos) e são capazes de conduzir computações em paralelo e de forma autônoma (objetos são ativos). CORBA Java/RMI DCOM Computação de objetos distribuídos A necessidade do mercado para suporte a objetos distribuídos foi suprida pelas tecnologias de middleware, desenvolvida para o novo paradigma de computação de objetos distribuídos. O middleware é a camada de software que fornece o suporte às interações entre as diferentes partes das aplicações distribuídas, utilizando uma infra-estrutura de computação e comunicação. As plataformas de middleware se interpõem entre as aplicações e o sistema operacional do processador, fornecendo uma interface de programação uniforme para os desenvolvedores de aplicações. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 150 Características de um sistema distribuído Para suporte de computadores e redes heterogêneos, e para oferecer uma visão de sistema única, os sistemas distribuídos são organizados por meio de uma camada de software: Computação de objetos distribuídos Sob o ponto de vista do desenvolvedor de aplicações, estas plataformas permitem às aplicações interagirem de forma totalmente transparente, sem qualquer conhecimento da infraestrutura de comunicaçãoentre os diversos objetos da aplicação distribuída. A infraestrutura de suporte fornecida, tanto para o lado cliente quanto para o lado servidor da interação, permite a transparência de distribuição de forma que clientes possam utilizar os serviços disponibilizados por objetos sem se preocupar com aspectos de localização e implementação destes objetos. Exemplo ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 151 Contexto orientado a componentes As tecnologias tradicionais de middleware evoluíram incorporando o suporte a componentes e mudando de um contexto orientado a objetos para um contexto orientado a componentes. As tecnologias tradicionais de middleware evoluíram incorporando o suporte a componentes e mudando de um contexto orientado a objetos para um contexto orientado a componentes. Essa evolução natural de contexto permite que os requisitos impostos pelas novas aplicações (emergentes) possam ser atendidos. Bibliografia Colouris, G.; Dollimore, J.; Kindberg, T.. Sistemas Distribuídos: Conceitos e Projeto. 4. ed. Porto Alegre: Bookman, 2007. Tanenbaum, A.; Steen, M. Sistemas Distribuídos: Princípios e Paradigmas. 2. ed. São Paulo: Pearson Prentice Hall, 2007. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ATIVIDADE PROPOSTA (05): 152 Cliente Servidor ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS ENADE 153 (ENADE, 2014) Uma companhia com abrangência global decidiu implantar um novo sistema de compartilhamento de informações empresariais. Após estudos de campo, a empresa identificou alguns cenários de utilização dos informações. No primeiro cenário, detectou-se que um volume massivo de dados relativos a documentos históricos, normas e regulamentos da organização eram consumidos, em escala global, exclusivamente para leitura. No segundo cenário, verificou-se que documentos eram produzidos de forma colaborativa por equipes regionais de colaboradores. Esses colaboradores, na maioria das vezes, estavam na mesma filial ou geograficamente muito próximos. O terceiro cenário envolvia apenas 10% dos documentos da empresa, acessados concorrentemente por todas as regionais do globo, tanto para leitura quanto para atualização. Com base nesses cenários e em relação às arquiteturas de software distribuídas coerentemente com as necessidades da empresa, avalie as afirmações a seguir. I - A utilização de arquitetura peer-to-peer (P2P) para disponibilidade os documentos do cenário 1 poderá reduzir o consumo da rede. II - O compartilhamento baseado no modelo cliente-servidor com cache no cliente pode aumentar o desempenho da edição colaborativa, sem comprometer a consciência no cenário 2. III - A utilização de replicação baseada em cópia primária pode aumentar a escalabilidade do sistema, sem comprometer, de forma significativa, a consistência de dados no cenário 3. IV - Se o modelo cliente-servidor de compartilhamento dor empregado no cenário 2, a replicação passiva (backup ou mirroring) poderá ser utilizada como mecanismo de tolerância a falhas. V - A arquitetura peer-to-peer baseada em rede overlay, tal como o DHT, pode oferecer transparência de migração para os documentos compartilhados no cenário 1. É correto o que se afirma em? ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS A questão aborda conceitos de sistemas distribuídos referentes ao compartilhamento de informações. São apresentados três cenários variando a quantidade de dados, localização dos acessos e tipo de acesso (leitura ou escrita). As afirmações analisam a eficiência no uso de arquiteturas distribuídas e técnicas de replicação em cada cenário. A afirmativa I indica o uso da arquitetura peer-to-peer (P2P) para diminuir o consumo de rede no cenário 1. Este cenário possui como característica uma grande quantidade de dados usados exclusivamente para leitura. Na arquitetura P2P, todos os processos atuam como cliente e servidor. Quando um processo recebe algum dado de outro processo, ele também está apto a servir esse dado para qualquer outro processo da rede. Isso permite que existam diversas cópias do dado na rede. Essa característica dificulta a modificação de dados, pois seria necessário alterar todos as cópias na rede. Desta forma, ela é indicada para acessos do tipo leitura como o do cenário 1. Além disso, a leitura pode ser realizada a partir do processo mais próximo que contenha o dado desejado, minimizando o consumo de rede. Portanto, a afirmativa I é verdadeira. A afirmativa II indica o uso da arquitetura cliente-servidor com cache no cliente para aumentar o desempenho da edição colaborativa, sem comprometer a consistência, no cenário 2. Este cenário possui como característica a produção de documentos de forma colaborativa por equipes próximas. No modelo cliente-servidor com cache no cliente, o servidor é responsável por prover todos os dados, e o cliente, após realizar o acesso, mantém e atualiza o dado em uma cache local, enviando as modificações em um momento posterior. Essa característica dificulta a edição colaborativa, pois os dados são atualizados inicialmente na cache local, permitindo que existam num certo instante de tempo diversas versões do dado, na cache local, no servidor e nas caches dos outros clientes, comprometendo a consistência. Portanto, a afirmativa II é falsa. A afirmativa III indica o uso de replicação baseada em cópia primária no cenário 3, visando aumentar a escalabilidade do sistema sem comprometer significativamente a consistência de dados. O cenário 3 consiste em 10% dos documentos que são acessados e modificados de forma concorrente por todas as filiais. A replicação baseada em cópia primária, também chamada de replicação passiva, consiste no uso de diversos servidores para armazenamento redundante dos dados. No acesso para leitura, qualquer servidor pode ser acessado, aumentando o número de acessos suportados e, portanto, a escalabilidade do sistema. No acesso para escrita, existe um servidor que possui a cópia primária do dado (servidor primário), o qual recebe a atualização do cliente e é responsável por replicar a atualização nos demais servidores, chamados de servidores escravos. Durante o processo de atualização dos servidores escravos, existirão servidores com a versão antiga e servidores com a versão nova do dado, o que pode levar ao problema de consistência no acesso ao dado. No entanto, essa inconsistência será temporária, pois eventualmente todos os servidores terão a sua cópia do dado atualizada. Portanto, a afirmativa III é verdadeira. A afirmativa IV indica que o uso da arquitetura cliente-servidor de compartilhamento usando replicação passiva (backup ou mirroring) pode ser usada como mecanismo para to lerância a falhas no cenário 2. Este cenário possui como característica a produção de documentos de forma colaborativa por equipes próximas. Na arquitetura cliente-servidor de compartilhamento, o servidor possui todos os dados e qualquer mudança no dado realizada pelo cliente deve ser imediatamente atualizada no servidor. A replicação passiva (abordada na afirmativa III) utiliza diversos servidores para armazenamento redundante dos dados. O acesso para leitura pode ser feito em qualquer servidor, enquanto que a atualização deve ser realizada somente no servidor primário. Esse servidor é responsável por manter a consistência entre as cópias do dado nos diversos servidores. No caso de falha de um servidor, os outros servidores poderão servir as requisições de leitura e pode-se definir outro servidor para as atualizações, caso o servidor primário tenha ficado indisponível, aumentando a tolerância a falhas da arquitetura. Portanto, a afirmativa IV é verdadeira RESPOSTA 154 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS RESPOSTA 155 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS REGISTROS DE FREQUÊNCIA – AULA 1 É uma desvantagem dos sistemas distribuídos quando comparado aos sistemas centralizados: Relação custo/benefício Tolerância a falhas Possibilidade de congestionamento na rede Capacidadede crescimento incremental Possibilidade de implementação de alta disponibilidade O termo escalabilidade por ser definido como: Característica que esconde dos usuários/aplicativos detalhes de funcionamento do sistema. Possibilidade de inclusão de novos componentes, que sejam adicionados à medida que cresça a carga de trabalho. Capacidade do sistema em dividir adequadamente suas tarefas. Característica que indica quanto tempo o sistema funcionará ininterruptamente sem ser afetado por falhas. A garantia do sistema realizar suas tarefas conforme o seu projeto, da maneira correta. 157 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS REGISTROS DE FREQUÊNCIA – AULA 2 Dentre os vários tipos de transparência tratados na nossa aula, qual delas oculta a diferença na representação de dados e no modo de acesso a um recurso: de falha de localização de replicação de concorrência de acesso Indique, a seguir, qual é a característica que permite ao sistema distribuído dividir, adequadamente, suas tarefas, de modo que um elemento processador não fique mais sobrecarregado que os outros: 1) Escalabilidade 2) Confiabilidade 3) Tolerância a falhas 4) Balanceamento de Carga 5) Disponibilidade 158 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS REGISTROS DE FREQUÊNCIA – AULA 3 e 4 É considerada uma redundância física para o tratamento de falhas: 1) Adição de bits extras 2) Registro do estado do sistema 3) Execução repetida de ações 4) Adição de equipamentos extras 5) Divisão de tarefas As formas de executar mais rapidamente uma tarefa são: I. Trabalhar mais rápido. II. Trabalhar sem colaboração. III. Trabalhar de forma otimizada. IV. Trabalhar com colaboração. Assinale a opção CORRETA: 1) Somente as afirmativas I, II e III são verdadeiras. 2) Somente as afirmativas II, III e IV são verdadeiras. 3) Somente as afirmativas I, III e IV são verdadeiras. 4) Somente as afirmativas I, II e IV são verdadeiras. 5) Todas as afirmativas são verdadeiras. 159 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS REGISTROS DE FREQUÊNCIA – AULA 5 Em geral, a interação cliente-servidor tem as mesmas características. Entretanto o software cliente: I. É uma aplicação qualquer que se tornará um cliente temporariamente, quando o acesso remoto for necessário. II. Executa localmente no computador pessoal de um usuário. III. Exige hardware especial ou sistema operacional sofisticado. IV. É diretamente invocado por um usuário e executa somente para uma sessão. Dentre as afirmativas anteriores, estão CORRETAS: 1) Somente I, II e III. 2) Somente II, III e IV. 3) Somente I, III e IV. 4) Somente I, II e IV. 5) Todas as afirmativas. 160 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS IMPLEMENTAÇÃO COM SOCKETS Um programa vê os sockets como um mecanismo de entrada e saída de dados Seguem o paradigma open-read-write-close A comunicação através de sockets utiliza também a abordagem de descritor. 162 Originalmente a implementação dos sockets foi feita no 4.2BSD em 1983 Na forma de uma API, os sockets abstraem a camada de rede para que uma aplicação possa se comunicar com outra sem ter que se preocupar com detalhes da pilha TCP/IP que gere a rede abaixo dessa aplicação. Considerando a Internet e o TCP/IP, os sockets estão entre a camada de transporte e a de aplicações. Estando nesse ponto de intercessão, eles conseguem fazer uma interface entre a aplicação e rede de maneira bem transparente. Assim, aplicações são implementadas através de uma comunicação lógica. Lógica no sentido de que para esses programas, eles estão se comunicando diretamente um com o outro, mas na prática, eles estão passando pela rede para trocar mensagens. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 163 A comunicação realizada a partir da utilização de sockets é um mecanismo de comunicação entre processos – Inter Process Comunication (IPC) – através da rede, que pode ser utilizado em processos na mesma máquina. Comunicação utilizando sockets e Chamada a Procedimento Remoto (RPC) ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 164 Comunicação utilizando sockets e Chamada a Procedimento Remoto (RPC) Originalmente a implementação dos sockets foi feita no 4.2BSD em 1983 ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 165 Comunicação de socket e entrada e saída do UNIX Originalmente, os sockets foram desenvolvidos como parte do sistema operacional UNIX e utilizam diversos conceitos que são implementados em outras partes desse sistema. Um programa vê os sockets como um mecanismo de entrada e saída de dados, pois eles seguem o paradigma open-read-write-close, usado pela maioria das operações de entrada e saída. Sendo assim, um socket deve ser criado, usado e, só então, destruído. Por isso, quando uma aplicação se comunica através de uma rotina similar ao socket, forma um caminho para a aplicação transferir dados a um arquivo. Dessa forma, a compreensão dos sockets exige o entendimento das características de entrada e saída do UNIX. Por exemplo, um aplicativo deve primeiro chamar open para preparar um arquivo para acesso. O aplicativo chama, então, read ou write para recuperar ou armazenar dados no arquivo. Finalmente, o aplicativo chama close para especificar que terminou de usar o arquivo. Comunicação de socket e entrada e saída do UNIX A figura a seguir representa uma conexão por sockets: ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 166 Sockets e Descritores A comunicação por meio de sockets utiliza também a abordagem de descritor. Quando a aplicação solicitar ao sistema operacional para criar um socket, o aplicativo passará o descritor como um argumento para a chamada de procedimentos na transferência de dados através da rede. O sistema operacional fornece um único conjunto de descritores para arquivos, dispositivos, comunicação entre processos e comunicação de rede. Como resultado, procedimentos como read e write são bem gerais - uma aplicação pode usar o mesmo procedimento para enviar dados para outro programa ou um arquivo através de uma rede. ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 167 Parâmetros e a API de sockets Escolher protocolo de transporte Fornecer endereço do protocolo Especificar se é cliente ou servidor ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 168 Procedimentos que implementam a API de sockets /* Principais funções para escrever programas com sockets */ getaddrinfo() // Traduz nomes para endereços sockets socket() // Cria um socket e retorna o descritor de arquivo bind() // Associa o socket a um endereço socket e uma porta connect() // Tenta estabelecer uma conexão com um socket listen() // Coloca o socket para aguardar conexões accept() // Aceita uma nova conexão e cria um socket send() // caso conectado, transmite mensagens ao socket recv() // recebe as mensagens através do socket close() // desaloca o descritor de arquivo shutdown() // desabilita a comunicação do socket ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 169 Procedimentos que implementam a API de sockets ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 170 Procedimentos que implementam a API de sockets ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 171 Procedimentos que implementam a API de sockets ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 172 Procedimentos que implementam a API de sockets listen() // Coloca o socket para aguardar conexões ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 173 Procedimentos que implementam a API de sockets accept() // Aceita uma nova conexão e cria um socket ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 174 Procedimentos que implementam a API de sockets send() // caso conectado, transmite mensagens ao socket ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 175 Procedimentos que implementam a API de sockets recv() // recebe as mensagens através do socket ARQ SIST DISTRIBUÍDOS ARQ SIST DISTRIBUÍDOS 176 Procedimentos
Compartilhar