Buscar

Aula 1 - Introdução a Programação Distribuída

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Desenvolvimento em sistemas distribuídos
Fábio Gomes Coqueiro
1
Sistemas Distribuídos
(TANENBAUM)
Consiste em uma coleção de computadores independentes que se apresentam ao usuário como um sistema único transparente.
Sistemas Distribuídos
(COULOURIS)
É 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.
Para que?
A maior motivação para o desenvolvimento de sistemas distribuídos é o desejo de compartilhar recursos.
Redução no tempo de carga e de execução nas plataformas Cliente; 
Independência de Localização física; 
Alta Disponibilidade da Aplicação; 
Possibilidade de Heterogeneidade de Ambientes; 
Maior poder de Escalabilidade; 
Quando distribuir?
À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.
Sistemas Centralizados 
x
Sistemas Distribuídos
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
Modelos de computação distribuída
Cliente/Servidor
Peer-to-peer
Objetos distribuídos
Exemplos
Os exemplos mais familiares são aqueles baseados em redes de computadores:
Internet
Intranets
Sistemas móveis e ubíquo
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
Exemplos
Internet
intranet
ISP
desktop computer:
backbone
satellite link
server:
%
network link:
%
%
%
Exemplos
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.
Exemplos
Intranets
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
Exemplos
Sistemas móveis e ubíquos
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.
Exemplos
Sistemas móveis e ubíquos
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
Tipos de Sistemas Distribuídos
Sistemas de computação distribuídos
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. 
Tipos de Sistemas Distribuídos
Sistemas de informação distribuídos
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.
Tipos de Sistemas Distribuídos
Sistemas distribuídos pervasivos
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 a sua disposição o maior número possível de serviços sem despender grandes esforços para utiliza-los.
Tipos de Sistemas Distribuídos
Sistemas distribuídos pervasivos (grupos):
Sistemas domésticos
Tipos de Sistemas Distribuídos
Sistemas distribuídos pervasivos (grupos):
Redes de Sensores:
Nó sensor
Gateway
Tipos de Sistemas Distribuídos
Sistemas distribuídos pervasivos (grupos):
Sistemas para tratamento de saúde:
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.
Heterogeneidade
Eles devem ser construídos a partir de uma variedade de redes, sistemas operacionais, hardware e linguagens de programação diferentes.
Sistemas abertos
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.
Segurança
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.
Escalabilidade
Um sistema distribuído permanece eficiente quando há um aumento significativo no número de recursos e no número de usuários.
Tratamento de falhas
As falhas são parciais, isto é, alguns componentes falham, enquanto outros continuam funcionando.
Concorrência
A presença de múltiplos usuários é uma fonte de pedidos concorrentes para seus recursos.
Transparência
O objetivo é tornar certos aspectos da distribuição invisíveis para o programador de aplicativos.
Transparência
Tipos de transparências:
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.
Estabelecer conexões entre máquinas
Enviar e receber dados
Encerrar conexões
Esperar por conexões em determinada porta
Modelo Cliente/Servidor
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 elementos assumem papel de clientes (requisitantes do serviço) ou servidores (provedores do serviço)
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).
Modelo Cliente/Servidor
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.
Modelo Cliente/Servidor
Programação orientada a objetos
Da mesma forma que o paradigma da programação estruturada foi estendido para ambientes distribuídos, o mesmo fato ocorreu com o paradigma de programação orientada a objetos.
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).
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.
CORBA
Java/RMI
DCOM
Computação de objetos distribuídos
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.
Computação de objetos distribuídos
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:
Características de um sistema distribuído 
Exemplo
Características de um sistema distribuído 
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 infra-estrutura de comunicação entre os diversos objetos da aplicação distribuída.
Computação de objetos distribuídos
A infra-estrutura 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.
Computação de objetos distribuídos
Contexto orientado a componentes
O uso das plataformas de middleware tradicionais no desenvolvimento de aplicações, é uma atividade muito complexa, resultando em um baixo potencial para reutilização e portabilidade.
Com o objetivo de minimizar deficiências e atender aos requisitos impostos pelas novas aplicações surgiu um novo paradigma de computação distribuída: a computação de componentes distribuídos.
Reuso
Evolução
Especialização (customização) de componentes
Geração automática de códigos
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.
Contexto orientado a componentes
Essa evolução natural de contexto permite que os requisitos impostos pelas novas aplicações (emergentes) possam ser atendidos.
Contexto orientado a componentes
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.
Aplicações, serviços
Middleware
Sistema Operacional
Hardware de Computador e Rede
Apl. A
Camada do Sistema Distribuído (Middleware)
SO local 1
HW Local 1
Apl. B
SO local 2
HW Local 2
SO local 3
HW Local 3
Rede

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais