Buscar

Resumo AV1 Arquitetura de Sistemas Distribuídos

Prévia do material em texto

Resumo Arquitetura de Sistemas Distribuídos 
 
Definição de Sistemas Distribuídos Um sistema distribuído é um conjunto de 
computadores independentes que se apresenta a seus usuários como um sistema 
único e coerente. 
 
Um Modelo de Arquitetura para um SD define a forma como os componentes se 
relacionam entre si e como são mapeados em uma rede de computadores. 
Um Sistema Distribuído deve acomodar HW, SOs e redes heterogêneas. 
Modelos Fundamentais: 
• Modelo de Interação 
- Trata da interação entre os processos em um SD. 
- Trata também de questões de desempenho e a dificuldade de se estabelecer limites 
de tempo em SDs. Como para entrega de mensagens, por exemplo. 
• Modelo de Falhas 
- Especificação precisa das falhas que podem ser exibidas por processos e canais de 
comunicação. Define comunicação confiável e processos corretos. 
• Modelo de Segurança 
- Discute as possíveis ameaças a processos e canais de comunicação. Introduz o 
conceito de canal seguro, o qual é seguro contras as ameaças. 
Middleware: É uma camada adicional de software situada entre o nível de aplicação e 
o nível que consiste no sistema operacional. O Middleware tem o papel de interligar 
diferentes aplicações em diferentes sistemas operacionais em diferentes 
computadores. Ou seja, ele oculta da melhor maneira possível a heterogeneidade das 
plataformas das aplicações. Por ser um software de conectividade, consiste de um 
conjunto de serviços disponíveis que permite que múltiplos processos, executando em 
uma ou mais máquinas, interajam através de uma rede. 
 
Groupware: São softwares para edição colaborativa, teleconferência, entre outras 
funções que possibilitam que pessoas dispersas geograficamente possam trabalhar 
juntas. 
 
 
 
Diz-se que uma especificação adequada deve ser completa e neutra. 
• Completude: Significa que tudo o que é necessário para uma implementação foi de 
fato especificado. 
• Neutralidade: Significa que as especificações nunca devem descrever a aparência de 
uma implementação. 
•.Interoperabilidade: Se caracteriza por determinar até que ponto duas 
implementações de sistemas ou componentes de fornecedores distintos devem 
coexistir e trabalhar em conjunto, com base na mera confiança mútua nos serviços de 
cada um, especificados por um padrão comum. 
• Portabilidade: Se caracteriza por permitir que uma aplicação criada para um sistema 
distribuído "A" pode ser executada sem modificações num sistema distribuído distinto 
"B", que implementa as mesmas interfaces de "A". 
•.Políticas e Mecanismos: Se um sistema contém um mecanismo que permite 
armazenar documentos e um usuário tem que seguir uma política de armazenamento 
de documentos, a melhor opção é que o usuário possa implementar sua própria 
política sob a forma de um componente que realize a política por ele desejada. 
• Escalabilidade: São três os critérios para se estabelecer uma. 
1. Quanto ao seu tamanho: Um sistema é escalável em relação ao seu tamanho, 
quando é possível se inserir mais usuários e recursos ao sistema em si. 
 
2. Quanto ao local: Um sistema é escalável do ponto de vista geográfico, quando os 
usuários e recursos podem estar um longe dos outros. 
 
3. Quanto a sua administração: Um sistema é escalável do ponto de vista de sua 
administração quando ele pode ser facilmente gerenciado, mesmo que abranja muitas 
organizações administrativas distintas. 
As ciladas da escalabilidade, premissas falsas adotadas ao se desenvolver pela 
primeira vez uma aplicação distribuída: 
1. Rede é confiável. 
2. Rede é segura. 
3. Rede é homogênea. 
4. Topologia constante. 
5. Latência é zero. 
6. Largura de banda é infinita. 
7. Custo de Transporte é zero. 
8. Existe somente um administrador. 
Problemas de Escalabilidade: 
Tamanho: Ao inserirmos continuamente mais usuários tendemos a chegar a um ponto 
onde o servidor centralizado atinja seu limite operacional, transformando-se no 
gargalo do sistema. 
Segurança: Um servidor destinado apenas ao armazenamento de informações sigilosas 
ou confidenciais. A implementação obrigatória terá que ser feita num único servidor 
que deve estar numa sala separada, de alta segurança, separado de outras partes do 
sistema. 
 
