Sistemas distribuídos: características, arquitetura, tipos, objetivos, aplicações

Sistemas distribuídos: características, arquitetura, tipos, objetivos, aplicações

Os sistemas distribuídos são peças de software usadas para coordenar as ações de vários computadores. Essa coordenação é alcançada através da troca de mensagens, isto é, com pedaços de dados que transmitem informações.

Os sistemas distribuídos requerem componentes simultâneos, uma rede de comunicação e um mecanismo de sincronização. Eles permitem que recursos, incluindo software, sejam compartilhados por sistemas conectados a uma rede. Portanto, o sistema é baseado em uma rede que conecta computadores e lida com o roteamento de mensagens.

A computação distribuída é uma área da computação responsável pela análise de sistemas distribuídos. O programa de computador executado em um sistema distribuído é chamado de programa distribuído.

Em um contexto em que pode haver centenas ou milhares de computadores, o que é uma proporção comum em grandes empresas de Internet, é muito comum que haja falhas de componentes, sejam elas hardware, rede, discos, etc., e o sistema deve ser preparado para enfrentá-los em todos os momentos.

Distribuição de dados

A distribuição é essencial para lidar com clusters de dados muito grandes. É necessário obter escalabilidade, que é o meio de manter um desempenho estável quando os conjuntos de dados crescem adicionando novos recursos ao sistema.

Por outro lado, a distribuição apresenta uma série de problemas técnicos que tornam importante o design e a implementação de armazenamento e computação distribuídos. Um ponto a ser levado em consideração é o risco de possíveis falhas.

Características dos sistemas distribuídos

Compatibilidade

Os dispositivos podem funcionar com diferentes sistemas operacionais. Isso não os impede de oferecer sempre os mesmos serviços aos usuários. Por esse motivo, todos os dispositivos conectados são compatíveis entre si.

Outra questão fundamental é o design do software, porque também é compatível com todos os sistemas e usuários que estão em cada computador.

Tolerância ao erro

Sendo uma rede única com muitos computadores, se algum de seus componentes falhar, os outros poderão continuar executando sua função completamente, evitando erros rapidamente.

Por esse motivo, os sistemas distribuídos tendem a fornecer muita confiança ao trabalhar com eles, porque é muito raro o sistema falhar completamente, porque as tarefas não residem em um único dispositivo, mas em computadores diferentes.

Middleware e API

Processadores diferentes usam middleware de distribuição, ajudando a compartilhar diferentes recursos e capacidades para fornecer aos usuários uma rede consistente e integrada. Ele também oferece aos aplicativos diversos serviços, como segurança e recuperação de falhas.

Atualmente, mais se ouve sobre APIs (interfaces de programação de aplicativos), que funcionam como um gateway através do qual os aplicativos podem se comunicar. Os aplicativos não precisam saber nada sobre outros aplicativos, exceto sua API.

Arquitetura

Arquitetura cliente-servidor

Um computador específico chamado servidor pode executar determinadas tarefas, chamadas serviços. Por exemplo, oferecendo arquivos pela rede, a capacidade de executar determinados comandos ou encaminhar dados para uma impressora. O cliente é o computador que solicita os serviços.

O computador conhecido principalmente pelo serviço que ele fornece pode ser chamado de servidor de impressão, servidor de arquivos etc.

Arquitetura ponto a ponto

Suponha que cada computador tenha recursos semelhantes e que nenhuma máquina seja dedicada a servir as outras. Um exemplo disso é um conjunto de microcomputadores em um pequeno escritório.

A rede permite que as pessoas acessem os arquivos umas das outras e enviem e-mails, mas nenhum computador fornece um conjunto específico de serviços.

Arquiteturas multiníveis

Pode fazer sentido que determinados serviços tenham conectividade hierárquica. Por exemplo:

  • Um servidor ao executar suas tarefas pode entrar em contato com outro servidor de tipos diferentes
  • A arquitetura cliente-servidor é uma arquitetura de duas camadas.

Arquitetura do grupo de processadores

Um sistema operacional pode iniciar processos automaticamente em computadores inativos e até migrar processos para sistemas com um número maior de ciclos de CPU disponíveis. Em outros casos, um usuário pode iniciar ou mover processos manualmente nos sistemas disponíveis.

Tipos de sistemas distribuídos

Computação em cluster

É um conjunto de computadores semelhantes conectados através de uma rede local de alta velocidade. É freqüentemente usado para programação paralela, onde um único programa com uso intensivo de computador é executado paralelamente em vários computadores.

Cada cluster consiste em um conjunto de nós de computação que são monitorados e gerenciados por um ou mais nós chamados de mestres.

Computação em Rede

É composto de nós com diferenças marcantes no hardware e na tecnologia da rede. A tendência atual de ter uma configuração de nó específica para determinadas tarefas levou a uma maior diversidade, o que é mais comum na computação em rede.

Computação em nuvem

É um conjunto de recursos virtualizados hospedados no datacenter de um provedor de nuvem. Os clientes podem estabelecer uma infraestrutura virtualizada para aproveitar uma variedade de serviços em nuvem.

Para o usuário, parece que eles estão alugando seu próprio computador exclusivo. No entanto, na realidade, você provavelmente está compartilhando com outros clientes. O mesmo se aplica ao armazenamento virtual.

Esses recursos virtualizados podem ser configurados dinamicamente, permitindo escalabilidade. Se forem necessários mais recursos de computação, o sistema poderá adquirir mais.

Objetivos

Compartilhar recursos

Sejam instalações de armazenamento, arquivos de dados, serviços ou redes, convém compartilhar esses recursos entre aplicativos, para economia simples.

