Sistemas DistribuídosSistemas Distribuídos
Arquitetura de Sistemas DistribuídosArquitetura de Sistemas Distribuídos
Aula IIAula II
Prof. Rosemary Silveira F. MeloProf. Rosemary Silveira F. Melo
Arquitetura de Sistemas DistribuídosArquitetura de Sistemas Distribuídos
•• Conceito de Arquitetura de SoftwareConceito de Arquitetura de Software
•• Principais elementos arquiteturaisPrincipais elementos arquiteturais
•• Modelos ArquiteturaisModelos Arquiteturais
•• Evolução das ArquiteturasEvolução das Arquiteturas
•• Estilos ArquiteturaisEstilos Arquiteturais
Conceito de Arquitetura de SoftwareConceito de Arquitetura de Software
•• é a estrutura de um sistema, que consiste de é a estrutura de um sistema, que consiste de
componentes de software, das propriedades componentes de software, das propriedades
externamente visíveis desses componentes e dos externamente visíveis desses componentes e dos
relacionamentos entre eles.relacionamentos entre eles.relacionamentos entre eles.relacionamentos entre eles.
•• é a estrutura ou organização dos mais é a estrutura ou organização dos mais
significativos componentes do sistema e suas significativos componentes do sistema e suas
interações.interações.
Principais elementos arquiteturaisPrincipais elementos arquiteturais
ComponentesComponentes
•• é uma unidade modular com interfaces é uma unidade modular com interfaces
requeridas e fornecidas bem definidas que é requeridas e fornecidas bem definidas que é
substituível dentro do seu ambiente.substituível dentro do seu ambiente.substituível dentro do seu ambiente.substituível dentro do seu ambiente.
•• são elementos de uma arquitetura que são elementos de uma arquitetura que
geralmente implementam: processamento geralmente implementam: processamento
(funcionalidade ou comportamento); estado (funcionalidade ou comportamento); estado
(informação ou dados); interação ( interconexão, (informação ou dados); interação ( interconexão,
comunicação, coordenação e mediação).comunicação, coordenação e mediação).
Principais elementos arquiteturaisPrincipais elementos arquiteturais
ComponentesComponentes
•• pode ser uma simples operação ou complexo pode ser uma simples operação ou complexo
como um sistema inteiro. Pode ser visto pelo como um sistema inteiro. Pode ser visto pelo
usuário (humano ou outro software) somente usuário (humano ou outro software) somente usuário (humano ou outro software) somente usuário (humano ou outro software) somente
através da sua interface pública.através da sua interface pública.
Principais elementos arquiteturaisPrincipais elementos arquiteturais
ConectoresConectores
•• tipo de componente responsável pela interação tipo de componente responsável pela interação
entre componentes.entre componentes.
•• em sistemas desktop convencionais os em sistemas desktop convencionais os •• em sistemas desktop convencionais os em sistemas desktop convencionais os
conectores são geralmente representados por conectores são geralmente representados por
simples chamadas de procedimento (procedure simples chamadas de procedimento (procedure
call) ou acesso a dados compartilhados. call) ou acesso a dados compartilhados.
•• em sistemas complexos eles passam a ter em sistemas complexos eles passam a ter
identidades, papéis e artefatos de implementação identidades, papéis e artefatos de implementação
único.único.
Modelos arquiteturaisModelos arquiteturais
•• Define a forma pela qual os Define a forma pela qual os componentescomponentes dos dos
sistemas sistemas interageminteragem e a maneira pela qual eles e a maneira pela qual eles
são mapeados em uma rede de computadores são mapeados em uma rede de computadores
subjacente (Coulouris, 2005).subjacente (Coulouris, 2005).subjacente (Coulouris, 2005).subjacente (Coulouris, 2005).
Evolução das arquiteturasEvolução das arquiteturas
Evolução das arquiteturasEvolução das arquiteturas
Arquiteturas 1 camada (Mainframes)• Dominantes até década de 80 como arquitetura • Dominantes até década de 80 como arquitetura
corporativacorporativa
• Terminais burros somente para apresentar as• Terminais burros somente para apresentar as
informações.informações.
Evolução das arquiteturasEvolução das arquiteturas
Arquiteturas 1 camada (Mainframes)Desvantagens:Desvantagens:
–– Manutenção difícil e cara, proporcional a sua Manutenção difícil e cara, proporcional a sua
eficiência.eficiência.eficiência.eficiência.
–– Problemas de congestionamento na entrada Problemas de congestionamento na entrada
do servidor devido a chegada de pedidosdo servidor devido a chegada de pedidos
–– Congestionamento no tratamento da Congestionamento no tratamento da
informação (sistema central responsável por informação (sistema central responsável por
tudo, até pela interface)tudo, até pela interface)
–– Problema básico: interface não amigávelProblema básico: interface não amigável
Evolução das arquiteturasEvolução das arquiteturas
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura Cliente/ServidorVantagens:Vantagens:
▫▫ Camada de apresentação no Cliente utiliza Camada de apresentação no Cliente utiliza
processamento local (aproveita PCs da empresa).processamento local (aproveita PCs da empresa).
▫▫ Oferecer sistemas com interfaces gráficasOferecer sistemas com interfaces gráficas
amigáveisamigáveis
▫▫ Integrar o desktop e os dados corporativos.Integrar o desktop e os dados corporativos.
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura Cliente/ServidorDesvantagens:Desvantagens:
•• Escalabilidade limitadaEscalabilidade limitada
•• Enormes problemas de manutenção (mudançasEnormes problemas de manutenção (mudanças
na lógica de aplicação forçava instalações)na lógica de aplicação forçava instalações)
•• Cada cliente uma conexão com o SGBDCada cliente uma conexão com o SGBD
Evolução das arquiteturasEvolução das arquiteturas
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura 3 Camadas•• A arquitetura cliente/servidor em 2 camadas A arquitetura cliente/servidor em 2 camadas
sofria de vários problemas:sofria de vários problemas:
–– Falta de escalabilidade (conexões a bancos Falta de escalabilidade (conexões a bancos –– Falta de escalabilidade (conexões a bancos Falta de escalabilidade (conexões a bancos
de dados)de dados)
–– Enormes problemas de manutenção Enormes problemas de manutenção
(mudanças na lógica de aplicação forçava (mudanças na lógica de aplicação forçava
instalações)instalações)
•• Dificuldade de acessar fontes heterogêneasDificuldade de acessar fontes heterogêneas
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura 3 CamadasVantagens:Vantagens:
•• Perda de performance é compensada com Perda de performance é compensada com
ganho de flexibilidade.ganho de flexibilidade.ganho de flexibilidade.ganho de flexibilidade.
•• Aumento da escalabilidade e confiabilidade do Aumento da escalabilidade e confiabilidade do
sistema.sistema.
•• Problemas de manutenção foram reduzidos, Problemas de manutenção foram reduzidos,
pois mudanças nas camadas de aplicação e de pois mudanças nas camadas de aplicação e de
dados não necessitam de novas instalacões no dados não necessitam de novas instalacões no
desktop.desktop.
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura 3 CamadasDesvantagens:Desvantagens:
•• Integração via InternetIntegração via Internet
–– Problema que a maioria não foi projetada Problema que a maioria não foi projetada
para internetpara internet
•• Integração entre sistemas 3Integração entre sistemas 3--tierstiers
–– falta de padronizaçãofalta de padronização
Evolução das arquiteturasEvolução das arquiteturas
Evolução das arquiteturasEvolução das arquiteturas
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura n-camadas•• A arquitetura em 3 camadas original sofre de A arquitetura em 3 camadas original sofre de
problemas:problemas:
–– A instalação inicial dos programas no desktop A instalação inicial dos programas no desktop –– A instalação inicial dos programas no desktop A instalação inicial dos programas no desktop
é cara.é cara.
–– O problema de manutenção ainda persiste O problema de manutenção ainda persiste
quando há mudanças na camada de quando há mudanças na camada de
apresentação.apresentação.
–– Não se pode instalar software facilmente num Não se pode instalar software facilmente num
desktop que não está sob seu controle desktop que não está sob seu controle
administrativoadministrativo
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura n-camadas• Uso do Browser como Cliente Universal/Thin • Uso do Browser como Cliente Universal/Thin
ClientClient
•• A camada de aplicação se quebra em duas: Web A camada de aplicação se quebra em duas: Web •• A camada de aplicação se quebra em duas: Web A camada de aplicação se quebra em duas: Web
e Aplicaçãoe Aplicação
•• EvitaEvita--se instalar qualquer software no desktop e se instalar qualquer software no desktop e
portanto, problemas de manutenção.portanto, problemas de manutenção.
•• PodePode--se chamar de 3 camadas porque às vezes se chamar de 3 camadas porque às vezes
as camadas as camadas Web e AplicaçãoWeb e Aplicação freqüentemente freqüentemente
rodam na mesma máquina (pequenos volumes)..rodam na mesma máquina (pequenos volumes)..
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura n-camadasDesvantagens:Desvantagens:
•• ComplexidadeComplexidade
•• Fazer aplicações distribuídas multicamadas é Fazer aplicações distribuídas multicamadas é •• Fazer aplicações distribuídas multicamadas é Fazer aplicações distribuídas multicamadas é
difícil. Tem que:difícil. Tem que:
–– Implementar tolerância a falhasImplementar tolerância a falhas
–– Implementar gerência de transações Implementar gerência de transações
distribuídasdistribuídas
–– Implementar balanceamento de cargaImplementar balanceamento de carga
–– Implementar Implementar resource poolingresource pooling
–– Muito middleware envolvidoMuito middleware envolvido
Evolução das arquiteturasEvolução das arquiteturas
Arquitetura n-camadasDesvantagens:Desvantagens:
•• Informação redundanteInformação redundante
•• Dificuldade e o custo de desenvolvimento e Dificuldade e o custo de desenvolvimento e •• Dificuldade e o custo de desenvolvimento e Dificuldade e o custo de desenvolvimento e
manutenção. manutenção.
•• Cresce exponencialmente com o número de Cresce exponencialmente com o número de
camadas camadas
Evolução das arquiteturasEvolução das arquiteturas
•• O truque é introduzir O truque é introduzir middleware middleware num num
servidor de aplicação que ofereça esses servidor de aplicação que ofereça esses
serviços automaticamente. Além do mais, serviços automaticamente. Além do mais, serviços automaticamente. Além do mais, serviços automaticamente. Além do mais,
as soluções oferecidas (J2EE, . Net) são as soluções oferecidas (J2EE, . Net) são
baseadas em componentes.baseadas em componentes.
Por quê definir uma arquitetura para Por quê definir uma arquitetura para Sistemas Distribuídos ?Sistemas Distribuídos ?
•• Sistemas distribuídos são complexas peças Sistemas distribuídos são complexas peças de software.de software.
•• Componentes estão espalhados por diversas Componentes estão espalhados por diversas •• Componentes estão espalhados por diversas Componentes estão espalhados por diversas máquinas.máquinas.
•• Sistemas devem ser organizados Sistemas devem ser organizados adequadamente: organização lógica do adequadamente: organização lógica do conjunto de componentes e organização físicaconjunto de componentes e organização física
Estilos arquiteturaisEstilos arquiteturais
• Estilos arquiteturais definem decisões gerais de Estilos arquiteturais definem decisões gerais de
projeto que impõem restrições e que podem projeto que impõem restrições e que podem
precisar ser detalhadas em decisões mais precisar ser detalhadas em decisões mais
específicas para o sistema em questão.específicas para o sistema em questão.específicas para o sistema em questão.específicas para o sistema em questão.
•• Não são definidos detalhes acerca de Não são definidos detalhes acerca de
componentes utilizados, suas interfaces e seus componentes utilizados, suas interfaces e seus
mecanismos de interação. O arquiteto deve mecanismos de interação. O arquiteto deve
detalhar estas decisões e adaptádetalhar estas decisões e adaptá--las para o las para o
contexto específico de uma aplicação em contexto específico de uma aplicação em
particular.particular.
Estilos arquiteturaisEstilos arquiteturais
• Estilos em CamadaEstilos em Camada
•• Estilos com Memória CompartilhadaEstilos com Memória Compartilhada
•• Estilos Baseados em EventoEstilos Baseados em Evento
•• PeerPeer--toto--PeerPeer
Estilos arquiteturaisEstilos arquiteturais
• Estilos em Camada Estilos em Camada
–– a arquitetura é separada em camadas a arquitetura é separada em camadas
ordenadas, onde um programa de uma camada ordenadas, onde um programa de uma camada
pode solicitar serviços de uma camada inferior. pode solicitar serviços de uma camada inferior.
–– Virtual Machines Virtual Machines –– várias camadasvárias camadas–– Virtual Machines Virtual Machines –– várias camadasvárias camadas
–– ClientClient--Server Server -- duas camadas com conexões duas camadas com conexões
em redeem rede
Estilos arquiteturaisEstilos arquiteturais
• Estilos em Camada Estilos em Camada -- Virtual MachineVirtual Machine
Estilos arquiteturaisEstilos arquiteturais
• Estilos em Camada Estilos em Camada –– ClientClient--ServerServer
Estilos arquiteturaisEstilos arquiteturais
• Estilos com Memória CompartilhadaEstilos com Memória Compartilhada
–– caracterizado pela presença de múltiplos caracterizado pela presença de múltiplos
componentes que acessam o mesmo componentes que acessam o mesmo
repositório de dados e se comunicam através repositório de dados e se comunicam através
deste repositório.deste repositório.deste repositório.deste repositório.
––-- programas independentes acessam e se programas independentes acessam e se
comunicam exclusivamente através de um comunicam exclusivamente através de um
repositório global, conhecido como repositório global, conhecido como
blackboardblackboard..
Estilos arquiteturaisEstilos arquiteturais
• Estilos com Memória CompartilhadaEstilos com Memória Compartilhada
Exemplo: conjunto de ferramentas CASE integradaExemplo: conjunto de ferramentas CASE integrada
Estilos arquiteturaisEstilos arquiteturais
• Estilos com Memória CompartilhadaEstilos com Memória Compartilhada
Estilos arquiteturaisEstilos arquiteturais
• Estilos Baseados em EventoEstilos Baseados em Evento
–– caracterizados por componentes caracterizados por componentes
independentes que se comunicam somente independentes que se comunicam somente
através de eventos transmitidos por um através de eventos transmitidos por um
barramento (conector).barramento (conector).barramento (conector).barramento (conector).
–– altamente indicado para sistemas com altamente indicado para sistemas com
componentes concorrentes altamente componentes concorrentes altamente
desacoplados onde, em um determinado desacoplados onde, em um determinado
momento, um componente pode estar ou momento, um componente pode estar ou
criando ou consumindo informação.criando ou consumindo informação.
Estilos arquiteturaisEstilos arquiteturais
• Estilos Baseados em EventoEstilos Baseados em Evento
–– Nesta arquitetura, processos demonstram o Nesta arquitetura, processos demonstram o
interesse por um evento ou conjunto de interesse por um evento ou conjunto de
eventos (processo se subscreve) e esperam eventos (processo se subscreve) e esperam
pela notificação de qualquer um desses pela notificação de qualquer um desses pela notificação de qualquer um desses pela notificação de qualquer um desses
eventos, gerados por um processo notificador.eventos, gerados por um processo notificador.
–– O O produtor publicaprodutor publica uma informação em um uma informação em um
gerenciador de eventos (middleware) e os gerenciador de eventos (middleware) e os
consumidores se subscresvemconsumidores se subscresvem para receber para receber
as informações deste gerenciador. Eventos e as informações deste gerenciador. Eventos e
notificações.notificações.
Estilos arquiteturaisEstilos arquiteturais
• Estilos Baseados em EventoEstilos Baseados em Evento
Estilos arquiteturaisEstilos arquiteturais
• PeerPeer--toto--Peer (P2P)Peer (P2P)
–– consiste em uma rede de peers autônomos consiste em uma rede de peers autônomos
fracamente acoplados.fracamente acoplados.
–– cada peer atua como um cliente e como um cada peer atua como um cliente e como um
servidor.servidor.servidor.servidor.
–– peers se comunicam utilizando protocolo de peers se comunicam utilizando protocolo de
rede (ex.: napster, gnutella, emule, PPLive)rede (ex.: napster, gnutella, emule, PPLive)
–– descentraliza tanto a informação quanto o descentraliza tanto a informação quanto o
controle, fazendo com que a descoberta de controle, fazendo com que a descoberta de
recursos seja um aspecto importante.recursos seja um aspecto importante.
Estilos arquiteturaisEstilos arquiteturais
• PeerPeer--toto--Peer (P2P)Peer (P2P)
–– na descoberta de recursos em sistemas P2P na descoberta de recursos em sistemas P2P
puro:puro:
•• a solicitação é lançada na rede como um a solicitação é lançada na rede como um
todotodotodotodo
•• a requisição se propaga até que a a requisição se propaga até que a
informação seja descobertainformação seja descoberta
•• se a informação é encontrada o peer se a informação é encontrada o peer
obtém o endereço direto do outro peer e obtém o endereço direto do outro peer e
contacta diretamente.contacta diretamente.
Estilos arquiteturaisEstilos arquiteturais
• PeerPeer--toto--Peer (P2P)Peer (P2P)
–– na descoberta de recursos em sistemas P2P híbrido:na descoberta de recursos em sistemas P2P híbrido:
•• processo é otimizado por a presença de peers processo é otimizado por a presença de peers especiais, especializados na localização de outros especiais, especializados na localização de outros peers ou disponibilização de diretórios que localizam peers ou disponibilização de diretórios que localizam as informações. Ex.: napster (utiliza um servidor as informações. Ex.: napster (utiliza um servidor as informações. Ex.: napster (utiliza um servidor as informações. Ex.: napster (utiliza um servidor central para indexação das músicas e localização de central para indexação das músicas e localização de outros peers).outros peers).
–– estilo popular nas aplicações de compartilhamento de estilo popular nas aplicações de compartilhamento de arquivos, utilizado também B2B commerce, chat, redes arquivos, utilizado também B2B commerce, chat, redes de sensores.de sensores.
Estilos arquiteturaisEstilos arquiteturais
• PeerPeer--toto--Peer (P2P)Peer (P2P)
Arquiteturas de SistemasArquiteturas de Sistemas
• Como diversos sistemas distribuídos são Como diversos sistemas distribuídos são realmente organizados ?realmente organizados ?
•• Onde são colocados os componentes de Onde são colocados os componentes de •• Onde são colocados os componentes de Onde são colocados os componentes de software ?software ?
•• Onde é estabelecida a interação entre as Onde é estabelecida a interação entre as peças de software ?peças de software ?
Arquiteturas de Sistemas Arquiteturas de Sistemas
•• Arquiteturas CentralizadasArquiteturas Centralizadas
–– ClienteCliente--Servidor: terminais bancáriosServidor: terminais bancários
•• Arquiteturas DescentralizadaArquiteturas Descentralizada•• Arquiteturas DescentralizadaArquiteturas Descentralizada
–– PeerPeer--toto--Peer (P2P): EPeer (P2P): E--ChordsChords
•• Arquiteturas HíbridasArquiteturas Híbridas
–– PeerPeer--toto--Peer (P2P): BitTorrent, PPLivePeer (P2P): BitTorrent, PPLive
Arquiteturas CentralizadasArquiteturas Centralizadas
• Modelo ClienteModelo Cliente--ServidorServidor
–– processos são divididos em dois gruposprocessos são divididos em dois grupos
–– Servidor: processo que implementa um Servidor: processo que implementa um –– Servidor: processo que implementa um Servidor: processo que implementa um
serviço específicoserviço específico
–– Cliente: processo que requisita um serviço ao Cliente: processo que requisita um serviço ao
servidorservidor
•• Requisição Requisição --> Resposta> Resposta
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
•• Modelo ClienteModelo Cliente--Servidor: questões, questões!!Servidor: questões, questões!!
•• Clientes e Servidores multithreads?Clientes e Servidores multithreads?
•• Comunicação???Comunicação???•• Comunicação???Comunicação???
•• Qual o tipo de aplicação?Qual o tipo de aplicação?
•• Sem conexão, não confiável (UDP)?Sem conexão, não confiável (UDP)?
•• Com conexão, confiável (TCP)?Com conexão, confiável (TCP)?
Arquiteturas CentralizadasArquiteturas Centralizadas
●● Considerando aplicações clienteConsiderando aplicações cliente--servidor que servidor que
visam dar suporte ao acesso de usuários a banco visam dar suporte ao acesso de usuários a banco
de dados:de dados:
–– Nível de interfaceNível de interface
–– Nível de processamentoNível de processamento
–– Nível de dadosNível de dados
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Com a distinção entre três níveis lógicos, comoCom a distinção entre três níveis lógicos, como
distribuir fisicamente uma aplicaçãodistribuir fisicamente uma aplicação
clientecliente--servidor por várias máquinas?servidor por várias máquinas?clientecliente--servidor por várias máquinas?servidor por várias máquinas?
–– Arquitetura de duas divisões físicasArquitetura de duas divisões físicas
–– Arquitetura de três divisões físicasArquitetura de três divisões físicas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas CentralizadasArquiteturas Centralizadas
Arquiteturas DescentralizadasArquiteturas Descentralizadas
•• Clientes e servidores são fisicamente Clientes e servidores são fisicamente
subdivididos em partes logicamente equivalentes,subdivididos em partes logicamente equivalentes,
mas cada parte está operando em sua própriamas cada parte está operando em sua própria
porção do conjunto completo de dados, o que porção do conjunto completo de dados, o que
equilibra a carga!!!!equilibra a carga!!!!
•• Interação entre os processos é simétrica: cada Interação entre os processos é simétrica: cada
processo agirá como um cliente e um servidor aoprocesso agirá como um cliente e um servidor ao
mesmo tempo.mesmo tempo.
Arquiteturas DescentralizadasArquiteturas Descentralizadas
Sistemas P2P Sistemas P2P –– questões, questões, questões!!questões, questões, questões!!
●● Como organizar os peers em uma rede deComo organizar os peers em uma rede de
sobreposição ?sobreposição ?sobreposição ?sobreposição ?
●● Como difundir o conteúdo?Como difundir o conteúdo?
●● Como incentivar os peers a colaborarem?Como incentivar os peers a colaborarem?
Arquiteturas DescentralizadasArquiteturas Descentralizadas
Arquiteturas DescentralizadasArquiteturas Descentralizadas
Arquiteturas DescentralizadasArquiteturas Descentralizadas
Arquiteturas DescentralizadasArquiteturas Descentralizadas
Arquiteturas DescentralizadasArquiteturas Descentralizadas
Arquiteturas DescentralizadasArquiteturas Descentralizadas