Técnicas de Escalabilidade: 
1. Ocultar latências de comunicação: Essencialmente a aplicação requisitante deve ser 
escrita usando comunicação assíncrona para evitar bloquear processos à espera de 
receber respostas. Quando a resposta retorna, a aplicação é interrompida e um 
manipulador especial é chamado para concluir a requisição emitida anteriormente. 
 
2. Distribuição: A ideia é distribuir entre vários computadores os serviços e dados. 
Decompondo os componentes em partes menores, que por sua vez são distribuídas 
por todo o sistema distribuído. 
 
3. Replicação: Aumenta a disponibilidade dos serviços e melhora o balanceamento de 
carga no sistema, resultando na melhoria do desempenho. 
 
Chamada de Procedimento Remoto (RPC): Permite a processos chamarem 
procedimentos localizados em outras máquinas. 
Primeiros Problemas... 
1. Arquiteturas de duas máquinas podem ser diferentes. 
2. Espaço de endereçamento diverso. 
3. Passagem de parâmetros. 
4. O que fazer quando uma das máquinas falha. 
 
Apêndices (Stubs): 
- Transparência conseguida com o uso de stubs (apêndices). 
- Stub do Cliente: Responsável por empacotar os parâmetros em uma mensagem e 
enviar a mensagem para a máquina do servidor. Quando resposta chega, resultado é 
copiado para cliente, e controle volta a ele. 
 -.Stub do Servidor: Responsável por desempacotar parâmetros, chamar o 
procedimento do servidor e retornar resposta para máquina do cliente. 
RPC em etapas: 
1. Procedimento do cliente chama "stub" cliente de modo usual. 
2. "Stub" do cliente constrói uma mensagem e chama o Sistema Operacional. 
3. Sistema Operacional envia mensagem para SO remoto. 
4. Sistema Operacional remoto repassa mensagem para "stub" do servidor. 
5. "Stub" do servidor desempacota parâmetros e chama procedimento servidor. 
6. Procedimento servidor executa e retorna o resultado. 
7. "Stub" do servidor empacota resultado em uma mensagem e chama SO. 
8. Sistema Operacional remoto envia mensagem para SO da máquina cliente. 
9. Sistema Operacional do cliente passa mensagem para "stub" cliente. 
10. "Stub" cliente desempacota resultado, repassando-o para o cliente. 
 
 
 
IDL - Linguagem de Programação de Interface 
• Interface consiste em um conjunto de procedimentos que podem ser chamados por 
um cliente e que são implementados por um servidor. 
•.Utilização de interface simplifica consideravelmente aplicações cliente-servidor 
baseadas em RPCs. 
• Gerar completamente stubs de cliente e servidor - todos os sistemas de middleware 
baseados em RPC oferecem uma IDL para suportar desenvolvimento de aplicação. 
•.Permite a um cliente o acesso a um serviço remoto por meio de uma simples 
chamada a um procedimento local. 
• Possibilita que programas clientes sejam escritos de modo simples. 
• Pode localizar automaticamente o servidor correto. 
• Estabelece a comunicação entre software cliente e software servidor. 
TI Verde 
Com a difusão e o amadurecimento do conceito de TI Verde, surgem melhores práticas 
com foco na forma como a TI é executada nas empresas, incluindo localidades, 
processos e estruturas. 
Exemplos de melhores práticas: 
1) E-Invoicing e E-Billing, onde transações entre empresas são feitas eletronicamente, 
como faturamento e pagamento, não utilizando de nenhum documento impresso ou 
deslocamento entre as partes envolvidas.2) Facilidades via Web, reduzindo deslocamentos dos clientes, como lojas virtuais, 
atendimento por telefone e vídeo conferência. 
3) Facilidades via Intranet, reduzindo o uso de papel, o que aumenta a eficiência 
organizacional dos processos burocráticos, com maior controle e organização de 
informações. 
4) Melhor logística (empacotamento, transporte, etc.) – reduzir o nível de 
empacotamento e organizar as entregas em lotes e não em ordens individuais, sempre 
que possível. 
5) Utilização de softwares de gestão centralizados, com banco de dados único e 
informação acessível a todos com facilidade, velocidade e segurança. 
6) Sustentabilidade. 
 
Classificação de Flynn 
 
Tipos de Organização - Em sistemas distribuídos é possível organizar o hardware de 
diferentes formas, principalmente no aspecto de seus componentes e na forma como 
eles se comunicam, a seguir algumas possibilidades de organização enfatizando a 
conexão dos componentes de um sistema multiprocessado. 
SI = Single Instruction. 
SD = Single Data. 
MI = Multiple Instruction. 
MD = Multiple Data. 
SISD (Single Instruction, Single Data): Um único fluxo de instruções atua sobre um 
único fluxo de dados (Exemplo: Máquina de Von Neumann Convencional). 
MISD (Multiple Instruction, Single Data): Múltiplos fluxos de instruções atuam sobre 
um único fluxo de dados. (Exemplo: Pipelines) 
 SIMD (Single Instruction, Multiple Data): Uma única instrução é executada ao mesmo 
tempo sobre múltiplos dados. (Exemplo: Computadores Vetoriais). 
MIMD (Multiple Instruction, Multiple Data): Cada unidade de controle recebe um 
fluxo de instruções próprio e repassa-o para sua unidade processadora. 
 
 
 
Comunicação-Interprocessos (IPC) 
Para que 2 processos diferentes se comuniquem é necessário que: 
• Concordem em se comunicar; 
• O S.O ofereça condições para isso o IPC; 
•.IPC pode ser realizado entre processos na mesma máquina ou máquinas diferentes. 
Application Program Interface (API) 
• É uma Interface com os protocolos de comunicação disponível para o programador. 
Duas APIs mais difundidas (em “C”) para UNIX são: 
- Berkeley Sockets; 
- System V Transport Layer Interface (TLI). 
Socket 
• Interface para comunicação entre processos. 
•Em sistema único ou em sistemas diferentes. 
•Domínio UNIX ou Internet. 
•Protocolos padrão Internet => IP / TCP / UDP. 
Interface Socket Descrição Um domínio especifica a família de protocolos como: 
•UNIX (IPC na mesma máquina); 
•Internet (IPC em máquinas diferentes). 
•No domínio "internet" o endereço é composto pelo endereço da máquina e um 
número de porta. Logo todo socket pertence a um domínio, é associado a um número 
de porta e adota um tipo de protocolo para comunicação. 
 
Combinação do Tipo de Comunicação e Protocolo 
 
Tipos de Comunicação 
DATAGRAMA 
•Sem conexão; 
•Mensagens são endereçadas individualmente; 
•Não há garantia de recebimento de mensagens; 
•Um pacote é reenviado quando não chega a resposta em determinado tempo; 
•Utiliza o protocolo UDP (User Datagram Protocol); 
•Protocolo IP (Internet Protocol) entrega os pacotes UDP. 
 SOCKET STREAM 
•Conexão; 
•Comunicação confiável e livre de erros; 
•Retransmissão da mensagem com erro; 
•Mensagem de erro quando houver tentativa de envio de mensagem após o 
fechamento da conexão; 
•Utiliza o protocolo TCP (Transmission Control Protocol); •Protocolo IP (Internet 
Protocol) entrega os pacotes TCP. 
SYSTEM CALLS 
Objetivo: Fornecer uma interação de um programa de aplicação com o S.O. 
• Socket ( ) - criação de um Socket. 
• Bind ( ) - associa um Socket a um endereço local (end. local , porta local). 
• Associação Completa (Protocolo, end. local, porta local, end. remoto, porta remota). 
• Write ( ) - TX de dados com Sockets conectados. 
• Sendto ( ) - TX de dados com Sockets não conectados. 
• Read ( ) - RX de dados com Sockets conectados. 
• Recvfrom ( ) - Rx de dados com Sockets não conectados. 
• Listen ( ) - indica que o Servidor está pronto para receber conexão. 
• Accept ( ) - utilizada pelo Servidor para esperar uma conexão (bloqueia). 
• Connect ( ) - usada pelo Cliente para iniciar a conexão ( não requer bind ( )). 
• Gethostbyname ( ) - utiliza como entrada o nome Internet do host e retorna uma 
estrutura hostent. 
 
• Select ( ) - Evita que haja o bloqueio quando um Accept for dado e não existirem 
pedidos de conexão pendentes. 
- Retorna o número do descritor selecionado (Socket) para leitura ou escrita. 
- Através desta System é possível ao Servidor realizar a programação concorrente e 
tratar vários Processos. 
 
 
As camadas de hardware/software de mais baixo nível são frequentemente 
referenciadas como Plataforma para Sistemas Distribuídos e Aplicações. 
 • Estas camadas de baixo nível fornecem serviços para as camadas superiores, que são 
implementadas independentemente em cada aplicação. 
• Principais exemplos: 
– Intel x86/Windows 
– Intel x86/Linux 
– Intel x86/Solaris 
– SPARC/SunOS 
– PowerPC/MacOS 
Modelo Cliente-Servidor 
• Servidor (Passivo): 
– Oferece e executa serviços para os Clientes; 
– Responde aos pedidos dos clientes (processamento específico). 
 
•Cliente (Ativo): 
 – Submete pedidos ao Servidor; 
 – Implementa a interface com o usuário. 
 • Características: 
– Interação é sempre iniciada pelo Cliente. 
• Um Servidor pode ser Cliente de outro Servidor. 
– Um servidor Web é frequentemente cliente de um servidor de arquivos que gerencia 
os arquivos nos quais páginas Web são armazenadas. Servidores Web e a maioria dos 
serviços Internet são clientes do serviço DNS (responsável pela tradução de nomes de 
domínio em endereços de rede). 
•Problemas: 
– Escalabilidade; 
– Tolerância a Falhas. 
Modelo de Processos Pares (P2P) 
•Processos são similares, e desempenham o mesmo papel: Possuem processos Cliente 
e Servidor. Interagem de forma cooperativa para realizar atividades distribuídas. 
• Vantagens: 
– Escalabilidade; 
– Tolerância a falhas. 
• Desvantagem: 
– Dificuldade de gerenciamento. 
 
 
Modelo de Interação 
• Dois fatores que afetam a interação de processos em um sistema distribuído: 
1) Desempenho na Comunicação: A comunicação em nosso modelo se realiza de 
diferentes formas, por exemplo pela implementação de fluxos, ou pela passagem de 
mensagens através da rede. 
• Na comunicação através da rede temos preocupações como: 
– Latência - A diferença de tempo entre o início de uma transmissão em um processo 
e o início da recepção da mensagem em outro processo. 
 
– Largura de banda - Quantidade de informação que passa por unidade de tempo. 
 
– Jitter - Variação de tempo para entregar uma serie de mensagens (relevante em 
dados multimídia). 
2) Impossibilidade de manter sistema único de relógio: 
– Cada computador em um sistema distribuído tem o seu relógio próprio. 
– O controle dos eventos nos diferentes processos pode ser feito com tempo associado 
ao evento. 
– Nem sempre os relógios dos diferentes sistemas marcam um tempo único. 
– Mesmo que todos os computadores acertassem o seu relógio com base em um 
relógio padrão, com o decorrer do tempo pequenas variações podem ocorrer, pois não 
existe uma precisão. 
– Nos sistemas distribuídos é difícil de determinar limites de tempo para a execução de 
um processo, entrega da mensagem ou diferença ocorrida no relógio do computador. 
• Duas posições extremas podem ser adotadas para este modelo: 
– Sistemas Distribuídos Síncronos: Todasas operações, processamento e transmissão 
de mensagens tem limites de tempos conhecidos e são controladas por tempo. 
Podemos detectar falhas devido a intervalos de tempo estabelecidos para 
determinadas operações. 
 – Sistemas Distribuídos Assíncronos: Alguns sistemas distribuídos, como a internet, 
não tem limites bem definidos de tempo para velocidade de execução e tempos de 
transmissão das mensagens. 
 
Modelo de Falhas 
• Em um sistema distribuído, tanto os processos como os canais de comunicação 
podem falhar. 
• O modelo de falhas define as formas como podem ocorrer as falhas, de maneira a 
entendermos os efeitos destas. 
Podemos ter: 
– Falhas de omissão: São Falhas nos casos onde um processo ou canal de comunicação 
falha na execução da ação que deveria fazer. 
– Falhas arbitrárias: É empregado para descrever a pior falha de semântica, na qual 
qualquer tipo de erro pode ocorrer. 
Exemplo: Um processo pode colocar valores errados em seus itens de dados, ou 
podem retornar valores errados em resposta a uma chamada. 
– Falhas de tempo: são aplicáveis a sistemas distribuídos síncronos, onde limites de 
tempo são estabelecidos para tempo de execução do processo, tempo de entrega da 
mensagem e taxa de erro do relógio é conhecida. 
 
Modelo de Segurança 
• A segurança de um sistema distribuído pode ser alcançada através da segurança nos 
processos e canais de comunicação usados para sua interação, como também 
protegendo os objetos contra acesso não autorizado. 
• Quanto aos canais de comunicação, devemos nos certificar que são seguros à 
ataques externos. 
– Tipos de ataques: Falsificação de mensagens, ataques DoS e DDoS, etc. 
– Como proteger: Política de segurança, criptografia, autenticação de acesso, 
assinatura digital, educação, etc. 
• Recursos ameaçados: processos, canais de comunicação, e sobrecarga de uso do 
recurso.

Continue navegando