Conceitos Fundamentais de Sistemas Distribuídos
Classificado em Computação
Escrito em em
português com um tamanho de 10,29 KB
Computadores interligados via rede se comunicam e coordenam suas ações apenas passando mensagens. Uma coleção de computadores independentes que, para o usuário, parecem um único computador.
- Coleção de processadores fracamente acoplados, interconectados por uma rede de comunicação.
- Não compartilham memória; cada processador tem sua própria memória local.
- Não compartilham clock.
- Cada processador enxerga que seus recursos são locais e que os demais processadores e seus respectivos recursos são remotos.
- Os processadores podem variar em tamanho e função.
Os processadores são designados por diferentes nomes, como: Sites (Localização), nós, computadores, máquinas, host (Sistema dentro de um site), servidor (host que possui recurso que outro host gostaria de usar).
O objetivo de um sistema distribuído é fornecer um ambiente eficiente e conveniente para o compartilhamento de recursos.
Vantagens dos Sistemas Distribuídos
As vantagens incluem:
- Compartilhamento de arquivos em sites remotos.
- Processamento de informações em um banco de dados distribuído.
- Impressão de arquivos em locais remotos.
- Uso de hardware especializado remoto.
- Usuários de um site podem usar recursos de outros sites.
Velocidade de Computação
Compartilhamento de Carga
Economia
Confiabilidade
- Disponibilidade.
- Segurança.
Crescimento Incremental
- Escalabilidade através da inclusão de novos equipamentos.
- O desempenho de um sistema não deve ser prejudicado à medida que o número de nós aumenta.
Comunicação
- Troca de informações entre os usuários de diferentes sites conectados uns aos outros pela rede.
- Em um baixo nível, mensagens são trocadas entre os sistemas.
- Transferências de arquivos, login, e-mail, navegação WWW, chamadas RPC (Chamada de Procedimento Remoto).
Transparência de Concorrência
- Usuários não devem notar que existem outros usuários no sistema.
- O sistema deve garantir a concorrência no acesso ao mesmo recurso.
Transparência de Paralelismo
- O próprio sistema operacional deve decidir que recursos alocar a uma aplicação e que os critérios de otimização sejam atendidos (Balanceamento de carga, tempo de resposta, etc.).
Consequência
As vantagens dos SD resultaram em uma tendência em toda a indústria em direção ao DOWNSIZING:
- Muitas empresas substituindo seus MAINFRAMES por redes de estações de trabalho ou computadores pessoais.
- Mais retorno do investimento (Custo-benefício).
- Mais flexibilidade na localização de recursos e expansão das instalações.
- Melhores interfaces para o usuário.
- Manutenção mais fácil.
Comparação de Sistemas Operacionais
Sistemas Operacionais Centralizados
- Sistema com um computador e o usuário acessa os recursos locais.
- Recursos centralizados.
- Arquiteturas mono ou multiprocessadas.
- A comunicação ocorre através de memória compartilhada.
Objetivos
- Virtualizar recursos de hardware.
- Gerenciar uso dos recursos locais.
- Sincronizar atividades.
Sistemas Operacionais de Rede
- Mais simples de implementar.
- Mais difícil para os usuários acessarem e utilizarem os recursos.
- Cada máquina possui alto grau de autonomia.
- A comunicação ocorre através de arquivos compartilhados e protocolos de transporte.
- Usuários precisam saber onde estão os recursos.
- Fornece um ambiente que os usuários podem acessar recursos remotos.
- Fazer login em máquina remota.
- Transferir dados da máquina remota para sua própria máquina (Transferência de arquivos remotos).
Sistemas Operacionais Distribuídos
- Mais complexo de implementar.
- Recursos disponíveis de forma transparente.
- A comunicação ocorre através de troca de mensagens.
- Todas as máquinas executam o mesmo sistema operacional.
- Mais fácil para os usuários acessarem e utilizarem os recursos.
- Chamada de procedimento remoto (RPC).
- Envio de mensagens.
- Migração dos dados ou processos para outro site é gerenciada pelo SD Distribuído.
Migração de Dados
Migração de Computação
(Às vezes pode ser mais eficiente transferir a computação em vez dos dados).
Migração de Processos
É uma extensão lógica da migração de computação. Pode ser vantajoso executar o processo inteiro ou parte dele em sites diferentes por vários motivos:
- Balanceamento de carga.
- Aumento da velocidade computação.
- Preferência de hardware.
- Preferência de software.
- Acesso a dados.
Objetivos
- Construção de um ambiente computacional virtual.
- Localização dos recursos e processamento é abstraída.
- Mecanismos transparentes de distribuição, replicação e tolerância a falhas.
Web (Muitos aspectos de um ambiente de computação distribuído)
- Migração de dados (Cliente WEB acessa dados em um Servidor WEB).
- Migração de computação (Cliente WEB pode disparar uma operação de banco de dados em um servidor WEB).
- Migração de processos (Applets Java são enviados de um servidor WEB para um cliente WEB, onde são executados).
Middleware
Camada de serviço de software e hardware.
- Biblioteca que resolve muitos problemas corriqueiros durante o desenvolvimento de um sistema.
- Camada do software cujo objetivo é mascarar a heterogeneidade e fornecer um modelo de programação conveniente para os programadores (Ex: CORBA, RMI Java, DCOM, .NET, serviços Web, etc.).
- Dependabilidade = Correção, confiabilidade e segurança (garantia do serviço na execução da tarefa).
Arquitetura Cliente-Servidor
Podemos ter alguns problemas como:
- O cliente envia a solicitação, fica aguardando, mas o servidor não recebeu a requisição.
- O cliente envia a solicitação, servidor recebe e executa, mas o tempo de execução é maior do que o time-out.
- Cliente envia a solicitação, servidor executa e envia a reposta, mas o cliente não recebe.
Modelos Fundamentais
Todos os modelos de arquitetura apresentam propriedades fundamentais idênticas, são elas:
- Interação.
- Falha.
- Segurança.
Modelo de Falhas
Tanto os processos como os canais de comunicação podem falhar. Tipos de falha:
- Falha por omissão.
- Falhas arbitrárias.
- Falhas de sincronização.
RPC (Remote Procedure Call)
O RPC é uma extensão do modelo padrão em programação estruturada. Essa extensão permite que um processo invoque um procedimento de outro processo, estando este último na mesma máquina ou em máquinas diferentes conectadas por meio de uma rede.
Características
- O cliente não precisa saber onde está rodando o servidor.
- O cliente que chama um procedimento não precisa saber onde está rodando o servidor.
- O RPC utiliza o protocolo de requisição-resposta e pode usar o TCP ou o UDP.
- Pode-se executar o servidor e o cliente em SOs diferentes se tivermos uma mesma implementação de RPC.
Programação de Aplicações em Rede usando Sockets
API (Application Programming Interface) Sockets
- Permite aos programas de aplicação comunicar-se através da internet.
- Dois processos se comunicam.
- Define a interface entre a camada de aplicação e de transporte.
- Socket = API da Internet.
- Dois processos se comunicam enviando dados para o socket e lendo dados do socket.
- O processo identifica o outro processo com o qual ele quer se comunicar através do ENDEREÇO IP e do NÚMERO DA PORTA.
Aplicação: Processos Distribuídos Comunicantes
- Rodam nos hospedeiros da rede no “espaço do usuário“.
- Trocam mensagens para realização de aplicação (e-mail, FTP, Web, etc.).
Protocolos de Aplicação
- Fazem parte das aplicações.
- Definem as mensagens trocadas e as ações tomadas.
- Usam serviços de comunicação das camadas inferiores (TCP e UDP).
Processo
- Programa executando num hospedeiro.
- Dentro do mesmo hospedeiro (comunicação interprocesso).
- Processos executando em diferentes hospedeiros se comunicam através de um PROTOCOLO DA CAMADA DE APLICAÇÃO.
Comunicação Assíncrona
Cada bloco de dados inclui um bloco de informação de controle (chamado flag). Essa informação é necessária para que se saiba exatamente onde começa, onde acaba o bloco de dados e qual a sua posição na sequência de informação transmitida.
Comunicação Síncrona
Cada bloco de informação é transmitido e recebido num instante de tempo bem definido e conhecido pelo transmissor e receptor, ou seja, estes têm que estar sincronizados. Para manter esta sincronia, é transmitido periodicamente um bloco de informação que ajuda a manter emissor e o receptor sincronizados.
Diferenças entre Sistemas Assíncronos e Síncronos
Assíncronos, não existem limites para:
- Velocidade de execução de um processo.
- Delay (atraso) na transmissão de mensagens.
- Clock drift rates – o atraso é arbitrário.
Sistema Distribuído Síncrono, existem limites para:
- Tempo máximo e mínimo de cada passo de um processo.
- Cada mensagem transmitida é recebida dentro de um limite de tempo.
- Cada processo tem um relógio local cujo drift em relação ao tempo real.