Please enable JavaScript.
Coggle requires JavaScript to display documents.
EC021 - Sistemas Distribuídos (1.1 Visão Histórica e evolução da…
EC021 - Sistemas Distribuídos
1.1 Visão Histórica e evolução da computação moderna
Anos 40
Comunicação militar com segurança e confiabilidade através de pontos distintos
Descentralizar uma ou mais bases para evitar que os inimigos eliminassem o ponto inteligente do país
Análises para projetar, desenvolver e dar suporte a ferramentas tecnológicas para prover um funcionamento distribuído
Primeiros sistemas para computação lógica de grande porte
Cálculos complexos
Armazenar dados
Anos 50
Novos modelos desencadeiam o avanço acelerado da divisão de tarefas em uma mesma unidade autônoma
ENIAC utilizou o paradigma de dividir o esforço nas operações através de canais compartilhados de E/S
Von Neumann propôs um modelo de arquitetura com distribuição de tarefas local
Memória Principal
Unidade Lógica e Aritmética
Unidade de Controle do Programa
Equipamento de E/S
Anos 60
Pesquisas aumentam com evolução do software e início das redes de computadores
Operações distribuídas em ambientes físicos de curta ou longa distância
Anos 70
Advento dos microprocessadores tornou custo x performance viável
Supercomputadores organizados em formatos de grid (Clusters Computacionais)
Expansão de serviços para orgãos do governo, universidades e grandes aplicações comerciais
Anos 90
Mainframes espalhados pelo mundo
Surgimento das LANs e adequação das arq. de rede às arq. de processamento compartilhado incentivaram o crescimento
Evolução dos SOs
Anos 2000
Popularização da internet (macro sistema distribuído)
Grandes empresas criavam parques tecnológicos com distribuição geográfica sob demanda, interligadas por conexões de alta velocidade (fibra ou satélite)
Em 2009 surge o Chrome OS
Empresas vendem soluções e uma fatia desconhecida de armazenamento, processamento e memória para usuários finais
Cada usuário compra computadores virtuais e paga centavos pelo tempo de uso
Seus arquivos podem estar em vários países diferentes e serem acessados por qualquer computador
Servidores
São geralmente máquinas capazes de manipularem requisições que, quando organizadas, formam um avançado parque de comunicação
Tipos
File
Guarda arquivos compartilhados por usuários
Database
Possui um SGBD instalado e fornece serviços de banco de dados para programas em outros computadores
E-mail
Controla o sistema de e-mails de um grupo de usuários
Web
Envia páginas web aos navegadores
Proxy
Um intermediário para auxiliar clientes a acessarem outros servidores
Serviços
Infrastructure as a Service
Quem utiliza deste serviço não precisa comprar ou gerenciar a estrutura física de um datacenter
Platform as a Service
Permite que clientes desenvolvam, executem e gerenciem aplicações na web sem a complexidade de criação e manutenção de infraestrutura
Software as a Service
O software é fornecido pela internet para os clientes, tendo qualquer processamento executado pelo distribuidor
1.2 Tipos de sistemas de computação distribuídos
Um sistema distribuído é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente (Tanembaum)
Sistemas Distribuídos
Requerem
Escalabilidade quanto ao armazenamento em massa, distribuído geograficamente em vários lugares
Planejamento integrado para expansão contínua da infraestrutura e o balanceamento de carga
Gerenciamento de vários processadores com um ou vários núcleos interligados por barramentos e redes de alta velocidade
Seus componentes são chamados de autônomos
A heterogeneidade nas redes de acesso, dispositivos, limitações e organização da comunicação pode ser resolvida com Middlewares
Existem fatores para garantir a configuração de uma estrutura distribuída
Externos
Metas
São perspectivas definidas como pontos cruciais, principalmente a viabilidade, custo, esforço e demais aspectos relacionados com a regra de negócio
Devem atender requisitos básicos
Acesso de recursos
Chave para a formulação de um sistema de médio ou grande porte
Objetivo é facilitar o acesso e compartilhar recursos remotos (Groupware)
Aprimorar a segurança e evitar acessos indevidos
Transparência na distribuição
Diferentes tipos de transparência
Acesso
1 more item...
Localização
1 more item...
Migração
1 more item...
Relocação
1 more item...
Replicação
1 more item...
Concorrência
1 more item...
Falha
1 more item...
Um sistema transparente é aquele que é identificado como único para o usuário final, sem que o mesmo perceba localização, acesso, concorrência e o modo de funcionamento interno
Abertura de sistema
Responsável pela padronização de um conjunto de componentes especificados através de uma interface
Podem utilizar linguagens para facilitar o desenvolvimento de mecanismos de comunicação entre sistemas
Especificam detalhes sobre os serviços, processos e rotinas de operação
Escalabilidade
Característica comum tanto para sistemas centralizados como distribuídos
O crescimento não se dá apenas em níveis tecnológicos, mas também em níveis geográficos e administrativos
Alguns problemas de escalabilidade
Serviços centralizados
1 more item...
Dados centralizados
1 more item...
Algoritmos centralizados
1 more item...
Internos
Tipos de Sistemas
Sistema de Computação Distribuído
Usado para realizar tarefas que exigem alta performance
Subgrupos
Computação em Cluster
Sistema que utiliza de dois ou mais computadores para trabalhar de maneira conjunta no processamento de tarefas
Cada computador é chamado de nó e todos são interconectados por uma tecnologia de rede conhecida
O hardware dos nós não precisa ser igual, mas deve utilizar o mesmo SO
Tipos
3 more items...
Computação em Grade
Funciona como um supercomputador virtual
Combina o poder de processamento e, às vezes, armazenamento de milhares de dispositivos em localizações distintas
A heterogeneidade é mais aparente, já que nenhuma premissa é adotada em relação ao hardware, SO, rede, domínio, segurança, etc
Estrutura amplamente distribuída, heterogênea e compartilhada
Tipos
2 more items...
Sistema de Informação Distribuído
Estão relacionados ao sistema de processamento de transações e integrações de vários sistemas de cooperação
Utilizados também para integração de sistemas antigos (legados)
Subgrupos
Sistema de Processamento de Transações
Realiza operações sobre objetos ou sistemas que satisfazem as propriedades ACID (Atomicity, Consistency, Isolation, Durability)
Geralmente trabalha com transações aninhadas, utilizando monitores de TP (Transaction Processing) para gerenciamento
1 more item...
Integração de aplicações empresariais
Utilizam de RPCs e RMIs para prover comunicação entre diversas aplicações diferentes através da chamada de métodos e objetos remotos em uma rede
2 more items...
Trabalham com Middlewares Orientados a Mensagens para prover comunicação assíncrona
1 more item...
Sistemas Distribuídos Pervasivos
Fornecem condições operacionais de funcionamento para dispositivos móveis
Os mais comuns são sistemas domésticos, mas também envolve sistemas para controle de saúde, redes de sensores, etc
Custo elevado para projeção, desenvolvimento e manutenção devido às limitações
1.3 Infraestrutura e arquitetura dos sistemas distribuídos
Sistemas Distribuídos são complexas peças de software, onde seus componentes estão espalhados por diversas máquinas e geralmente interagem por meio de conectores
Modos de identificar a organização lógica e física do sistema
Arquitetura de software
É a estrutura ou organização dos mais significativos componentes do sistema e suas interações
Modelos Arquiteturais
Define a forma geral pela qual os componentes dos sistemas interagem e a maneira pela qual eles são mapeados em uma rede de computadores
Mais importantes
Arquitetura em camadas
O controle flui de camada em camada
Requisições descem pela hierarquia, resultados fluem para cima
Arquitetura baseada em objetos
Cada objeto corresponde a um componente, e esses componentes são conectados por meio de chamadas a métodos remotos
Arquitetura centrada em dados
Sua meta é prover a integração de dados
Processos se comunicam por meio de um repositório comum
Novos componentes podem ser adicionados à arquitetura sem interação com outros clientes
Arquitetura baseada em eventos
Processos se comunicam por meio de propagação de eventos em um barramento (conector)
Produtor publica uma informação em um gerenciador de eventos e os consumidores se subscrevem para receber as informações
Consumidores não sabem se um evento será tratado e quando será
Grau de descentralização
Arquiteturas centralizadas
Cliente-Servidor
vídeo sob demanda
terminais bancários
Arquiteturas descentralizadas
Freenet
Algoritmo Chord
Arquiteturas híbridas
Peer-to-Peer
BitTorrent
PPLive
Componentes
São elementos de uma arquitetura que geralmente implementam processamento, estado ou interação e é substituível dentro do seu ambiente
Conectores
Tipo específico de componente responsável pela interação entre componentes
1.4 Organização e comunicação de componentes em sistemas distribuídos
Arquiteturas definem a infraestrutura de como estão organizados os componentes, através dos estilos arquitetônicos
Middleware
Propicia a comunicação simultânea entre dispositivos e oferece comunicação padrão
Camada lógica situada em camadas
Superior
Composta de usuários e aplicações
Inferior
Consiste em sistemas operacionais
Realiza a mediação entre diferentes tipos de
Aplicações
Protocolos
Sistemas Operacionais
Plataformas
Regras de computação
Fornece uma interface que diminui conflitos e incompatibilidades
Conjunto de APIs programáveis que interceptam diferenças operacionais mascarando uma integração de várias linguagens e padrões de comunicação através de processos bem definidos
É independente de estilo, porém implementado em vários modelos de paralelismo
Padrões famosos
OMG CORBA
Common Object Request Broker Architecture
RMI
Java Remote Method Invocation
Microsoft DCOM
Distributed Component Object Model
SOAP
Simple Object Access Protocol
Sua implementação apresenta algumas limitações
As modificações no código fonte para uma ou mais linguagens exigem a padronização ou criação de metadados
Metadados são algoritmos que padronizam as operações, tipos dedados e os parâmetros de entrada e saída nas interfaces
Atualmente as tecnologias mais utilizadas para compatibilizar essas informações são JSON e XML
Software adaptativo
Uma abordagem que envolve desenvolver Middlewares reconfiguráveis pelos programadores
Implementando APIs em diversas plataformas
Interessante pois as aplicações mudam continuamente
Mobilidade
Qualidade de Serviço
Falha de hardware
Utilizam os Interceptadores de Softwares
Podem interceptar uma chamada a nível de requisição ou mensagem
Técnicas importantes em sua criação
Separação de interesse
Estratégia de modularizar os sistemas, separando as partes que implementam funcionalidades:
Essenciais
Secundárias
Confiabilidade
Desempenho
Segurança
Base da Programação Orientada a Aspectos
Deixar aspectos técnicos inerentes à aplicação sob responsabilidade de frameworks ou service workers, se preocupando somente com a lógica sob o domínio do negócio
Reflexão computacional
Habilidade da aplicação de inspecionar a si mesma (corrigir seus próprios erros) e, se necessário, adaptar seu comportamento
Usada par auto-otimização e auto-modificação através de
Rotinas adaptáveis
Plugins de outras tecnologias
Prestar suporte
Desenvolvimento de componentes
Oferece adaptação por meio de composição
Uma funcionalidade pode ser adicionada de forma estática ou dinâmica
Módulos podem ser carregados e retirados
Não se sabe os efeitos causados pelo novo componente no resto do sistema