É muito mais barato ter um recurso de armazenamento compartilhado entre vários aplicativos do que comprar e manter o armazenamento de cada um separadamente.

Abstração

Ocultar que os processos e recursos estão distribuídos em vários computadores, possivelmente geograficamente dispersos. Ou seja, os processos e recursos são abstraídos do usuário.

Abertura

Basicamente, indica que um sistema distribuído é construído com elementos que podem ser facilmente integrados a outros sistemas. Em conformidade com as regras padrão, qualquer processo com essa interface pode se comunicar com outro processo com a mesma interface.

Interoperabilidade e portabilidade

Refere-se a quando dois sistemas de fabricantes diferentes podem trabalhar juntos. A portabilidade determina até que ponto um aplicativo feito para o sistema A pode funcionar no sistema B sem modificação.

Escalabilidade

É necessário quando há um aumento de usuários que precisam de mais recursos. Um bom exemplo é o aumento do público da Netflix a cada sexta-feira à noite.

Isso significa adicionar dinamicamente mais recursos, como aumentar a capacidade da rede, permitindo maior transmissão de vídeo e reduzindo-a quando o consumo normalizar.

Formulários

Máquina virtual Erlang

Erlang é uma linguagem funcional que possui ótima semântica para simultaneidade, distribuição e tolerância a falhas. Uma máquina virtual Erlang lida com a distribuição de um aplicativo Erlang.

Esse modelo funciona com muitos processos isolados, todos com a capacidade de se comunicar através de um sistema de transmissão de mensagens embutido.

A máquina virtual Erlang pode ser conectada a outras máquinas virtuais que estão em lugares diferentes. Esse enxame de máquinas virtuais executa um único aplicativo, manipulando as falhas de uma máquina agendando a execução para outro nó.

BitTorrent

É um dos protocolos mais usados ​​para transferir arquivos grandes na web. A idéia principal é facilitar a transferência de arquivos entre diferentes pares na rede sem precisar passar por um servidor principal.

Ao usar um cliente BitTorrent, você pode conectar-se a vários computadores ao redor do mundo para baixar um arquivo. Um computador que atua como coordenador ajuda a mostrar os nós na rede que possuem o arquivo desejado.

O BitTorrent permite que você hospede voluntariamente arquivos e faça o upload para outros usuários que os desejem. É tão popular porque foi o primeiro de seu tipo a oferecer incentivos para contribuir com a rede.

Vantagem

– Mais nós podem ser facilmente adicionados ao sistema distribuído, ou seja, podem ser redimensionados conforme necessário.

– Todos os nós no sistema distribuído estão conectados um ao outro. Portanto, cada um dos nós pode facilmente compartilhar dados com os outros nós.

– Recursos como impressoras podem ser compartilhados com vários nós, em vez de serem restritos a um.

– A falha de um nó não leva à falha de todo o sistema distribuído. Os outros nós ainda podem se comunicar.

Desvantagens

– Algumas mensagens e dados podem ser perdidos na rede ao passar de um nó para outro.

– É difícil fornecer segurança adequada em sistemas distribuídos porque os nós e as conexões devem ser protegidos.

– Uma sobrecarga na rede pode ocorrer se todos os nós do sistema distribuído tentarem enviar dados ao mesmo tempo.

– O banco de dados conectado a sistemas distribuídos é bastante complicado e difícil de gerenciar em comparação com um sistema de usuário único.

Exemplos de sistemas distribuídos

Os sistemas distribuídos podem ser usados ​​em um grande número de casos, como sistemas bancários eletrônicos, jogos online para vários jogadores e redes de sensores.

StackPath

Ele usa um sistema distribuído particularmente grande para alimentar seu serviço de rede de entrega de conteúdo. Cada um de seus pontos de presença (PoP) possui nós, formando um sistema distribuído mundialmente.

O StackPath armazena o conteúdo solicitado mais recentemente e com mais frequência nos locais mais próximos ao site em uso.

Ao interconectar computadores virtuais, além de aproveitar a velocidade e a agilidade da computação de ponta, o sistema pode lidar com milhares de solicitações simultâneas muito rapidamente.

Internet

É o maior sistema distribuído do mundo. Qualquer usuário se sente como um sistema único, mesmo sendo composto por milhões de computadores.

Usando o conceito de abstração, você não tem idéia de onde os dados estão armazenados, quantos servidores estão envolvidos ou como as informações chegam ao navegador. O navegador dissolve a complexidade da Internet.

Isso também se aplica a aplicativos como o email do Gmail ou qualquer outro aplicativo utilizável. Todas as pessoas interagem diariamente com aplicativos distribuídos.

Referências

  1. Paul Krzyzanowski (2018). Sistemas distribuídos. Retirado de: cs.rutgers.edu.
  2. Catherine Paganini (2019). Prime: Sistemas Distribuídos e Cloud Native Computing. A nova pilha. Retirado de: thenewstack.io.
  3. Universidade Internacional de Valência (2020). Sistemas distribuídos, características e classificação. Retirado de: universidadviu.com.
  4. David Meador (2018). Sistemas distribuídos. Ponto de tutoriais. Retirado de: tutorialspoint.com.
  5. Robert Gibb (2019). O que é um sistema distribuído? Retirado de: blog.stackpath.com.
  6. Stanislav Kozlovski (2018). Uma introdução completa aos sistemas distribuídos. Acampamento de Código Livre. Retirado de: freecodecamp.org.

Deixe um comentário

Este site usa cookies para lhe proporcionar a melhor experiência de usuário. política de cookies, clique no link para obter mais informações.

ACEPTAR
Aviso de cookies