Um conjunto de computadores independentes que se comunicam e coordenam suas ações para atingir um objetivo comum, compartilhando recursos e operando como uma única entidade coesa, apesar de estarem geograficamente dispersos
Importância dos Sistemas Distribuídos
Áreas como computação em nuvem, redes sociais, sistemas de telecomunicações e sistemas financeiros utilizam de sistemas distribuídos, pois eles oferecem escalabilidade, confiabilidade e compartilhamento de recursos.
Desafios dos Sistemas Distribuídos
Comunicação: garantir a entrega de mensagens de forma confiável, mesmo em face de falhas de rede ou nós, lidar com latência variável e imprevisível em redes distribuídas e projetar protocolos eficientes para a troca de dados entre processos.
Interprocesso: garantir a descoberta de processos, a comunicação entre processos em máquinas diferentes e a coordenação de suas atividades de maneira eficiente. A implementação de mecanismos de comunicação robustos e de alto desempenho é fundamental para superar esses desafios.
Sincronização: garantia de ordem de eventos em sistemas distribuídos assíncronos, a prevenção de condições de corrida em acesso concorrente a recursos compartilhados e a coordenação de operações distribuídas para garantir a consistência global do sistema.
Consistência de dados: garantir que todos os nós de armazenamento de dados tenham uma visão consistente do estado do sistema, mesmo em face de operações concorrentes e falhas de nós. Estratégias como replicação de dados, transações distribuídas e protocolos de consistência são utilizadas para abordar esse desafio.
Tolerância a falhas: projetar sistemas capazes de continuar operando de maneira confiável, mesmo quando alguns componentes falham. Isso requer mecanismos de detecção de falhas, recuperação de falhas e replicação de recursos críticos para garantir a disponibilidade contínua do sistema.
Principais Conceitos e Terminologia
Processos: são unidades de execução independentes que podem realizar operações computacionais e interagir uns com os outros por meio de comunicação. Cada processo pode ser executado em uma máquina física diferente e pode cooperar com outros processos para realizar tarefas complexas. A gestão de processos em sistemas distribuídos envolve a alocação de recursos, a coordenação de suas atividades e a garantia de sua correta execução em face de falhas e concorrência.
Recursos Compartilhados: são recursos computacionais, como memória, armazenamento e dispositivos de entrada/saída, que podem ser acessados e utilizados por múltiplos processos simultaneamente. A gestão de recursos compartilhados envolve garantir o acesso concorrente seguro e eficiente a esses recursos, prevenindo condições de corrida e garantindo a consistência dos dados.
Comunicação Interprocesso: troca de mensagens e dados entre processos em diferentes máquinas físicas. Isso pode envolver a transmissão de mensagens síncronas ou assíncronas, o compartilhamento de dados em memória compartilhada distribuída ou o uso de sistemas de mensagens distribuídas. A comunicação interprocesso é essencial para a coordenação e cooperação entre processos distribuídos.
Coordenação: refere-se ao processo de sincronização e cooperação entre processos para realizar tarefas conjuntas de maneira eficiente e consistente. Isso pode envolver a coordenação de operações concorrentes, a resolução de conflitos de acesso a recursos compartilhados e a coordenação de transações distribuídas para garantir a consistência dos dados.
Consistência de Dados: refere-se à garantia de que todos os nós do sistema tenham uma visão consistente e atualizada do estado dos dados, mesmo em face de operações concorrentes e falhas de nós. Isso envolve a implementação de mecanismos de replicação de dados, transações distribuídas e protocolos de consistência para garantir que as operações de leitura e escrita sejam realizadas de maneira consistente e correta.
Tolerância a falhas: refere-se à capacidade do sistema de continuar operando de maneira confiável, mesmo quando alguns componentes falham. Isso envolve a detecção de falhas, a recuperação de falhas e a adaptação do sistema para lidar com falhas de forma transparente aos usuários. Estratégias como replicação de dados, redundância de componentes e recuperação de transações são utilizadas para garantir a disponibilidade contínua do sistema.
Definição de Sistemas Distribuídos
Importância dos Sistemas Distribuídos
Desafios dos Sistemas Distribuídos
Comunicação: garantir a entrega de mensagens de forma confiável, mesmo em face de falhas de rede ou nós, lidar com latência variável e imprevisível em redes distribuídas e projetar protocolos eficientes para a troca de dados entre processos.
Interprocesso: garantir a descoberta de processos, a comunicação entre processos em máquinas diferentes e a coordenação de suas atividades de maneira eficiente. A implementação de mecanismos de comunicação robustos e de alto desempenho é fundamental para superar esses desafios.
Sincronização: garantia de ordem de eventos em sistemas distribuídos assíncronos, a prevenção de condições de corrida em acesso concorrente a recursos compartilhados e a coordenação de operações distribuídas para garantir a consistência global do sistema.
Consistência de dados: garantir que todos os nós de armazenamento de dados tenham uma visão consistente do estado do sistema, mesmo em face de operações concorrentes e falhas de nós. Estratégias como replicação de dados, transações distribuídas e protocolos de consistência são utilizadas para abordar esse desafio.
Tolerância a falhas: projetar sistemas capazes de continuar operando de maneira confiável, mesmo quando alguns componentes falham. Isso requer mecanismos de detecção de falhas, recuperação de falhas e replicação de recursos críticos para garantir a disponibilidade contínua do sistema.
Principais Conceitos e Terminologia
Processos: são unidades de execução independentes que podem realizar operações computacionais e interagir uns com os outros por meio de comunicação. Cada processo pode ser executado em uma máquina física diferente e pode cooperar com outros processos para realizar tarefas complexas. A gestão de processos em sistemas distribuídos envolve a alocação de recursos, a coordenação de suas atividades e a garantia de sua correta execução em face de falhas e concorrência.
Recursos Compartilhados: são recursos computacionais, como memória, armazenamento e dispositivos de entrada/saída, que podem ser acessados e utilizados por múltiplos processos simultaneamente. A gestão de recursos compartilhados envolve garantir o acesso concorrente seguro e eficiente a esses recursos, prevenindo condições de corrida e garantindo a consistência dos dados.
Comunicação Interprocesso: troca de mensagens e dados entre processos em diferentes máquinas físicas. Isso pode envolver a transmissão de mensagens síncronas ou assíncronas, o compartilhamento de dados em memória compartilhada distribuída ou o uso de sistemas de mensagens distribuídas. A comunicação interprocesso é essencial para a coordenação e cooperação entre processos distribuídos.
Coordenação: refere-se ao processo de sincronização e cooperação entre processos para realizar tarefas conjuntas de maneira eficiente e consistente. Isso pode envolver a coordenação de operações concorrentes, a resolução de conflitos de acesso a recursos compartilhados e a coordenação de transações distribuídas para garantir a consistência dos dados.
Consistência de Dados: refere-se à garantia de que todos os nós do sistema tenham uma visão consistente e atualizada do estado dos dados, mesmo em face de operações concorrentes e falhas de nós. Isso envolve a implementação de mecanismos de replicação de dados, transações distribuídas e protocolos de consistência para garantir que as operações de leitura e escrita sejam realizadas de maneira consistente e correta.
Tolerância a falhas: refere-se à capacidade do sistema de continuar operando de maneira confiável, mesmo quando alguns componentes falham. Isso envolve a detecção de falhas, a recuperação de falhas e a adaptação do sistema para lidar com falhas de forma transparente aos usuários. Estratégias como replicação de dados, redundância de componentes e recuperação de transações são utilizadas para garantir a disponibilidade contínua do sistema.