Partilhar via


O Modelo para Sistemas Distribuídos

Tradicionalmente, ter um sistema monolítico executado em vários computadores significava dividir o sistema em componentes de cliente e servidor separados. Nesses sistemas, o componente cliente manipulava a interface do usuário e o servidor fornecia processamento back-end, como acesso ao banco de dados, impressão e assim por diante. À medida que os computadores proliferavam, diminuíam de custo e se tornavam conectados por redes de largura de banda cada vez maiores, dividir os sistemas de software em vários componentes tornou-se mais conveniente, com cada componente rodando em um computador diferente e executando uma função especializada. Essa abordagem simplificou o desenvolvimento, o gerenciamento, a administração e, muitas vezes, melhorou o desempenho e a robustez, uma vez que uma falha em um computador não necessariamente desativou todo o sistema.

Em muitos casos, o sistema aparece para o cliente como uma nuvem opaca que executa as operações necessárias, mesmo que o sistema distribuído seja composto por nós individuais, como ilustrado na figura a seguir.

clientes acessam serviços em um sistema de servidores RPC que aparece como uma nuvem opaca para clientes externos

A opacidade da nuvem é mantida porque as operações de computação são invocadas em nome do cliente. Como tal, os clientes podem localizar um computador (um nó ) dentro da nuvem e solicitar uma determinada operação; Ao executar a operação, esse computador pode invocar a funcionalidade em outros computadores dentro da nuvem sem expor as etapas adicionais, ou o computador no qual elas foram executadas, para o cliente.

Com esse paradigma, a mecânica de um sistema distribuído semelhante à nuvem pode ser dividida em muitas trocas de pacotes individuais ou conversas entre nós individuais.

Os sistemas cliente-servidor tradicionais têm dois nós com funções e responsabilidades fixas. Os sistemas distribuídos modernos podem ter mais de dois nós, e suas funções geralmente são dinâmicas. Em uma determinada conversa, um nó pode ser um cliente, enquanto em outra conversa o mesmo nó pode ser o servidor. Em muitos casos, o consumidor final da funcionalidade exposta é um cliente com um usuário sentado em um teclado, observando a saída. Em outros casos, o sistema distribuído funciona sem supervisão, realizando operações em segundo plano.

O sistema distribuído pode não ter clientes e servidores dedicados para cada troca de pacotes em particular, mas é importante lembrar que há um chamador (ou iniciador, que é frequentemente referido como o cliente). Há também o destinatário da chamada (muitas vezes referido como o servidor). Não é necessário ter trocas de pacotes bidirecionais no formato solicitação-resposta de um sistema distribuído; Muitas vezes, as mensagens são enviadas apenas de uma maneira.