O oposto de Sistema Distribuído é Sistema Centralizado.
Um sistema distribuído em sua definição mais simples é um grupo de computadores trabalhando juntos para parecer um único computador para o usuário final.
Muitos sites tem a seguinte e confusa definição para Sistema Distribuído:
Sistema distribuído é uma coleção de sistemas de computadores autônomos fisicamente separados, mas conectados por uma rede de computadores centralizada equipada com software de sistema distribuído. Os computadores autônomos se comunicarão entre cada sistema compartilhando recursos e arquivos e realizando as tarefas que lhes foram atribuídas.
Sim, se iniciasse esse artigo com essa explicação, com certeza traria pouco ou nenhum entendimento.
Imagine uma empresa com apenas um servidor e dentro desse um banco de dados e um site(servidor web). Se acontecer algum problema de software(programas) ou hardware(peças) tudo pára. Tudo está centralizado em um único servidor.
Agora, imagine novamente uma empresa que tenha um sistema centralizado, mas dessa vez em mais de um servidor. Ela tem dois servidores(servidor01 e servidor02). No servidor01 há o banco de dados e no 02 está o site da empresa que se conecta com o banco de dados do outro servidor. Se o servidor01 cair, ficar off, o site que está no servidor02 e que depende do banco de dados que está no servidor01, também irá parar de funcionar. Aqui ainda estamos falando de sistema centralizado. Não confunda a quantidade de servidores pensando que isso faz deles um sistema distribuído.
Agora imaginemos o mesmo cenário, dois servidores, o 01 e o 02, mas eles estão distribuídos. 🙂 O site e o banco de dados “rodam” ao mesmo tempo nos dois servidores. Sim tudo está instalado nos dois servidores. Mas para o usuário isso é imperceptível; há uma concorrência nas solicitações dos usuários, ou seja, quando o usuário A faz uma pesquisa essa solicitação às vezes é atendida pelo servidor01 e às vezes pelo 02. Isso depende do pico de uso dos recursos e outros fatores. Os servidores “concorrem” entre si para responder à solicitação do usuário. Se um dos servidores ficar indisponível o usuário não vai perceber. O Sistema continua a operar. haverá disponibilidade ainda.
Esses dois cenários são bem simples, pois foi usado como exemplo somente dois servidores e em um ambiente real essa quantidade pode alcançar centenas ou milhares.
Como dito acima, Sistema Distribuído é um grupo de computadores trabalhando juntos para parecer um único computador para o usuário final e as máquinas ou servidores que fazem parte desse grupo têm um estado compartilhado, operam simultaneamente e podem falhar independentemente sem afetar o tempo de atividade de todo o sistema.
Em ambientes de empresas pequenas, Os bancos de dados tradicionais são armazenados no sistema de arquivos de uma única máquina, sempre que você deseja buscar/inserir informações nele – você fala diretamente com essa máquina. O site(servidor web) geralmente também está no mesmo servidor do banco de dados. Para distribuirmos esse sistema de banco de dados e site, precisaríamos ter eles rodando em várias máquinas ao mesmo tempo. O usuário deve ser capaz de consultar e gravar dados em qualquer máquina que escolher mas sem ser capaz de dizer qual é qual. Se ele insere um dado no servidor03 todos os outros receberão por “espelhamento”.
Por que Usar Sistema Distribuído?
Pelo discurso acima você já tem a resposta na ponta da língua; mas sistemas são sempre distribuídos por necessidade. A verdade é que o gerenciamento de sistemas distribuídos é um tópico complexo repleto de armadilhas e minas terrestres. É uma dor de cabeça implantar, manter e depurar sistemas distribuídos, então por que fazer caso haja a necessidade? O que um sistema distribuído permite fazer é escalar horizontalmente a infra-estrutura. Voltando ao nosso exemplo do servidor de banco de dados e site que rodava em um único servidor, a única maneira de lidar com mais tráfego seria atualizar o hardware no qual o banco de dados está sendo executado. Isso é chamado de dimensionamento vertical.
Escalar verticalmente é muito bom enquanto você pode, mas depois de um certo ponto você verá que mesmo o melhor hardware não é suficiente para tráfego suficiente, para não mencionar impraticável para hospedar.
Dimensionar horizontalmente significa simplesmente adicionar mais computadores em vez de atualizar o hardware de um único e é significativamente mais barato do que o dimensionamento vertical após um determinado limite, mas esse não é o principal caso de preferência. A melhor coisa sobre o dimensionamento horizontal é que você não tem limite de quanto pode dimensionar.
Mas o dimensionamento facilitado pela forma horizontal não é o único benefício que você obtém dos sistemas distribuídos. Tolerância a falhas e baixa latência também são igualmente importantes.