Você está na página 1de 39

Conceitos Fundamentais sobre Sistemas Distribudos

Professor: Edmilson D. Verona Disciplina: Programao Distribuda

Todo Sistema Distribudo deve ter:


Transparncia Flexibilidade Confiabilidade Disponibilidade Tolerncia a Falhas Escalabilidade

Transparncia
De localizao: De migrao:
Os usurios no precisam saber onde os recursos esto localizados. Os recursos podem se mover sem alterar seus nomes. Pode ter mais de uma cpia dos recursos disponveis. Mltiplos usurios podem compartilhar um recurso automaticamente. Atividades podem ocorrer em paralelo sem que o usurio saiba. Acessos a recursos devem ser idnticos para objetos locais e remotos.

De replicao:

De concorrncia: De paralelismo: De acesso:

Flexibilidade
Sistemas distribudos so mais flexveis do que um sistema centralizado. Permite mudanas no futuro com mais facilidade:
Nvel de segurana implantado. Redundncias criadas.

Manuteno. Modificaes. Aumento de Desempenho.

Confiabilidade
isponibilidade: D Tolerncia a Falhas: Respostas certas:
Relao ao tempo que o sistema fica disponvel. Sistemas distribudos devem ter a capacidade de mascarar falhas para os usurios do sistema. possvel confiar nas respostas recebidas? Sistemas Distribudos podem ser compostos de diversas partes de fornecedores diferentes. Garantir que as partes realmente so quem dizem ser. Garantir que a requisio pode ser executada para o requisitante.

Autenticao:
Autorizao:

Segurana
Necessidade de proteger os recursos e informao gerida num sistema distribudo. Diversos aspectos envolvidos:
Autenticao dos utilizadores. Autenticao dos servidores.

Preveno de ataques do tipo negao de servio (denial of service attacks). Criptografia


Utilizada para fornecer a segurana entre as mensagens de computadores.

Segurana na presena de cdigo mvel.

Disponibilidade
Os servios do sistema devem se manter funcionando o maior tempo possvel. As falhas so inevitveis. Tcnicas que garantem a disponibilidade do servio, mesmo na presena de falhas.
Mecanismos de tolerncia falhas. Redundncia.
Componentes chaves de hardware e software devem ser replicados, de modo que se um deles falhar, os outros estaro aptos a tomar conta da tarefa.

Tratamento das falhas


Num sistema distribudos, as falhas podem ocorrer de forma independente. Alguns componentes continuam a funcionar enquanto outros falham. Falha de um componente no deve levar o sistema a comportamentos incorretos. Um sistema tolerante a falha deve continuar a funcionar de acordo com o esperado mesmo quando algum dos componentes falhar.
Caching. Replicao.

Modelo de Falhas
No Desenvolvimento:
Preveno de Falhas:
Metodologia de desenvolvimento. Vericao.

Eliminao de Falhas:
Testes. Vericao.

Em Operao:
Tolerncia a Falhas
Mecanismos (software e/ou hardware) que permitem deteco e tratamento de falhas.

Tipos de falhas normalmente consideradas:


Falha e pra (fail-stop)
Componente pra totalmente ao ocorrer uma falha.

Omisso
Componente causa perda de algumas mensagens.

Performance
Componente faz com que mensagem chegue depois (ou antes) do esperado.

Maliciosa
Tudo pode acontecer.

Exerccios
Quais as caractersticas de um sistema distribudo aberto? O que um sistema escalvel?

Sistema Distribudo Aberto


Oferece servios de acordo com as regras que denem o formato, contedo e signicado das mensagens. Interoperabilidade
Especicados atravs de interfaces.

Portabilidade

Caracteriza at que ponto duas implementaes de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto, especicados por um padro comum.
Caracteriza at que ponto uma aplicao desenvolvida para um sistema distribudo A pode ser executada, sem modicao, em um sistema B; Dene a capacidade de se adicionar novos componentes ou substituir componentes existentes sem afetar os que continuam no mesmo lugar.

Extensibilidade

Escalabilidade
Capacidade de se adaptar conforme o aumento da demanda. Um sistema escalvel permanece eficiente quando h um aumento significativo no nmero de recursos e no nmero de usurios. Evitar perda de desempenho computacional. Evitar gargalos. Escalabilidade em trs nveis:
Relao ao tamanho Relao distncia geogrfica
Podem-se acrescentar mais usurios e recursos ao sistema. Acesso a distncias maiores, distribuio geogrfica dos recursos pela rede. Mesmo com incluso muitas organizaes independentes ainda continua fcil a administrao.

Relao facilidade de administrao

Sistemas baseados em redes ad-hoc


Redes ad-hoc so ligaes que se estabelecem de forma espontnea entre vrios dispositivos mveis. Permitir a vrios utilizadores trocarem informao quando se encontram. Todos os dispositivos da rede funcionam como se fossem um roteador, encaminhando comunitariamente informaes que vm de dispositivos vizinhos. Exemplo: No h topologia predeterminada. No h controle centralizado. Auto-organizao.
Carros podem comunicar entre si para propagar informao sobre as condies das estradas.

Redes ad-hoc

RFIDs (Radio frequency identification)


Dispositivo que pode guardar informao e emiti-la quando necessrio. FIDs passivos R
Sem alimentao prpria: o leitor produz uma ao (campo magntico) sobre o RFID de forma a que este produza a energia e responda.

RFIDs ativos
Incluem alimentao prpria e podem emitir sinais ativamente.

RFIDs (Radio frequency identification)


Utilizao de RFIDs
Mdia escala
Identificao de animais domsticos. VeriChip Cartes de identificao. Distribuio. Logstica.

implantado nas pessoas para tratamento mdico. Localizador.

Grande escala

Identificao de produtos (substituindo cdigo de barras). Permite identificao individual dos produto.

RFIDs

Redes de sensores
Variao das redes Ad hoc. Sistemas distribudos compostos por um nmero elevado de pequenos sistemas computacionais (ns) com:
Fonte de alimentao prpria (em geral, uma bateria). Pequeno microprocessador. Emissor/receptor de rdio. Sensor. Ns tm preo reduzido. Quando a bateria acaba, o n deixa de funcionar.

Alguns desafios

Organizao de nmero elevado de sensores. Minimizar consumo energtico. Segurana.

Redes de sensores
Aplicaes:
Monitorar o espao e coisas. Valores relacionados com o ambiente (temperatura, humidade, etc.). Sistemas de vigilncias. Avies.

Monitorar interao entre as coisas e o espao. Interaes entre animais. Monitorar eventos naturais.

Redes de Sensores

Sistemas Fortemente Acoplados


Forte dependncia de recursos. Os processadores compartilham uma nica m emria principal e so controlados por um nico sistema operacional.
Ex: Elementos de processamento compartilham o mesmo conjunto de circuitos de memria.

Sistemas Fracamente Acoplados


Fraca dependncia de recursos. Os mdulos de hardware/software so fundament almente independentes uns dos outros. Um grupo de computadores pessoais ligados a uma rede local tendo:
Seus prprios processadores. Suas prprias memrias. Seus prprios discos rgidos. Seus prprios Sistemas Operacionais.

Compartilham recursos tais como uma impressora o u uma base de dados.


Ex: Clusters

Concorrncia
Uma caracterstica padro de um SD, em que os processos disputam pelos recursos compartilhados. Garantir que processos operem corretamente em ambientes concorrentes. Trabalha sobre a possibilidade que vrios clientes possam acessar um recurso compartilhado ao mesmo tempo.
A presena de mltiplos usurios uma fonte de pedidos concorrentes para seus recursos. Em ambiente concorrente, cada recurso deve ser projetado para manter sempre a consistncia. Atividades separadas de usurios. Independncia de recursos. Localizao de processos servidores em computadores distintos.

Mais de um processo em execuo a cada instante:

Acesso concorrente a recursos compartilhados requer sincronizao.

Mtodo de comunicao entre processos (IPC)


Memria compartilhada. Mensagem ponto a ponto.
Bloqueante (sncrona) No bloqueante (assncrona)

Execuo remota de chamada de procedimento (RPC)

Comunicao Sncrona
Componentes progridem em passos simultneos, em rounds sncronos.
Mais simples de descrever. Programar. Raciocinar.

possvel que sistemas reais simulem um sistema sncrono.


Maioria das vezes isto impossvel ou ineciente.

Comunicao Assncrona
Componentes progridem em passos independentes, em ordem arbitrria, com velocidade arbitrria.
Mais difcil de programar. Algoritmos so mais gerais e portveis.

As vezes no tem poder suciente para resolver problemas de maneira eciente (ou mesmo para resolver o problema).

Comunicao parcialmente sncrona


Assumimos algumas restries na ordem relativa dos eventos. No to rgida como no modelo sncrono. Mais realista. Mais difcil de programar e raciocinar. Algoritmos so ecientes, mas no se comportam de maneira correta se consideraes sobre o tempo forem violadas.

Desempenho
O problema da performance muito influenciada pela comunicao. Sistemas Distribudos devem melhorar o desempenho em relao a sistemas centralizados. Concentrarmos a ateno no conjunto de mquinas que efetivamente executa certos processamentos de forma isolada do processamento dos usurios. Os usurios esperam ter suas respostas o mais rpido possvel como se o sistema estivesse executando localmente, em suas prprias mquinas. Monitorar os recursos fsicos e de software que compe o sistema distribudo a fim de garantir nveis de servio ao usurio. 4 Mtricas de desempenho:
Tempo de resposta. Throughput (tarefas / tempo). Utilizao do sistema. Quantidade consumida da capacidade da rede.

Mtricas para anlise de algoritmos distribudo


Tempo necessrio para completar a execuo das tarefas. Nmero de bits transmitidos pela rede. Nmero de mensagens transmitidas. Tamanho das mensagens transmitidas. Espao de memria necessrio em cada n. Justia
Todo participante deve ter oportunidade de executar sua tarefa. Falta de justia causa starvation. Podemos distinguir graus de justia
Todos tem a mesma oportunidade? Participante consegue eventualmente executar tarefa (eventualmente == em algum momento no futuro)?

Middleware
Camada de software que fornece uma abstrao de programao Os protocolos de comunicao mascaram a diferena entre as redes e o middleware pode cuidas das outras diferenas. Software que providencia um modelo de programao por blocos de processos pela passagem de mensagem. Alguns middleware permitem que os processos sejam implementados em diferentes linguagem de programao.
CORBA.

Middleware

Exerccio
O que computao Ubqua? Qual o conceito?

Computao ubqua
O termo computao ubqua foi primeiramente sugerido por Mark Weiser em 1988. O conceito de tornar os computadores onipresentes e invisveis. Integrar a informtica com as aes e comportamentos naturais das pessoas. Sistemas inteligentes que estariam conectados ou procurando conexo o tempo todo. Tirar o computador do caminho entre o usurio e seu trabalho, sua rotina. Utilizar computadores de forma natural.

Computao pervasiva
Conceito define que os meios de computao estaro distribudos no ambiente de trabalho dos usurios de forma perceptvel ou imperceptvel. Computador estaria distribudo no ambiente, e no seria apenas uma mquina em cima da mesa. Detectar e extrair dados e variaes do ambiente, gerando automaticamente modelos computacionais controlando, configurando e ajustando aplicaes conforme as necessidades dos usurios e dos demais dispositivos. Interagir automaticamente entre eles construindo um contexto inteligente para sua melhor utilizao.

Integrao com Sistemas Legados


Integrao necessria pois:
Empresas no substituem todos os seus sistemas de uma vez s. Novos sistemas muitas vezes precisam interagir com sistemas legados. Sistemas de diferentes empresas precisam ser integrados quando estas passam a trabalhar juntas. Processos de aquisio e juno de empresas exigem a integrao de seus sistemas.

Integrao com Sistemas Legados


Ocorrem dificuldades ao integrar
Sistemas escritos em linguagens diferentes e rodando em plataformas diferentes.

Tecnologias de Integrao de Sistemas:


CORBA:
Permite a integrao de software desenvolvido em diferentes linguagens e plataformas.

Web Services: integram software utilizando padres da Web, como XML e HTTP.

Integrao com Sistemas Legados


ODBC (Open DataBase Connectivity)
API usada por aplicaes cliente para contatar servidores de banco de dados. O SGBD deve fornecer um driver ODBC; atravs das rotinas da API. O cliente envia comandos SQL ao servidor, que os executa e retorna resultado.

Integrao de sistemas com a arquitetura Java


JDBC: interconexo com bancos de dados. Conectores Java: integrao com outros sistemas.

Discusso
Facilidade de desenvolvimento? Desempenho? Transparncia? Escalabilidade? Flexibilidade?