A computação distribuída usa vários recursos de computação em diferentes locais de operação para uma única finalidade de computação.
Os sistemas de computação distribuída fazem as coisas acontecerem em grande escala. Lembre disso na próxima vez que você jogar um game MMO (massively multiplayer online). Para gerenciar efetivamente um MMO, são necessários sistemas inteiros se unindo e trabalhando em conjunto para oferecer uma experiência online perfeita que está sendo compartilhada simultaneamente por milhares de jogadores em um ambiente em tempo real.
A computação distribuída ajuda os provedores a reunir esse tipo de sincronização coordenada e poder de processamento do computador em direção a um objetivo comum.
E esse é só um exemplo entre as diversas aplicações dos serviços de computação distribuída atualmente em uso, como criação de gráficos 3D vívidos para animações, treinamento de redes neurais que imitam o funcionamento do cérebro humano e resolução de equações extremamente complexas de química e física.
Normalmente, o modelo de computação distribuída assume as tarefas e cargas de trabalho de computação mais intensivas e lida com os desafios computacionais mais sérios, e é por isso que requer o uso de vários componentes e memória compartilhada.
A computação distribuída conecta vários computadores, servidores e redes para realizar tarefas computacionais de diferentes tamanhos e finalidades. Em sistemas pequenos de computação distribuída, com componentes próximos entre si, é possível conectá-los por meio de uma rede local (LAN).
Em sistemas distribuídos maiores, quando os componentes estão geograficamente distantes, eles se conectam por redes de longa distância (WAN). Os componentes em um sistema distribuído compartilham informações por meio de qualquer tipo de rede que esteja sendo usada. O exemplo mais conhecido de sistema distribuído é a Internet. A criptomoeda talvez seja o exemplo mais controverso de sistema distribuído nos últimos tempos.
Do ponto de vista computacional, mesmo as formas mais simples de computação distribuída normalmente incluem três componentes básicos, considerando a quantidade envolvida:
No entanto, não existem regras fixas sobre o que define um cenário de computação distribuída ou quantos componentes de software são necessários para que ela funcione. Pode haver apenas alguns componentes atuando nessa cadeia (ou rede), ou então muitos outros podem ser integrados ao processo.
Esse é um dos grandes benefícios da computação distribuída: ela permite expandir o sistema adicionando mais máquinas. Outro grande benefício é a redundância: se um dos computadores da rede falhar por qualquer motivo, o sistema continua funcionando normalmente, mesmo assim.
Esse conceito de redundância adicional anda de mãos dadas com a ênfase na tolerância a falhas. A tolerância a falhas é um processo corretivo que permite que um sistema operacional responda e corrija uma falha no software ou no hardware enquanto o sistema continua operando. A tolerância a falhas passou a ser usada como uma medida geral da viabilidade contínua dos negócios em face de uma falha disruptiva.
Sistemas de computação distribuída não têm limite fixo quanto à quantidade de componentes. Também não é necessário que esses componentes estejam fisicamente próximos nem conectados por redes locais. Com os recursos ampliados das redes de longa distância, os computadores de um sistema distribuído podem estar em continentes diferentes e ainda assim funcionar perfeitamente.
O objetivo dos sistemas de computação distribuída é fazer com que a rede de computação distribuída, independentemente do seu tamanho e de onde seus componentes estejam localizados, funcione como se fosse um único computador. Essa coordenação é realizada por meio de um sistema elaborado de troca de mensagens entre os diversos componentes.
Os protocolos de comunicação controlam a troca de mensagens entre os componentes e estabelecem o relacionamento entre eles. Chamamos essa relação de “acoplamento”, que geralmente se apresenta de duas formas:
A computação distribuída também lida com os efeitos positivos e negativos da simultaneidade, ou concorrência, que é a execução simultânea de várias sequências de instruções operacionais. Entre suas qualidades positivas, destaca-se o fato de que concorrência permite a computação paralela de vários threads de processo. (A computação paralela não deve ser confundida com o processamento paralelo, que é um processo em que tarefas de tempo de execução são divididas em várias tarefas menores.)
Os pontos negativos associados à simultaneidade geralmente incluem maior latência e até gargalos em que o tráfego quase pára devido à sobrecarga do sistema de computação distribuído com um número excessivo de solicitações de componentes.
Concorrência é diferente de multithreading, que permite a um programa continuar rodando enquanto outras tarefas acontecem em segundo plano. A concorrência consome mais recursos, pois várias threads operam ao mesmo tempo e acessam os mesmos recursos simultaneamente.
Algumas cargas de trabalho são tão grandes que ultrapassam o que um único sistema consegue suportar. A computação distribuída divide essas cargas de trabalho entre vários equipamentos, permitindo lidar bem com tarefas pesadas.
A computação distribuída opera com base no conceito de ativos compartilhados e suporta o compartilhamento de recursos como dados, software e hardware entre os vários componentes dentro dessa instância de computação distribuída.
O tráfego on-line de muitas organizações passa por mudanças rápidas e drásticas, possivelmente por causa de notícias divulgadas ou outros fatores. A computação distribuída oferece a flexibilidade que as empresas precisam para lidar com esses picos.
A computação distribuída eleva os níveis de desempenho ao dividir grandes tarefas de processamento em atividades computacionais menores, compartilhadas por vários computadores. Isso resulta em um volume acumulado de velocidade de processamento e maior capacidade total de armazenamento.
Embora seja verdade que a computação distribuída, com seus múltiplos sistemas, tenha custos iniciais mais altos do que os sistemas centralizados, ao longo do tempo esses custos se equilibram devido às eficiências obtidas por meio de menor latência e tempos de resposta mais rápidos, o que torna a computação distribuída mais econômica do que os sistemas centralizados.
Os tipos de computação distribuída são classificados de acordo com a arquitetura de computação distribuída que cada um utiliza.
Sistemas cliente-servidor utilizam uma arquitetura cliente-servidor que permite seu uso com mais de um sistema. Nesse modelo, o cliente envia um input ao servidor na forma de uma solicitação. Essa comunicação geralmente envolve um comando para executar determinada tarefa ou uma solicitação por mais recursos de computação. O servidor então trabalha para cumprir essa tarefa ou alocar os recursos solicitados. Uma vez concluído, o servidor responde ao cliente com uma mensagem sobre a ação tomada.
Enquanto os sistemas centralizados utilizam arquitetura cliente-servidor, um sistema peer adota arquitetura peer (também chamada de arquitetura ponto a ponto). Sistemas peer utilizam nós, que podem funcionar efetivamente como cliente ou servidor, seja identificando necessidades e enviando solicitações, seja atendendo a essas necessidades e relatando as operações. Como o nome sugere, não há hierarquia em sistemas peer, portanto programas que operam em sistemas ponto a ponto conseguem se comunicar livremente entre si e transferir dados via redes peer.
Middleware pode ser considerado como um tipo de "intermediário" que opera entre duas aplicações distintas, ou seja, o middleware é uma aplicação que fica entre dois aplicativos e fornece serviços para ambos. O middleware também tem um aspecto interpretativo. Ele atua como um tradutor entre diferentes aplicativos de interoperabilidade que rodam em sistemas distintos e permite que esses aplicativos troquem dados livremente.
Os sistemas em três camadas recebem esse nome devido à quantidade de camadas usadas para representar a funcionalidade de um programa. Ao contrário da arquitetura cliente-servidor típica na qual os dados são colocados no sistema cliente, o sistema de três camadas mantém os dados armazenados em sua camada intermediária, que é chamada de Camada de Dados. A Camada de Aplicação envolve a Camada de Dados em um de seus lados, enquanto a Camada de Apresentação envolve a Camada de Dados no outro lado. Os sistemas de três camadas são usados rotineiramente em vários aplicativos da web.
Algumas vezes chamados de sistemas distribuídos em múltiplas camadas, os sistemas N camadas têm capacidade ilimitada para funções de rede, que eles direcionam para outros aplicativos para processamento. A arquitetura dos sistemas de N camadas se assemelha à encontrada em sistemas de três camadas. Os sistemas de N camadas são frequentemente usados como base arquitetônica para vários serviços da Web e sistemas de dados.
A computação distribuída permite o uso de diferentes paradigmas de programação (que podem ser considerados como estilos de programação):
O banco on-line demonstra a agilidade da computação distribuída ao ocorrer em diversos lugares simultaneamente, muitas vezes com diferentes agências bancárias responsáveis por hospedar um dos servidores por trás de serviços essenciais (como atendimento ao cliente, segurança e processamento de transações). Tudo acontece de forma instantânea e sem dificuldade, exatamente como os clientes bancários esperam.
Tanto inteligência artificial (IA) quanto aprendizado de máquina (ML) estão revolucionando diversos campos tecnológicos, mas em nenhum outro lugar seus efeitos são tão evidentes quanto no próprio setor de computação. Ambas as tecnologias emergentes fazem amplo uso da computação distribuída. Os algoritmos por trás de IA e ML precisam de grandes volumes de dados para treinar seus modelos, e a computação distribuída fornece a capacidade de processamento necessária.
A computação distribuída agora está sendo usada pelos setores de energia e meio ambiente. No setor energético, a computação distribuída está ajudando a tecnologia de redes inteligentes a regular o uso e otimizar o consumo de energia. As redes inteligentes também utilizam a computação distribuída para reunir dados ambientais a partir de diferentes dispositivos de input, como sensores e medidores inteligentes.
Profissionais de áreas específicas das finanças já estão utilizando sistemas de computação distribuída. Considere a gestão de riscos, na qual as instituições financeiras precisam de vastos volumes de dados para executar cálculos enormes e informar melhor a tomada de decisões sobre probabilidade e avaliações de risco. A computação distribuída garante que as cargas computacionais sejam compartilhadas uniformemente entre vários sistemas.
A computação distribuída tem ajudado diversas áreas da ciência e contribuído para algumas das conquistas mais notáveis da área. Exemplos incluem o Grande Colisor de Hádrons, o acelerador de partículas mais poderoso do mundo. Os experimentos por trás disso dependem de quantidades extremas de coleta e análise de dados, exigindo o uso de computação distribuída. Da mesma forma, a computação distribuída serviu ao mesmo propósito para o Projeto Genoma Humano, que se propôs a mapear sequências de DNA humano. A computação distribuída também desempenha funções essenciais de previsão e na modelagem climática.
O IBM Cloud Infrastructure Center é uma plataforma de software compatível com o OpenStack para gerenciamento da infraestrutura de nuvens privadas em sistemas IBM zSystems e no IBM LinuxONE.
Conheça servidores, armazenamento e software projetados para sua estratégia corporativa de nuvem híbrida e IA.
Encontre a solução ideal de infraestrutura em nuvem para as necessidades do seu negócio e expanda os recursos conforme a demanda.