Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tópico: Sistemas Paralelos Com Memória Distribuída __Introdução ao MPI Computação por Passagem de Mensagens Importante entender os conceitos relacionados à arquitetura onde este paradigma se aplica: espaço de endereçamento de memória, arquitetura das conexões entre os processadores e os tipos de configuração existentes. Os modelos de programação aplicados neste paradigma são pontos a serem observa dos, lembrando sempre do que vimos no laboratório, ou seja, ao estudar a teoria, lembrese do que praticamos: os exercícios de MPI. Tópico: Modelos de Sistemas Distribuídos __Características de Sistemas Distribuídos O que é um sistema distribuído? Vc sabe responder esta pergunta, consegue dar exemplos de sistemas distribuídos. A união de diversos computadores com o objetivo de compartilhar a execução de tarefas. SD tem como objetivo o compartilhamento de recursos Vc entende as implicações/consequências das definições de sistema distribuído? (Concorrência, Falta de um relógio global, falhas independentes) Concorrência partes do sistema distribuído vão concorrer por recursos compartilhados ou sofrer concorrência de múltiplos clientes requisitando recursos e serviços simultaneamente. Falta de um Relógio Global não existe sincronização nativa em SDs pois cada node do sistema opera em seu proprio clock. Pode haver falhas independentes entre os componentes. Nos modelos de SD, uma caracterização que fizemos foi de Servidor e Cliente; vc sabe distinguilos? Também falamos de peers, onde a cooperação e comunicação é simétrica; vc entende isso? Servidor é uma aplicação que vai prover serviços/funcionalidades/etc a um Cliente. Peers, em p2p, é quando os participantes do SD todos tem as mesmas responsabilidades e realizam as mesmas tarefas. Não existe um servindo e outro sendo cliente, todos são servidores/clientes/etc ao mesmo tempo e com as mesmas responsabilidades. Existem vários desafios na construção de SD; vc sabe quais são? Fez extrapola ções de cada conceito apresentado nos desafios, i.e., tentou fazer aplicações destas informações? Heterogeneidade: redes, HW, SW, SO, linguagem de programação, diferentes desenvolvedores Middleware: camada de software que provê uma abstração de programa e mascara a heterogeneidade do sistema que está nas camadas inferiores Sistema aberto: Deve suportar a possibilidade de extensão do serviço, principalmente, através de interfaces Segurança: confidencialidade, integridade e disponibilidade. __Modelos Arquiteturais Com relação aos modelos de SD, apresentamos uma figura com as camadas de soft ware e hardware. Vc chegou a pensar sobre esta figura? Entendeu o posicionamento destas camadas? P.explo, o Middleware, que implicação ele tem para um SD? No Mack temos um servidor de proxy, que nos obriga a fazer uma autenticação sem pre que queremos acessar um site web externo; onde se encaixa este proxy nos mo delos que vimos? Que papel(éis) ele desempenha em termos de arquitetura? Essa eu não sei em “termos da matéria dele”... mas em termos gerais, para a gente, ele se porta como um servidor. Nós solicitamos acesso à um endereço web para ele, ele trata nossa requisição com suas regras internas (segurança, filtro de conteúdo, balanceamento de carga, etc) e (a) nos redireciona para o conteúdo real. (b) dá “fetch” no conteúdo e repassa para a gente. Se for isso que ele tá perguntando, acho que a resposta é essa. Quando falamos dos modelos fundamentais de SD, vc se lembra de quais são? Suas principais definições e implicações na construção de SDs? Modelo de iteração: Foca no desempenho dos processos e canais de comunicação e na falta de um relógio global Modelo de segurança: Analisa as possíveis ameaças e como previnilas Modelo de falha: Analisa as possíveis falhas e como reagir a elas __Objetos Distribuídos e Invocação Remota parte 1 Falamos sobre o protocolo requestreply; este protocolo é importante para a im plementação de SD; pode usar UDP ou TCP vc pensou sobre as implicações da uti lização de um ou outro (UDP ou TCP)? UDP: ACKs são redudantes já que requests são seguidos de reply Estabelecer conexão necessita de outros 2 pares de mensagens além do par requestreply Controle de fluxo é redundante para a maior parte das invocações. Datagrama máximo de 8Kb TCP: Não tem limite de datagrama Simplifica a implementação do requestreply TCP tem garantia de delivery, UDP não tem. O overhead de TCP é bem maior. Quais são as falhas possíveis do protocolo requestreply? (para os dois protoco los de transporte) Falhas de omissão Não há garantia de entrega de mensagens na ordem em que foram enviadas Falhas dos processos Timeouts são utilizadas para controle das mensagens. Pensando nas possíveis falhas, quais são os comportamentos do protocolo request reply? => Request (R): Só envia o request ao server. Útil quando não há valor de retorno esperado. => RequestReply (RR): Client envia request para o server, server responde. => RequestReplyAcknowledge (RRA): Client envia request, server responde, cliente manda ack. Útil para o servidor descartar históricos de mensagens. Vc se lembra destes conceitos? Pense na evolução da computação, desde quando os computadores eram isolados, de pois quando passaram a se comunicar, etc. Agora em termos de modelos de progra mação, ou seja, programar computadores isolados, depois programar computadores em rede; pense em termos de facilidades para o programador: implementar todas as rotinas de comunicação; diferentes para cada SO, fabricante, etc. Neste contexto, vc consegue enxergar a importância da Remote Procedure Call RPC para a computação distribuída? O conceito de RPC permite que computadores diferentes, executando aplicações diferentes, possam colaborar de forma simples (gerando transparência maior na conexão) através de uma conexão de comunicação. Isto é, um programa localizado em um computador X, é programado de forma a disponibilizar um serviço (procedure) para invocação remota e isto cria a possibilidade de um outro programa, em outro computador Y ser programado de forma a utilizar ou contribuir com este serviço. Este tipo de facilidade e comunicação é crítica para que a computação distribuída seja sequer possível. Um dos pontos importantes para a computação distribuída é o uso de interfaces; vc sabe disto? Sabe o que é e qual a função de uma interface em SD? O conceito de interface em computação distribuída tem a ver com o conceito de “contrato”. Uma interface de um serviço disponível publicamente é um contrato que determina o nome do serviço prestado (método), os prérequisitos para operálo (parâmetros) e o que ele te promete em troca (retorno). As interfaces são leves e conseguem ser consultadas por potenciais clientes do serviço para entenderem como interagir com eles. Aplique os modelos de falhas ao RPC => semântica da invocação. Exactlyonce Para chamadas de procedimentos locais, significando que cada procedimento é executado exatamente uma vez (exceto no caso de falha do processo) Maybe – procedimento remoto pode ser executado uma vez ou não. Aplicada quando não se tem nenhuma medida de tolerância a falha.Esta semântica é útil apenas para aplicações nas quais chamadas ocasionais que falham são aceitáveis. Atleastonce – o chamador recebe ou um resultado (procedimento foi executado pelo menos uma vez), ou uma exceção (nenhum resultado foi recebido). A retransmissão das mensagens de request – que mascara as falhas de omissão das mensagens de request ou resultado, produz a semântica em questão. Atmostonce – O chamador recebe ou um resultado (procedimento foi executado exatamente uma vez) ou exceção (nenhum resultado recebido, o procedimento pode ter sido executado uma vez ou nenhuma). O RPC tem vários componentes; entenda o papel (função) de cada um. 1. Cliente 2. Stub cliente 3. RPC runtime 4.Stub servidor 5. Servidor Stub cliente serve para interceptaras chamadas de procedimento do cliente empacotando os parâmetros e enviando ao servidor. Após a chegada da resposta do servidor ele desempacota o resultado e encaminha para o cliente. ● Stub servidor recebe a requisição do cliente, desempacota os parâmetros, chama o procedimento passando os parâmetros e quando obtém o resultado ele empacota e encaminha de volta ao cliente. __Objetos Distribuídos e Invocação Remota parte 2 O que diferencia o RPC do RMI? RPC: invoca procedimentos em processos remotos. RMI: obj clientes invocam métodos de obj remotos. Quais os principais conceitos envolvidos e suas implicações práticas? Lembrese do que fizemos em laboratório, dos exemplos que rodamos e também do projeto que foi implementado. O RMI tem vários componentes; entenda o papel (função) de cada um. ProxyCliente: “modelo” do objeto remoto a ser chamado. Não contém a implementação real do funcionamento do objeto, somente é um modelo para que a programação sobre um objeto remoto pareça normal (transparência). EndereçamentonoCliente (não sei o nome certo): responsável por direcionar a solicitação feita sobre o proxycliente para o host remoto que contém o objeto real. Dispatcher (no Servidor): recebe a chamada remota vinda pro cliente, localiza o “skeleton” correto e encaminha para ele. Skeleton (no Servidor): um tipo especial de proxy do objeto real, que contém interface semelhante à dele. O Skeleton recebe a chamada do dispatcher, formata (chama “unmarshalling” o processo) e encaminha pro “Servant”. Servant (no Servidor): é o objeto real que você queria invocar um método no cliente. Deu toda essa volta pra isso. __Webservices É possível usálos com qq linguagem e paradigma de programação? Teoricamente sim, uma vez que a única “restrição” é operar sobre XML e HTTP. Portanto, na teoria, qualquer software é capaz de criar um serviço que siga as regras e/ou seja capaz de invocar um Web Service. Como funciona um webservice? Isto é, que protocolos são utilizados e quais suas funções? HTTP: Protocolo de comunicação / transporte padrão da Web SOAP: Modelo para descrição do conteúdo das mensagens. Que tipo de mensagem é trocada entre clienteservidor? Alguma formatação espe cial? Operam com XMLs formatados no padrão SOAP. O webservice tem vários componentes; entenda o papel (função) de cada um. Tópico: Computação em Nuvem e Sistemas P2P __Computação em Nuvem Entenda o conceito (definição) de computação em nuvem e suas principais caracte rísticas. Aplicações e recursos estão em algum lugar remoto. Também atente para as tecnologias que tornam a computação em nuvem possível. Paradigmas de computação/negócio(grades e computação utilitária), hardware(virtualização e multicore), tecnologias de internet(SOA, WS e Web2.0), gerenciamento de sistemas(computação autônoma) Em termos de classificações, pense sobre os modelos de implantação (quem é o do no, quem utiliza, onde está localizada) e os modelos de serviço (que serviços são prestados). Modelos: Publico,Privado,Hibrido,Comunitário Serviços: XaaS: Everything as a Service IaaS: Parte da infra e rede (Amazon WS) PaaS:Parte da plataforma e desenvolvimento(Google App Engine) SaaS: Parte da aplicação como serviço(dropbox, gDocs) De ponto de vista das organizações (empresas), quais são as vantagens e desvan tagens de cada modelo (implantação e serviço)? Pública: ● Vantagens ○ Redução de investimento em TI, pessoal, energia, local. ○ Não há contratos duradouros e complexos. ○ Agilidade em resolver uma tarefa ○ Escalabilidade por demanda ○ Abstração da tecnologia sendo usada Privada ● Vantagens ○ Segurança ○ Otimização da infra já existente ○ Primeiro passo em direção a utilização do modelo hibrido ou público Comunitária Híbrida Há vários desafios no paradigma de Computação em Nuvem: segurança, confiabilida de, disponibilidade, QoS, Interoperabilidade (padrões) e Questões Legais. Faça um cenários para cada desafio, identificandoos no contexto de uma empresa que está considerando adotar a computação em nuvem. __Sistemas peertopeer Principais características e objetivos. Objetivos: Permitir o compartilhamento de dados e recursos em grande escala, eliminando a exigência de servidores gerenciados separadamente e sua infraestrutura associada. Características principais: ● Usuários contribuem com recursos; ● Nós possuem mesmas capacidades e responsabilidades funcionais; ● Não dependendem de nenhum sistema administrado de forma centralizada; ● Podem oferecer um grau limitado de anonimato para provedores e usuários de recursos; ● Problema: algoritmo que possibilite o arranjo dos dados em muitos hosts de maneira que a carga de trabalho seja equilibrada. Consequências da volatilidade de recursos. Proprietários não garantem que irão mantêlos ligados, conectados e isentos de falhas. A disponibilidade é imprevisível. A utilização da sobreposição de roteamento tem várias consequências e é bastante diferente do roteamento que ocorre na camada IP de uma rede tradicional (IPv4 e IPv6); entenda estas distinções. Escalabilidade IPv4 é limitada a 232 nós endereçáveis. o IPv6 espaço de nome é muito mais generoso (2128), mas os endereços em ambas as versões são hierarquicamente estruturada e grande parte do espaço é préalocados de acordo com as exigências administrativas. Sistemas Peertopeer podem resolver mais objetos. O GUID espaço de nome é muito grande e plana (> 2128), permitindo que ele seja muito mais totalmente ocupado. Balanceamento de Carga Cargas em roteadores são determinados pela topologia da rede e os padrões de tráfego associados. Localizações de objetos podem ser randomizados e, portanto, os padrões de tráfego são divorciados(separados) da topologia da rede. Dinâmica de rede (adição / exclusão de objetos / nós) Tabelas de roteamento IP são atualizados de forma assíncrona em uma base de melhores esforços, com constantes de tempo da ordem de 1 hora. As tabelas de roteamento podem ser atualizados de maneira síncrona ou assíncrona com frações de segundo atrasos. Tolerância a falhas Redundância é projetado para a rede IP por seus gestores, garantindo a tolerância de um único roteador ou que conectividade de rede falhe. Replicar n vezes é caro. Rotas e referências de objeto podem ser replicados n vezes, garantindo tolerância de n falhas de nós ou conexões. Indentificação do alvo(destino) Cada endereço IP mapeia a exatamente um nó de destino. As mensagens podem ser encaminhadas para a réplica mais próxima de um objeto de destino. Segurança e Anonimato Endereçamento é apenas seguro quando todos os nós são confiáveis. Anonimato para os proprietários de endereços não é possível. A segurança pode ser alcançada, mesmo em ambientes com confiança limitada. Um grau limitado de anonimato pode ser fornecida. Distribuição das informações em uma sobreposição de roteamento: ● O conhecimento das localizações dos objetos deve ser particionado e distribuído por toda a rede. ● Cada nó deve ser responsável por manter o conhecimento detalhado das localizações dos nós e objetos em uma parte do espaço de nomes, assim como o conhecimento geral da topologia do espaço de nomes inteiro. ● Um alto grau de replicação desse conhecimento é necessário para garantir a segurança em face da disponibilidade volátil dos hosts e da conectividade intermitente da rede. ● Algoritmo distribuído para a localização de nós e objetos. ● O middleware direciona requisições de qualquer cliente para um host que contenha o objeto para o qual a requisição é endereçada. ● Os objetos de interesse podem ser alocados e movidos para qualquer lugar da rede sem a participação do cliente. ● Sobreposição: roteamento é implementado na camadade aplicação. ● O conhecimento de cada nó é explorado durante o roteamento. ● As réplicas dos objetos garantem a disponibilidade. ● GUIDS: não revelam nada sobre a localização dos objetos (nomes puros ou identificadores opacos) A utilização de um middleware para a implementação de sistemas P2P modernos re presenta um grande avanço nesta modalidade de computação distribuída; pense nas características deste middleware. Existem 3 gerações de sistemas p2p: 1ª(índice replicado centralizado), 2ª(maior escalabilidade, anonimato e tolerância a falhas), 3º(camadas de middleware independência de aplicativo) Características do middleware(3ª geração): ● Garantem o envio de pedidos em um número limitado de passos intermediários de rede. ● As réplicas dos recursos são colocadas de maneira estruturada em hosts disponíveis de acordo com disponibilidade, confiabilidade, requisitos de carga, localização do armazenamento e uso das informações. ● Identificação dos recursos: GUIDS ○ Identificadores únicos globais ○ Originados de um código de resumo (hashing) seguro ■ Torna um recurso automaticamente certificado – clientes podem verificar sua validade. ■ Objetos devem ser imutáveis para que o código seja válido. Problema da localização de recursos: 3ª geração (middleware): interface de programação simples que permita a implementação independente do tipo de recurso distribuído. Pense também nos algoritmos de roteamento utilizados nestes middleware. Cada nó ativo armazena um conjunto de folhas – um vetor L (tamanho 2l) O vetor contém GUIDs e endereços de IP dos nós cujos GUIDs são numericamente mais próximos nos dois lados de si próprio (l acima e l abaixo) Este conjunto é mantido à medida em que os nós entram e saem
Compartilhar