Características dos sistemas distribuídos, arquitetura, tipos, objetivos, aplicações

3280
Charles McCarthy
Características dos sistemas distribuídos, arquitetura, tipos, objetivos, aplicações

O Sistemas distribuídos são softwares que servem para coordenar as ações de diversos computadores. Essa coordenação se dá por meio da troca de mensagens, ou seja, 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 o compartilhamento de recursos, incluindo software, por sistemas conectados a uma rede. Portanto, o sistema é baseado em uma rede que conecta os computadores e faz o roteamento das mensagens..

aeb (sistemas distribuídos). b (sistema paralelo). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

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

Em um contexto onde podem existir centenas ou milhares de computadores, proporção comum em grandes empresas de Internet, é muito comum que ocorram falhas de componentes, sejam de hardware, rede, discos, etc., e o sistema deve estar preparado enfrentá-los em todos os momentos.

Índice do artigo

  • 1 distribuição de dados
  • 2 Características dos sistemas distribuídos
    • 2.1 Compatibilidade
    • 2.2 Tolerância a falhas
    • 2.3 Middleware e API
  • 3 Arquitetura
    • 3.1 Arquitetura cliente-servidor
    • 3.2 Arquitetura ponto a ponto
    • 3.3 Arquiteturas multinível
    • 3.4 Arquitetura do grupo do processador
  • 4 tipos de sistemas distribuídos
    • 4.1 Computação em cluster
    • 4.2 Computação em Rede
    • 4.3 Computação em nuvem
  • 5 objetivos
    • 5.1 Compartilhar recursos
    • 5.2 Abstração
    • 5.3 Abertura
    • 5.4 Interoperabilidade e portabilidade
    • 5.5 Escalabilidade
  • 6 aplicativos
    • 6.1 Máquina virtual Erlang
    • 6.2 BitTorrent
  • 7 vantagens
  • 8 desvantagens
  • 9 Exemplos de sistemas distribuídos
    • 9.1 StackPath
    • 9.2 Internet
  • 10 referências

Distribuição de dados

A distribuição é a chave para lidar com clusters de dados muito grandes. Necessário para escalabilidade, que é o meio de manter o desempenho estável quando os pools de dados aumentam, adicionando novos recursos ao sistema.

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

Características de sistemas distribuídos

aeb (sistemas distribuídos). b (sistema paralelo). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

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, pois também é compatível com todos os sistemas e usuários de cada computador..

Tolerância ao erro

Por se tratar de uma única rede com muitos computadores, caso algum de seus componentes falhe, os demais podem continuar a exercer sua função integralmente, evitando erros rapidamente.

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

Middleware e API

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

Hoje, você ouve mais sobre interfaces de programação de aplicativos (APIs), 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 determinado computador chamado servidor pode executar certas tarefas, que são chamadas de serviços. Por exemplo, servir arquivos pela rede, a capacidade de executar certos comandos ou rotear dados para uma impressora. O cliente é o computador que solicita os serviços.

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

Arquitetura ponto a ponto

Ele pressupõe que cada computador tenha recursos semelhantes e que nenhuma máquina seja dedicada a servir aos outros. 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 oferece um conjunto específico de serviços.

Arquiteturas multinível

Para certos serviços, pode fazer sentido ter conectividade hierárquica. Por exemplo:

  • Um servidor ao realizar suas tarefas pode contatar outro servidor de um tipo diferente
  • A arquitetura cliente-servidor é uma arquitetura de duas camadas.

Arquitetura de grupo de processador

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

Tipos de sistemas distribuídos

Computação de cluster

É um conjunto de computadores semelhantes conectados por meio de uma rede local de alta velocidade. É frequentemente usado para programação paralela, onde um único programa de computação intensiva é executado em paralelo 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 mestres..

Computação em rede

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

Computação em Nuvem

É um conjunto de recursos virtualizados alojados no data center de um provedor de nuvem. Os clientes podem estabelecer uma infraestrutura virtualizada para tirar proveito de uma variedade de serviços em nuvem.

Para o usuário, parece que ele está alugando seu próprio computador exclusivo. No entanto, é muito provável que você o esteja compartilhando com outros clientes. O mesmo se aplica ao armazenamento virtual.

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

metas

Compartilhe recursos

Sejam instalações de armazenamento, arquivos de dados, serviços ou redes, você pode querer 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 para cada um separadamente..

Abstração

Para ocultar que os processos e recursos estão distribuídos em vários computadores, possivelmente dispersos geograficamente. 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. Cumprindo as regras padronizadas, 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ções..

Escalabilidade

É necessário quando há um aumento de usuários que precisam de mais recursos. Um bom exemplo é o aumento da audiência da Netflix todas as sextas-feiras à noite.

Significa adicionar mais recursos dinamicamente, como aumentar a capacidade da rede permitindo mais transmissão de vídeo e reduzindo assim que o consumo for normalizado.

Formulários

Máquina virtual Erlang

O pacote de software LYME é baseado em Erlang e oferece uma alternativa ao LAMP. Shmuel Csaba Otto Traian / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

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

Este modelo funciona por ter muitos processos isolados, todos com a capacidade de se comunicar uns com os outros por meio de um sistema de transmissão de mensagem embutido..

A máquina virtual Erlang pode se conectar a outras máquinas virtuais que estão em lugares diferentes. Esse enxame de máquinas virtuais executa um único aplicativo, lidando com as falhas de uma máquina programando-a para ser executada em outro nó..

Bittorrent

Operação de rede BitTorrent. Mrjavi / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)

É um dos protocolos mais usados ​​para transferir arquivos grandes na web. A ideia principal é facilitar a transferência de arquivos entre diferentes pontos da rede sem ter que passar por um servidor principal.

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

O BitTorrent permite que você hospede arquivos voluntariamente e os envie para outros usuários que os desejem. É tão popular porque foi o primeiro do 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 escalados conforme necessário.

- Todos os nós no sistema distribuído estão conectados uns aos outros. 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 apenas um.

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

Desvantagens

- Algumas mensagens e dados podem ser perdidos na rede ao mover 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.

- A sobrecarga da rede pode ocorrer se todos os nós no sistema distribuído tentarem enviar dados ao mesmo tempo.

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

Exemplos de sistemas distribuídos

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

StackPath

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

StackPath armazena o conteúdo mais recente e frequentemente solicitado nos locais mais próximos do site que está sendo usado.

Ao interconectar computadores virtuais, além de aproveitar a velocidade e agilidade da computação de última geração, o sistema pode atender com muita rapidez milhares de solicitações simultâneas..

Internet

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

Por meio do conceito de abstração, você não tem ideia 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 e-mail do Gmail ou qualquer outro aplicativo que possa ser usado. Cada pessoa interage com aplicativos distribuídos diariamente.

Referências

  1. Paul Krzyzanowski (2018). Sistemas distribuídos. Retirado de: cs.rutgers.edu.
  2. Catherine Paganini (2019). Primer: Sistemas Distribuídos e Computação Nativa em Nuvem. 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. Code Camp grátis. Retirado de: freecodecamp.org.

Ainda sem comentários