Sistemas distribuídos: características, arquitetura, tipos, objetivos, aplicações - Ciência - 2023
science
Contente
- Distribuição de dados
- Características de sistemas distribuídos
- Compatibilidade
- Tolerância ao erro
- Middleware e API
- Arquitetura
- Arquitetura cliente-servidor
- Arquitetura ponto a ponto
- Arquiteturas multinível
- Arquitetura de grupo de processador
- Tipos de sistemas distribuídos
- Computação de cluster
- Computação em rede
- Computação em Nuvem
- metas
- Compartilhe recursos
- Abstração
- Abertura
- Interoperabilidade e portabilidade
- Escalabilidade
- Formulários
- Máquina virtual Erlang
- Bittorrent
- Vantagem
- Desvantagens
- Exemplos de sistemas distribuídos
- StackPath
- Internet
- Referências
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.
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 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 eles de hardware, rede, discos, etc., e o sistema deve ser preparado para enfrentá-los em todos os momentos.
Distribuição de dados
A distribuição é a chave para lidar com grandes conglomerados de dados. É 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 importante considerar o projeto e a implementação da computação distribuída e do armazenamento. Um ponto a ser levado em consideração é o risco de possíveis falhas.
Características de 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 uns com os outros.
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, se algum de seus componentes falhar, os demais podem continuar a exercer sua função plenamente, evitando erros rapidamente.
Por esse motivo, os sistemas distribuídos costumam oferecer 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 vários 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 e assim por diante.
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-mail, mas nenhum computador oferece um conjunto específico de serviços.
Arquiteturas multinível
Para determinados 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 ou mover processos manualmente nos sistemas disponíveis.
Tipos de sistemas distribuídos
Computação de cluster
É uma coleção de computadores semelhantes conectados por meio de uma rede local de alta velocidade. É freqüentemente 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 é a 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 aproveitar as vantagens 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 comprar mais.
metas
Compartilhe recursos
Seja em instalações de armazenamento, arquivos de dados, serviços ou redes, você pode querer compartilhar esses recursos entre aplicativos, por uma questão de economia.
É 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 regras padronizadas, qualquer processo com aquela 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 da audiência da Netflix toda sexta à noite.
Significa adicionar mais recursos dinamicamente, como aumentar a capacidade da rede permitindo mais transmissão de vídeo e reduzi-la quando o consumo normalizar.
Formulários
Máquina virtual Erlang
Erlang é uma linguagem funcional que tem uma ó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.
Esse modelo funciona por ter muitos processos isolados, todos com a capacidade de se comunicar uns com os outros por meio de um sistema de mensagens integrado.
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 executado em outro nó.
Bittorrent
É um dos protocolos mais amplamente 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, pode ser escalado 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 aos sistemas distribuídos é bastante complicado e difícil de gerenciar em comparação com um 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 multijogador massivo 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 freqüentemente solicitado nos locais mais próximos ao 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 milhares de solicitações simultâneas com muita rapidez.
Internet
É o maior sistema distribuído do mundo. Qualquer usuário se sente como um único sistema, embora seja composto 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
- Paul Krzyzanowski (2018). Sistemas distribuídos. Retirado de: cs.rutgers.edu.
- Catherine Paganini (2019). Primer: Sistemas Distribuídos e Computação Nativa em Nuvem. A nova pilha. Retirado de: thenewstack.io.
- Universidade Internacional de Valência (2020). Sistemas distribuídos, características e classificação. Retirado de: universidadviu.com.
- David Meador (2018). Sistemas distribuídos. Ponto de tutoriais. Retirado de: tutorialspoint.com.
- Robert Gibb (2019). O que é um sistema distribuído? Retirado de: blog.stackpath.com.
- Stanislav Kozlovski (2018). Uma introdução completa aos sistemas distribuídos. Code Camp grátis. Retirado de: freecodecamp.org.