GithubHelp home page GithubHelp logo

lawmercado / ufrgs-inf01151-server Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 136 KB

The server of the final assignment from Operational Systems II module. Currently in the first phase.

License: GNU General Public License v3.0

Makefile 0.49% C 99.51%

ufrgs-inf01151-server's Issues

Replicação passiva

O servidor implementado na Parte I, caso venha a falhar, levará à indisponibilidade de serviço para seus
clientes. Este é um estado que não é desejável no sistema. Para aumentar a disponibilidade do sistema
na ocorrência de falhas do servidor principal, um novo servidor deverá assumir o seu papel e manter o
serviço de gerenciamento de arquivos funcionando. Note que essa mudança deve ser transparente para
os usuários e seus arquivos devem manter-se disponíveis, mesmo após a falha. Para garantir que as
modificações de arquivos estarão disponíveis em um novo servidor, você deverá utilizar um esquema de
replicação, informando todas as modificações realizadas aos servidores secundários.

Implementar um esquema de Replicação Passiva, onde o servidor é representado por uma instância primária de réplica manager (RM), e uma ou mais instâncias de RM secundárias (ou backup). Podemos entender este modelo adicionando um front-end (FE) entre a comunicação do cliente (C) e o conjunto de RMs. O front-end é responsável por realizar a comunicação entre os clientes e o serviço de replicação, tornando transparente para o cliente qual é a cópia primária do servidor

Seu esquema precisará garantir que:
(1) todos os clientes sempre utilizarão a mesma cópia primária;
(2) após cada operação, o RM primário irá propagar o estado dos arquivos aos RMs de backup;
(3) somente após os backups serem atualizados o primário confirmará a operação ao cliente.

Eleição de Líder

Algoritmos de eleição de líder permitem escolher, dentro de um conjunto de processos distribuídos, qual processo deve desempenhar um papel particular (e.g., coordenador, alocador de recursos, verificador, etc). Algoritmos de eleição de líder são muito usados como parte de outros algoritmos distribuídos, que exigem a escolha de um processo para desempenhar um papel especifico.

Na primeira parte do trabalho, assumiu-se a existência de um único servidor Dropbox. Agora, no entanto, como diferentes processos potencialmente poderão assumir o papel de servidor primário, o processo escolhido em questão deverá ser selecionado através de um dos algoritmos de eleição de líder vistos em aula2: algoritmo do anel ou algoritmo do valentão.

Quando o servidor principal falhar, o algoritmo de eleição de líder deverá ser utilizado para determinar o
próximo servidor primário. Nesse caso, um dos servidores backup deverá assumir essa função, mantendo um estado consistente do sistema. Para isso, implemente um dos algoritmos vistos em aula para eleger um novo RM primário após uma falha. Lembre-se de garantir que seu mecanismo atualize as
informações sobre o novo líder nos FE dos clientes.

Erro de sincronização

Quando o arquivo é deletado no sync_dir do client, o arquivo não é deletado no diretório do respectivo client no servidor.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.