Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/86806

Registo completo
Campo DCValorIdioma
dc.contributor.advisorPereira, Josépor
dc.contributor.advisorAlonso, Ana Luísa Parreira Nunespor
dc.contributor.authorSilva, João Pedro Oliveira dapor
dc.date.accessioned2023-10-11T10:33:33Z-
dc.date.available2023-10-11T10:33:33Z-
dc.date.issued2022-04-01-
dc.date.submitted2021-11-
dc.identifier.urihttps://hdl.handle.net/1822/86806-
dc.descriptionDissertação de mestrado integrado em Engenharia Informáticapor
dc.description.abstractAlcançar o consenso distribuído é fundamental para que se consigam construir sistemas tolerantes a faltas, pois permite que uma coleção de processos opere como um grupo coerente que pode sobreviver a falhas de alguns dos seus membros. O algoritmo Raft resolve o problema de consenso e visa ser o mais compreensível possível, porém as atuais implementações deste algoritmo são dedicadas a casos de uso específicos. Consequentemente, quem desenvolve sistemas que tenham que contemplar componentes replicados vê-se obrigado a construir o seu próprio mecanismo de replicação, o que pode ser contraproducente e até ter certas implicações no código da aplicação. Paralelamente, as arquiteturas de microsserviços passaram a ser o novo normal, fazendo oposição à construção de sistemas monolíticos. Dada a sua natureza, este tipo de arquiteturas permite endereçar problemas que dizem respeito à resiliência e coerência dum dado serviço, existindo por isso uma oportunidade para cruzar algoritmos de consenso distribuído com microsserviços. Nesta dissertação propõe-se a construção de duas implementações de Raft num toolkit aplicacional típico de microsserviços, mais especificamente Spring Boot. Cada implementação deverá utilizar uma das diferentes stacks da framework, nomeadamente, a serviet stack ou a stack reativa. Ambas as implementações deverão ser modulares e genéricas o suficiente, para que possam ser simultaneamente configuráveis e aplicáveis a diferentes casos de uso. Para o efeito, começa-se por delinear as configurações em que o middleware poderá operar, assim como a arquitetura interna do mesmo, seguindo-se da fase de implementação, que detalha decisões tomadas ao longo da mesma. A fase de avaliação começa com a implementação, em ambas as stacks, de uma aplicação de armazenamento chave-valor que é configurada com diferentes parâmetros, para que finalmente possa ser comparada com o etcd que é um armazenamento chave-valor replicado. Desde logo, os resultados recolhidos fazem prever o desempenho de ambas as soluções de middleware construídas, que ficam aquém dos desempenhos alcançados por um cluster etcd, mas que dão garantias de viabilidade e extensibilidade, uma vez que as soluções são modulares para integrarem novas otimizações, e são genéricas e úteis para qualquer aplicação que necessite de assegurar garantias de coerência forte.por
dc.description.abstractAchieving distributed consensus is fundamental to building fault-tolerant systems, as it allows a collection of processes to operate as a coherent group that can survive the failure of some of its members. The Raft algorithm solves the consensus problem and aims to be as understandable as possible, but current implementations of this algorithm are dedicated to specific use cases. Consequently, those developing systems that have to contemplate replicated components are forced to build their own replication mechanism, which can be counterproductive and even have certain implications for the application code. At the same time, microservices architectures became the new normal, opposing the construction of monolithic systems. Due to its nature, this type of architecture allows addressing problems that concern the resilience and coherence of a given service, therefore there is an opportunity to cross distributed consensus algorithms with microservices. This dissertation proposes the construction of two Raft implementations in a typical microservices application toolkit, more specifically Spring Boot. Each implementation must use one of the different framework stacks, namely, the servlet stack or the reactive stack. Both implementations should be modular and generic enough to be simultaneously configurable and applicable to different use cases. For this purpose, we begin by outlining the configurations in which the middleware will operate, as well as its internal architecture, followed by the implementation phase, which details decisions made throughout. The evaluation phase begins with the implementation, in both stacks, of a key-value storage application that is configured with different parameters, so that it can finally be compared with etcd which is a replicated key-value storage. From the outset, the results collected predict the performance of both middleware solutions, which fall short of the performance achieved by an etcd cluster, but which provide guarantees of viability and extensibility, since the solutions are modular to integrate new optimizations, and are generic and useful for any application that needs to ensure strong consistency guarantees.por
dc.description.sponsorshipEste trabalho é financiado por fundos nacionais através da FCT - fundação para a Ciência e a Tecnologia, I. P., no âmbito do projeto UISB/50014/2020.por
dc.language.isoporpor
dc.relationinfo:eu-repo/grantAgreement/FCT/6817 - DCRRNI ID/UIDB%2F50014%2F2020/PTpor
dc.rightsopenAccesspor
dc.rights.urihttp://creativecommons.org/licenses/by-nc-sa/4.0/por
dc.subjectTolerância a faltaspor
dc.subjectConsensopor
dc.subjectRaftpor
dc.subjectMicrosserviçospor
dc.subjectSistemas monolíticospor
dc.subjectSpring bootpor
dc.subjectMiddleware genéricopor
dc.subjectModularidadepor
dc.subjectFault tolerancepor
dc.subjectConsensuspor
dc.subjectMicroservicespor
dc.subjectMonolithic systemspor
dc.subjectGeneric middlewarepor
dc.subjectModularitypor
dc.titleAcordo distribuído para arquiteturas de microsserviçospor
dc.typemasterThesiseng
dc.identifier.tid203362527por
thesis.degree.grantorUniversidade do Minhopor
sdum.degree.grade17 valorespor
sdum.uoeiEscola de Engenhariapor
dc.subject.fosEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informáticapor
Aparece nas coleções:BUM - Dissertações de Mestrado
DI - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Joao Pedro Oliveira da Silva.pdfDissertação de Mestrado3,91 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID