Sistemas Distribuídos: Conceitos e Arquiteturas
Classificado em Computação
Escrito em em português com um tamanho de 11,71 KB.
Tolerância a Falhas e Alta Disponibilidade
A falha, se propagada, vai gerar um erro e esse erro pode gerar um defeito se também for propagado. Tolerância a falha é não propagar a falha, evitando que ela cause um erro. Por exemplo, se um programa que agenda requisições tem uma falha, ele não deve propagá-la para quem fez a requisição. Assim, quem solicita os serviços não sabe que houve uma falha, isso é a transparência de falhas. Já a alta disponibilidade é um sistema feito para impedir a perda de um serviço, reduzindo ou gerenciando falhas. A disponibilidade é caracterizada pela probabilidade de um sistema estar acessível em determinado período de tempo.
Multicomputadores vs. Multiprocessadores
a) Diferenças Básicas
- Multicomputadores:
- Cada processador tem memória local.
- Comunicação feita pela troca de mensagens.
- Vantagens:
- Fácil escalabilidade do ambiente.
- Fácil inserir e configurar uma nova máquina no sistema.
- A falha em uma máquina não afeta o processamento como um todo, apenas a aplicação que nela estava rodando.
- Multiprocessadores:
- Vários processadores compartilhando uma ou mais memórias.
- Comunicação feita através de variáveis de memória.
- Limitados à quantidade de processadores que a placa usada suporta.
- A falha em um dos processadores afeta a máquina como um todo, parando todos os processos, mesmo que estes sejam independentes.
- Facilidade para dividir tarefas.
b) Memória Compartilhada vs. Memória Distribuída
Os computadores com memória compartilhada se distinguem dos demais por apresentarem vários processadores acessando fisicamente uma única memória, que é comum a todos. Por sua vez, os computadores com memória distribuída apresentam uma configuração na qual cada processador tem acesso à sua própria memória local. Neste caso, as informações compartilhadas devem ser trocadas entre os processadores por meio de rotinas de comunicação, tais como MPI e PVM.
O fato dos multiprocessadores terem memória compartilhada e seus processadores serem iguais (geralmente) e sincronizados facilita bastante o trabalho de divisão de tarefas. Pode-se afirmar que nestes computadores, simplesmente distribuir igualmente as tarefas pelo número de processadores já é um bom começo. A mesma abordagem não funciona de forma eficiente nos multicomputadores ou clusters. Estes computadores podem ser compostos por processadores distintos, o que pode resultar em desempenhos diferentes. Devido às características dos processadores, é muito provável que o com maior capacidade de processamento (mais rápido, com mais memória) conclua sua(s) tarefa(s) antes do que os mais modestos, ficando ocioso em um determinado período de tempo. É fácil perceber que, nesta situação, pode-se não ter o resultado esperado e, pior, pode-se até ter um desempenho inferior ao que se teria caso todas as tarefas fossem alocadas somente ao processador com maior capacidade de processamento. Dependem da rede de conexão para trocar mensagens.
- Memória privativa: o espaço de endereços é distinto para cada processador; comunicação através de troca de mensagens com operações send e receive.
- Memória compartilhada: o espaço de endereçamento é único; Comunicação através de load e store nos endereços de memória.
- Memória distribuída: a memória é composta por vários módulos; cada módulo está próximo a um processador.
- Memória centralizada: a memória se encontra à mesma distância de todos os processadores; pode ser implementada com um ou vários módulos.
c) Características de Multicomputadores e Multiprocessadores
- Multicomputadores:
- Podem ter milhares de processadores.
- Não há um acoplamento forte.
- Comunicações entre os processos feitas por troca de mensagens entre os processos que estão sendo executados nos processadores.
- Possuem memória distribuída.
- Multiprocessadores:
- Caracterizados pelo compartilhamento global de memória pelos diversos processadores do ambiente.
- Comunicação feita por variável de memória.
- Fortemente acoplados.
Smart City, Hadoop e IoT
- Smart City: visa resolver problemas da cidade, monitora e integra a infraestrutura crítica para otimizar recursos, planejar atividades, monitorar aspectos de segurança, maximizando serviços para a população, reduzindo custos e consumo. Promove mais sustentabilidade e qualidade de vida. Considera áreas como política, tecnologia, economia e meio ambiente. Utiliza Big Data, IoT e Tempo Real. Emprega tecnologias como Wi-Fi, sensores e VANET, com alta taxa de transferência de dados. Dificuldades incluem armazenamento, processamento e integração de dispositivos.
- Hadoop: é uma plataforma de software voltada para processamento de grandes quantidades de dados. Foi inspirada no MapReduce e no GFS. Os módulos do Hadoop são desenvolvidos com a premissa de que falhas de hardware são comuns e devem ser corrigidas por software.
- IoT (Internet of Things): é a interconexão de dispositivos de computação embarcada existentes dentro da infraestrutura da internet. Tipicamente, é esperado que a IoT ofereça uma conectividade entre sistemas, dispositivos e serviços mais avançada, algo além das comunicações máquina-máquina, e que cubra uma variedade de protocolos, domínios e aplicações.
CORBA e DCOM
CORBA (Common Object Request Broker Architecture) é um padrão designado para facilitar a comunicação de sistemas que são distribuídos em plataformas diversas. Ele permite a colaboração entre sistemas em diferentes sistemas operacionais, linguagens e hardware. É um exemplo de paradigma de objeto distribuído. Ele normaliza a semântica das chamadas de métodos entre objetos que residem no mesmo espaço de endereçamento ou em espaços de endereçamento remotos. Usa IDL (Interface Definition Language) para especificar as interfaces que os objetos apresentam.
- Dynamic Invocation/Skeleton Interface (DII, DSI): Permite que clientes construam chamadas em tempo de execução ao invés de chamar métodos pelo proxy, e o servidor reconstrói essas chamadas em invocações de métodos regulares.
- Abordagem definida por linguagens binárias:
- ORB (Object Request Broker): Transforma estrutura de dados de e para sequências de bytes, os quais são transmitidos pela rede (Serialização). É um framework que permite objetos remotos serem usados através da rede, como se fossem locais ou parte do mesmo processo.
Diferenças entre CORBA e DCOM
Ambos oferecem comunicação cliente-servidor. Um cliente invoca um método implementado por um objeto remoto. O serviço provido pelo servidor é encapsulado como um objeto, e a interface do objeto é definida pela Interface Definition Language.
- DCOM é uma solução criada pela Microsoft.
- CORBA está disponível através de vários vendedores. Os produtos CORBA suportam produtos da Microsoft e são uma excelente ponte entre servidores Microsoft e Unix.
- DCOM é melhor aplicado em aplicações front-end. Se uma aplicação distribuída é rodada sob uma plataforma Microsoft, DCOM é a melhor escolha, pois também pode ser usado com CORBA.
- Diferenças principais:
- Como os objetos dos servidores são registrados.
- Como ponteiros para interfaces remotas são representados para transmitir a representação para o cliente.
- DCOM possui o padrão ActiveX, enquanto o CORBA possui um número maior de serviços, como trader, query e transactions.
Passos para Criação de uma Aplicação CORBA
- Obter o arquivo OMG IDL: Geralmente, os arquivos OMG IDL são providos pelo designer da aplicação.
- Selecionar o tipo de invocação (estático ou dinâmico).
- Usar o compilador IDL para compilar o arquivo OMG IDL. Usar o comando idl para compilar o arquivo OMG IDL e gerar os arquivos necessários para a interface. Além disso, o compilador gera esqueletos que contêm a assinatura das operações dos objetos do CORBA.
- Escrever a aplicação CORBA. Para participar de uma sessão, o cliente WebLogic Enterprise deve ser capaz de obter a referência do objeto e invocar operações do objeto.
- Fazer o build da aplicação CORBA. O passo final é produzir o executável.
Cluster, Grid e Cloud Computing
- Cluster Computing: é uma coleção de computadores paralelos ou distribuídos, no qual estão interconectados entre si usando Ethernet, SCI ou Infiniband. Trabalham juntos na execução de computação intensiva de dados e tarefas que não seriam viáveis em um único computador. São usados principalmente para alta disponibilidade, balanceamento de carga e computação.
- Grid Computing: combina computadores de múltiplos domínios para atingir um objetivo comum, que é resolver uma única tarefa. Permite compartilhamento, seleção e agregação de recursos geograficamente distribuídos em tempo de execução.
- Cloud Computing: é um sistema paralelo e distribuído que consiste em uma coleção de computadores interconectados que são dinamicamente provisionados. Permite compartilhamento de recursos computacionais (rede, servidores, armazenamento, aplicações).
Arquiteturas de Computadores
- SMP (Symmetric Multiprocessing): arquitetura de processadores com compartilhamento total. Possuem os mesmos recursos e rodam o mesmo sistema operacional. São simétricos porque possuem o mesmo custo para acessar a memória principal, e qualquer processador pode realizar tarefas de outros. Ambientes que rodam várias aplicações integradas ao computador são bons exemplos.
- MPP (Massively Parallel Processing): arquitetura fracamente acoplada, com vários nós independentes interligados por uma rede de alta velocidade. Cada nó possui vários processadores com cache e memória local própria, além de sua própria versão do sistema operacional. A comunicação é feita por troca de mensagens, controlada por um escalonador que determina qual execução em qual nó.
Taxonomia de Flynn
- SISD (Single Instruction, Single Data): cada instrução opera sobre um único conjunto de dados, forma requerida.
- SIMD (Single Instruction, Multiple Data): opera sobre um conjunto maior de dados, de forma simultânea.
- MISD (Multiple Instruction, Single Data): fluxo múltiplo de instruções em um único conjunto de dados.
- MIMD (Multiple Instruction, Multiple Data): fluxo múltiplo de instruções sobre múltiplos conjuntos de dados.
Tipos de Falhas
- Falta Latente: ainda não foi reconhecida.
- Falta Ativa: já ocorreu e foi reconhecida.
- Exemplo: Ventilação causa falha (latente). A ventilação leva ao superaquecimento (ativa), que pode alterar o serviço prestado (defeito).