Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
1 Modelo Arquitectural.............................................................................................3
1.1 Modelo de camada .........................................................................................3
1.1.1 Plataforma ..............................................................................................3
1.1.2 Middleware ............................................................................................4
1.2 Modelo de arquitectura de Sistemas ..............................................................9
1.2.1 Modelo Cliente Servidor........................................................................9
1.2.2 Serviços Providenciados por Múltiplos Servidores .............................11
1.2.3 Servidores proxies e caches .................................................................12
1.2.4 Modelo P2P (Peer to Peer) .................................................................13
1.3 Variações do modelo Cliente Servidor ........................................................14
1.3.1 Código Móvel ......................................................................................14
1.3.2 Agentes Móveis ...................................................................................15
1.3.3 Computadores em rede ........................................................................16
1.3.4 Thin Clients (Clientes Leves)...............................................................16
1.3.5 Dispositivos móveis e rede espontânea................................................17
1.4 Modelo de interfaces e objectos (Orientado a objectos) ..............................18
2 Critérios para a escolha do Modelo .....................................................................19
3 Modelo fundamental ............................................................................................20
3.1 Modelo de interacção...................................................................................21
3.1.1 Desempenho do Canal de Comunicação..............................................23
3.1.2 Relógio do computador e tempos de eventos ......................................24
3.1.3 Variações do modelo de interacção .....................................................24
3.1.3.1 Sistemas distribuídos síncronos .......................................................24
3.1.3.2 Sistemas distribuídos assíncronos....................................................25
3.1.4 Ordenação de Eventos..........................................................................26
3.2 Modelo de falhas..........................................................................................27
3.2.1 Definições Básicas ...............................................................................28
3.2.1.1 Fault tolerance - tolerância a falhas ...........................................28
3.2.1.2 Availability – disponibilidade....................................................28
3.2.1.3 Reliability - fiabilidade...............................................................28
3.2.1.4 Timeliness- adequação temporal ou pontualidade ..............28
3.2.2 Tipos de falhas .....................................................................................28
3.2.2.1 Falhas por omissão e arbitrárias ............................................29
3.2.2.2 Mascarar falhas de componentes ..........................................30
3.2.3 Falhas temporais ..................................................................................30
3.3 Modelo de segurança ...................................................................................31
3.3.1 Protegendo objectos .............................................................................31
3.3.2 Protegendo processos e suas interacções .............................................32
3.3.3 O inimigo .............................................................................................33
3.3.3.1 Ameaças a processos........................................................................33
3.3.3.2 Ameaças a canais de comunicação ..................................................34
3.3.4 Defendendo-se das ameaças de segurança...........................................35
3.3.5 Outras possibilidades de ameaça de um inimigo .................................36
3.3.5.1 Denial of Service..............................................................................37
3.3.5.2 Código móvel...................................................................................37
3.3.6 O uso dos modelos de segurança .........................................................37
4 Bibliografia ..........................................................................................................38
1
Modelos de Estruturação de Sistemas Distribuídos
1 Modelo Arquitectural
1.1.1 Plataforma
3
Índice de Figuras
Fig. 1: Camadas de serviços de software e hardware num SD ......................................3
Fig. 2: Máquinas, Sistemas de Rede e Sistemas Operacionais de diversos fabricantes 4
Fig. 3: Rede formada por diversas plataformas .............................................................5
Fig. 4: Desafio de integração de ambientes heterogéneos .............................................5
Fig. 5: Midleware como solução para integração de ambientes heterogéneos ..............6
Fig. 6: Clientes invocam servidor individual.................................................................9
Fig. 7: Web crawler .....................................................................................................10
Fig. 8: Um serviço providenciado por múltiplos servidores........................................11
Fig. 9: Servidor proxy ..................................................................................................12
Fig. 10: Uma aplicação distribuída baseada em processos peer..................................14
Fig. 11: Applets Web....................................................................................................14
2
de programação para um nível que facilita a coordenação e comunicação entre
processos. Intel x86/Windows; SPARC/SunOS, intel X86/Solarris, Intel x86/Linux
são principais exemplos.
1.1.2 Middleware
Problemas:
Como integrar e distribuir os sistemas?
Como construir um ambiente para solucionar este novo paradigma com a existência
de:
• Ambiente de desenvolvimento heterogéneo;
• Rede diversas (arquitecturas e protocolos),
• Multe vendedores,
• Não existe consenso sobre a plataforma de hardware,
• Não existe consenso sobre sistema operacional,
• Não existe consenso sobre a plataforma de desenvolvimento,
• Não existe consenso sobre a middleware
4
Então surge uma questão: como ultrapassar estas limitações, visualizadas na fig. 3.
5
Fig. 5: Midleware como solução para integração de ambientes heterogéneos
Um middleware deve fazer diversas coisas. Primeiro, ele provê um modo para obter
dados de um lugar (..) para outro lugar (..). Segundo, ele deve mascarar as diferenças
existentes entre: sistema operativo; plataformas de hardware e protocolos de rede.
Terceiro, ele deve ocultar a complexidade do processo de transporte da rede, do
desenvolvedor da aplicação. (Salamone 1996)
6
• Middleware de apresentação é o trio: navegador; protocolo HTTP e servidor
Web que dividem a responsabilidade da comunicação para mostrar uma
página através da Internet.
• Middleware de dados é, em geral, fornecido pela desenvolvedora do banco
de dados e tem como função fazer as consultas SQL no servidor através da
rede, retornando o resultado à estação cliente.
• Outro exemplo de middleware de dados são os gateways que gerenciam
acessos a diferentes bancos de dados, usando uma API ODBC (Application
Programming Interface Open Database Connectivity).
7
sistema de volta ao estado em que ele estava antes da transacção ser
invocada. Este esquema evita problemas na rede e no banco de dados,
já que, ou a transação funciona até ao fim ou todas as suas acções são
desfeitas (rollback).
• Middleware orientado a objetos distribuídos:
– CORBA – Common Object Request Broker Architecture – arquitectura
padrão criada pelo Object Management Group para estabelecer e
simplificar a troca de dados entre sistemas distribuídos heterogéneos.
– DCOM – Distributed Component Object Model - é um modelo mais
popular de objectos distribuídos, à semelhança do CORBA. A
diferença é que o DCOM é proprietário da Microsoft.
– RMI – Remote Method Invocation – interface de programação que
permite a execução de chamadas remotas no estilo RPC em aplicações
desenvolvidas em Java. É uma forma de implementar um sistema
distribuído em plataforma Java
– Web Service – solução utilizada na integração de sistemas e na
comunicação entre aplicações diferentes. Com esta tecnologia é
possível que novas aplicações possam interagir com aquelas que já
existem e que sistemas desenvolvidos em plataformas diferentes sejam
compatíveis. OsWeb services são componentes que permitem às
aplicações enviar e receber dados em formato XML (eXtensible
Markup Language). Cada aplicação pode ter a sua própria
"linguagem", que é traduzida para uma linguagem universal, o formato
XML.
– EJB – Enterprise JavaBeans – é um dos principais componentes da
plataforma J2EE (Java 2 Enterprise Edition). É um componente do
tipo servidor que roda no container para EJB do servidor de aplicação.
Os principais objectivos da tecnologia EJB são fornecer rápido e
simplificado desenvolvimento de aplicações Java baseadas em
componentes, distribuídas, transnacionais, seguras e portáveis.
8
1.2 Modelo de arquitectura de Sistemas
9
Em algum momento os servidores podem ser clientes de outros servidores, como
ilustra a fig. 6. Por exemplo, um servidor Web é frequentemente um cliente para um
servidor local de ficheiros, que faz a gestão das páginas Web em si armazenadas.
Servidores Web e muitos outros serviços de Internet são clientes dos serviços DNS
(Domain Name System), que traduz os nomes dos domínios da Internet para endereços
de rede. Outro exemplo, também relacionado com a Web, são os motores de busca
que permitem aos usuários pesquisar resumos de páginas Web em sites da Internet.
Estes resumos são feitos, por programas chamados Web crawler1 (vide fig. 7), que
correm por detrás do site do motor de busca usando requisições http2 para aceder
servidores Web através da Internet.
1
De acordo com Crovella, Lindemann e Reiser (2000), os sistemas de busca na Internet cresceram
consideravelmente nos últimos anos. Esses sistemas operam geralmente através de agentes. A maior
parte destes mecanismos de procura e indexação de informações são chamadas de Web crawlers.
2
Hyper Text Transfer Protocol
10
1.2.2 Serviços Providenciados por Múltiplos Servidores
Servidor
Cliente
Servidor
Cliente
Servidor
11
1.2.3 Servidores proxies e caches
12
1.2.4 Modelo P2P (Peer to Peer)
13
Fig. 10: Uma aplicação distribuída baseada em processos peer
Aplicação Aplicação
Código de Código de
coordenação coordenação
Aplicação
Código de
coordenação
Diversas variações neste modelo podem ser derivados da consideração dos seguintes
factores:
• O uso de código móvel em agentes móveis;
• Necessidades de usuário em uso de computadores de baixo custo com recursos
de hardware limitados que são simples de gerir.
• Os requisitos de adicionar e remover dispositivos móveis duma forma
conveniente.
Applets são bem conhecidos e largamente usados como exemplo de código móvel é o
caso de o utilizador de um navegador Web seleccionar um link para Applet cujo
código esta num servidor Web; o código é descarregado para o navegador e é
executado no mesmo, como é mostrado na fig. 9. A vantagem de executar o código
descarregado localmente, é que pode boas respostas interactivas, pois não sofre
atrasos nem variabilidade da largura de banda associado com as comunicações.
Servidor
Cliente
Web
Código Applet
14
b) Cliente interage com o Applet
Servidor
Cliente Applet
Web
Acedendo serviços significa executar código que pode invocar outras operações.
Alguns serviços já estão estandardizados que podem ser acedidos com aplicações bem
conhecidas – a Web é o exemplo mais comum, mas mesmo na Web existem alguns
sites usam funcionalidades não encontradas em navegadores Web, que requerem
código adicional. O código adicional pode, por exemplo, comunicar com o servidor.
Considerando uma aplicação que requere que o usuários tenham informação
actualizada à medida que vão ocorrendo alterações no servidor. Isto não pode ser
alcançado com uma interacção normal com o servidor Web, que é sempre iniciada
pelo cliente.
Agentes móveis (como código móvel) são potenciais ameaças para os recursos do
computador que acedem. O ambiente que recebe um agente móvel deve decidir, que
recursos locais são permitidos para o agente, baseados na identidade do usuário com
quem o agente está interagindo – a identidade deve ser incluído duma forma segura
com o código e os dados do agente móvel. Adicionalmente, agentes móveis podem
eles próprios ser vulneráveis – eles podem não completar a tarefa se forem recusados
a aceder a informação que eles precisam. Por exemplo, Web crawlers que precisam
aceder recursos num servidor Web através da Internet que funcionam correctamente
15
fazendo requisições remotas a processos servidores. Por esta razão, a aplicação de
agentes móveis pode ser limitada.
O termo Thin Client refere-se a uma camada de software que suporta interfaces do
usuário baseado em janelas num computador local, para o utilizador executando
aplicações num computador remoto. Esta arquitectura possui também baixo custo de
gestão e de hardware, a semelhança de arquitectura de computadores em rede. Pois ao
invés de descarregar o código das aplicações no computador local, tudo ocorre no
computador servidor. Que tem uma grande capacidade de executar uma quantidade
significativa de aplicações simultaneamente.
16
A principal desvantagem de uma aplicação thin client é alta actividade de interacção
gráfica, o que resulta em maior tempo de atraso no processamento da imagem. Por
exemplo, VNC (Virtual network computer), Remote Desktop Connection (RDC), …
Num hotel é um exemplo de uma rede espontânea em que os clientes podem ter
serviços de música, alarme e acesso a Internet.
17
desconectados por um longo período de tempo em regiões onde a rede
wireless não cobre ou quando é caro para o utilizador se manter ligado.
• Segurança e privacidade – muitos aspectos relacionados com segurança e
privacidades devem ser tomados em conta em cenários semelhantes aos do
hotel em que temos serviços de música, alarme e acesso a Internet. Os clientes
do hotel são vulneráveis a ataques de outros clientes ou empregados do hotel
que acedem serviços não supervisionados. Os clientes que, a partir do hotel,
acedem a intranet das duas casas podem expor dados pessoais que são
supostos estarem escondidos nos firewalls ou podem abrir portas de ataque a
partir de fora.
O conjunto de funções disponível para invocação num processo (quer seja processo
servidor ou peer) é especificado por uma ou mais definições de interfaces. Numa
forma básica da arquitectura cliente servidor, cada processo servidor é visto como
uma entidade com funções de interface bem definidas para serem invocadas.
18
Em linguagens orientadas a objectos tais como Java e C++, com suporte adicional
apropriado, processos distribuídos podem ser construídas em mais formas de
orientação a objectos. Muitos objectos podem ser encapsulados num processo
servidor ou peer e suas referências são passadas a outros objectos de forma que
possam ser acedidas pela invocação remota. Esta abordagem é adoptada por CORBA,
Java, … com o seu mecanismo de invocação remota (RMI).
19
3 Modelo fundamental
Objectivo de um modelo é:
• Tornar explícitas todas suposições relevantes sobre o sistema em modelação.
• Permitir generalizações sobre o que é possível ou impossível de ser realizado
dadas as suposições. As generalizações podem se tornar sob forma de
objectivo principal de algoritmos ou propriedades desejáveis que sejam
garantidas. A garantia depende da análise lógica, quando apropriado, prova
matemática.
Isto é suficiente para se ganhar pelo conhecimento do que o sistema faz ou não.
Permitindo saber se o modelo de sistema em desenvolvimento funcionará ou não, de
forma a decidir sobre o seu desenvolvimento.
20
Os aspectos de sistemas distribuídos que se deseja compreender em modelos
fundamentais são: interacção, falhas e segurança.
Sistemas distribuídos são compostos por muitos processos, interagindo de uma forma
complexa. Por exemplo.
• Processos de servidores múltiplos podem cooperar uns com os outros para
providenciar serviços. Por exemplo, Domain Name Service que particiona e
replica seus dados em diferentes servidores na Internet; Network Information
21
Service da Sun que mantém cópias de passwords em vários servidores na rede
local.
• Um conjunto de processos peer podem cooperar uns com os outros para
atingir um objectivo comum. Por exemplo, o Sistema de vídeo-conferência
que distribui fluxos de dados áudio e imagem de forma similar, mas com
severos constrangimentos em tempo real.
22
• O desempenho do canal de comunicação é frequentemente uma característica
limitante;
• É impossível manter uma simples noção global do tempo.
Jitter é a variação no tempo levado para entregar uma série de mensagens. Jitter é
relevante para mensagens multimédia. Por exemplo, se consecutivos segmentos de
dados áudio forem tocados com diferentes intervalos, o som será distorcido.
23
3.1.2 Relógio do computador e tempos de eventos
Cada computador num sistema distribuído tem o seu relógio interno, que pode ser
usado pelo processo local para obter o tempo corrente. Deste modo, dois processos a
serem executados em computadores diferentes podem associar nos seus eventos um
selo do tempo. Contudo, mesmo se dois processos lerem os seus relógios ao mesmo
tempo, os seus relógios locais pode indicar valores (horas) diferentes. Isto porque o
relógio do computador oscila na hora certa, ainda o mais importante é que essa
oscilação média difere de um computador a outro.
24
É possível sugerir o limite superior e inferior da oscilação do tempo de execução,
atraso de mensagens e oscilações de relógio em sistemas distribuídos. Mas é difícil
chagar a valores concretos e providenciar garantias nos valores escolhidos. A não ser
que os valores dos intervalos estejam possam ser garantidos, todo d desenho baseado
nos valores escolhidos não será confiável. De qualquer modo, modelar um algoritmo
como um sistema assíncrono pode ser útil para dar umas ideias de como vai se
comportar num verdadeiro sistema distribuído.
Em sistemas síncronos é possível usar timeout por exemplo para detectar a falha de
um processo.
Muitos sistemas distribuídos, por exemplo a Internet, são muito importantes sem
serem classificados como sistemas síncronos. Por isso a necessidade de um modelo
alternativo: o sistema distribuído assíncrono em que não há limite:
• Velocidade de execução dos processos – por exemplo, a execução de um
processo numa determinada fase pode demorar um pico segundo e um outro
demorar um século. Isto é, cada fase de execução pode demorar um longo
período de tempo aleatório.
• Atraso na transmissão da mensagem – por exemplo, uma mensagem
enviada do processo A para o processo B pode demorar zero segundos, e outro
pode demorar vários anos. Em outras palavras, uma mensagem pode ser
recebida após um longo período aleatório de tempo.
• Oscilação do relógio – mais uma vez a oscilação do relógio é aleatória.
25
demora. Por exemplo, para transferir um ficheiro usando FTP. Às vezes uma
mensagem de e-mail pode demorar dias para chegar ao destino.
Mas alguns problemas de desenho podem ser resolvidos mesmo com estas suposições.
Por exemplo, embora a Web nem sempre pode providenciar uma determinada
resposta num certo intervalo de tempo, os navegadores (browsers) foram desenhados
para permitir aos usuários fazerem outras tarefas enquanto esperam pela resposta.
Qualquer solução válida para um sistema distribuído assíncrono também é válida para
o síncrono.
Em muitas casos nos interessa saber quando um evento (envio ou recepção de uma
mensagem) de um processo ocorreu antes, depois ou dum forma concorrente com um
outro evento de um outro processo. A execução de eventos pode ser descrita em
termos de eventos e sua ordenação, apesar de falta de precisão de relógios.
Por exemplo: considere a seguintes troca de mensagens do grupo de usuários de e-
mail e utilizadores X, Y e Z na lista de e-mail’s.
1. Utilizador X envia uma mensagem com tema: Meeting;
26
2. Usuários Y e Z respondem, enviando uma mensagem com tema Re:
Meeting ;
R (m1) E (m2)
Y
R (m1) R (m2) E (m3)
Z
R (m3) R (m1) R (m2)
A
T1 T2 T3
Legenda:
• E – Envia
• R – Recebe
• M – Mensagem
• T - Tempo
27
O modelo de falha consiste na definição dos mecanismos no qual as falhas podem
ocorrer, de modo a se compreender o efeito dessas falhas. O modelo de falhas abrange
ainda a indicação rigorosa do comportamento global do sistema na presença dos
diferentes tipos de falhas.
28
3.2.2.1 Falhas por omissão e arbitrárias
Falhas por omissão - dá-se quando um processo ou um canal de comunicação falha a
execução de uma acção que devia executar. Por exemplo uma mensagem que devia
chegar não chegou, processo falha (crash – quer dizer que interrompeu a execução e
as fases subsequentes não serão realizados).
29
3.2.2.2 Mascarar falhas de componentes
Desempenho
Canal A mensagem levou mais tempo do que o previsto
30
Nota: As falhas por omissão e as falhas temporais dizem-se falhas benignas pois são
mais facilmente mascaráveis e não corrompem tão facilmente os outros componentes.
Nas primeiras aulas foi apontada a partilha de recursos como um dos factores
motivadores para Sistemas Distribuídos e foi descrita posteriormente a arquitectura
dos seus sistemas em termos de processos encapsulando objectos e providenciado
acesos a eles através de interacções com outros processo.
A figura a seguir mostra um servidor que possui uma colecção de objectos que podem
ser invocados por usuários. Estes usuários podem executar programas clientes que
enviam requisições ao servidor para realizar operações nos objectos. O servidor
executa a operação especificada em cada requisição e envia a resposta ao cliente.
Resposta
É por isso que se inclui os usuários neste modelo como os beneficiários dos
privilégios de acesso. Isso é feito associando cada requisição e cada resultado à
respectiva autoridade. A referida autoridade é chamada principal. Um principal pode
ser um usuário ou um processo. O servidor é responsável por verificar a identidade
dos principais em cada requisição e verificar se eles detém privilégios suficientes para
realizar a operação pretendida num determinado objecto, recusando se não os tiver. O
cliente pode verificar a identidade do principal do processo servidor para garantir que
o resultado provém de um servidor válido.
32
3.3.3 O inimigo
Cópia de m O inimigo
m’
Processo P Processo Q
m
Este tipo de ataque pode ser feito usando um computador ligado a rede no qual se
pode executar um programa que lê o conteúdo das mensagens da rede que são
enviados a outros computadores da rede ou um programa que gera mensagens para
emitir requisições falsas a serviços dando a entender que provém de usuários
autorizados. O ataque pode advir de um computador reconhecido da rede ou do
computador da rede não autorizado. As ameaças de um potencial inimigo estão
descritas nos pontos abaixo que abordam ameaças a processos, ameaças a canais de
comunicação e negação de serviço.
Um processo que é desenhado para lidar com requisições pode receber mensagens de
qualquer processo num sistema distribuído, e não pode necessariamente determinar a
identidade do emissor. Os protocolos de comunicação tais como Internet Protocol (IP)
que incluem o endereço do computador emissor em cada mensagem, mas não é difícil
para um inimigo gerar uma mensagem com um endereço fictício. A falta de confiança
33
no emissor da mensagem é uma ameaça ao correcto funcionamento a ambos
servidores e clientes, como é descrito abaixo:
• Servidores: dado que o servidor pode receber requisições de quaisquer
clientes, ele não pode determinar a identidade do principal que está associado
a uma invocação. Mesmo que o servidor requeira a identidade do principal em
cada invocação, um inimigo pode gerar uma invocação com uma falsa
identidade. Sem a confiança da identidade do emissor, um servidor não pode
determinar se uma operação pode ser aceite ou rejeitada. Por exemplo, um
servidor de e-mail não poderia saber se um usuário associado a uma invocação
que requisita um e-mail de uma determinada caixa de entrada é permitido a
fezê-lo ou foi uma requisição de um inimigo.
• Clientes: quando um cliente recebe uma resposta de uma invocação a um
servidor, não pode determinar se o resultado provém de um servidor válido ou
de um inimigo, talvez ‘spoofing’ o servidor de e-mail. Deste modo o cliente
pode receber um resultado de um servidor não relacionado com a invocação,
como, por exemplo, uma caixa de entrada falsa ( que não pertence ao dono da
caixa de entrada)
34
Todos esses ataques podem ser evitados usando canais seguros de comunicação, que
são descritos abaixo como e baseados em criptografia e autenticação.
35
Um canal seguro é um canal de comunicação conectando um par de processos, cada
um deles actua em nome do principal, como mostrado na fig. abaixo.
Principal A
Principal B
36
3.3.5.1 Denial of Service
Esta é uma forma de ataque em que o inimigo interfere com as actividades de usuários
autorizados, fazendo invocações excessivas a serviços ou transmissão de mensagens
na rede, resultando na sobrecarga dos recursos físicos (largura de banda, capacidade
do processamento do servidor). Tais ataques são frequentemente realizados com a
intenção de atrasar ou impedir acções de outros usuários. Por exemplo, a operação de
trancar electronicamente uma porta num edifício pode ser desabilitada por um ataque
que sature o controlo electrónico com requisições inválidas.
37
do modelo de ameaça, listando todas as formas de ataque para os quais o sistema está
exposto e avaliação dos riscos e das consequências de cada uma. A eficiência e os
custos das técnicas de segurança necessárias podem ser balanceados contra as
ameaças.
4 Bibliografia
• Tanebaum, André S.; Steen, Marten van. Distributed Systems: principles and
paradigms, 2002
• Coulouris, George et. Al. Distributed Systems: concepts and design 3rd edition,
2001
• Marques, José Alves; Gudes, Paulo. Tecnologia de Sistemas Distribuídos 2ª
edição, FCA, 1998
• Boger, Marko. Java in Distributed Sytems: concurrency, distribution and
persistance; 2001
38