Identifying operation commutativity in the Context of Replicated Systems

Detalhes bibliográficos
Autor(a) principal: Vaz, Rúben Alexandre Correia
Data de Publicação: 2023
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10362/164248
Resumo: Distributed systems often resort to data replication not only to enhance their availability but also to reduce user-perceived latency by balancing the load between replicas and routing their requests accordingly. Several systems resort to strong consistency to ensure high availability, although some systems are not allowed to weaken their consistency model. Recognizing the tension between consistency and high availability, many systems allow multiple consistency levels to coexist. However, most of those systems require that the programmer explicitly specifies each operation’s consistency level or declare the operation’s invariants and side effects. Reasoning about the system’s correctness becomes more challenging as the code scales. For instance, a single missing side effect identification may silently adulterate the application’s behavior. As part of the DeDuCe research project, this work aims to reduce the programmer’s effort by only requiring the programmer to introduce a simple and intuitive input at data declaration. Following this approach, the reasoning is centralized, and all accesses to replicated data are identified automatically. By identifying which operations access to replicated data, these operations are analyzed for commutativity, and conflict relations are defined for each operations pair. Conflict-free operations will be refactored to a commutative version capable of executing without global coordination. In this context, this thesis focuses on extending compile-time commutativity analysis applied to the Java language able to compute operation pairwise commutativity from the input given at data declaration. In addition, to extend commutativity analysis to objects, we specify which are the conditions that guarantee commutativity for an operations pair. We conclude our work by evaluating correctness and scalability. We show the correctness of the effects extraction and the produced outputs of each stage of the analysis. We analyze the time distribution in the inner stages of the analysis, and we seek to comprehend how the compile time scales when the size of the source code increases. Finally, we quantify the time required to determine if two method calls commute.
id RCAP_74f85a4e29e412118734d4d838cf4729
oai_identifier_str oai:run.unl.pt:10362/164248
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Identifying operation commutativity in the Context of Replicated SystemsDistributed SystemsReplicationCommutativity AnalysisConcurrency controlDomínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaDistributed systems often resort to data replication not only to enhance their availability but also to reduce user-perceived latency by balancing the load between replicas and routing their requests accordingly. Several systems resort to strong consistency to ensure high availability, although some systems are not allowed to weaken their consistency model. Recognizing the tension between consistency and high availability, many systems allow multiple consistency levels to coexist. However, most of those systems require that the programmer explicitly specifies each operation’s consistency level or declare the operation’s invariants and side effects. Reasoning about the system’s correctness becomes more challenging as the code scales. For instance, a single missing side effect identification may silently adulterate the application’s behavior. As part of the DeDuCe research project, this work aims to reduce the programmer’s effort by only requiring the programmer to introduce a simple and intuitive input at data declaration. Following this approach, the reasoning is centralized, and all accesses to replicated data are identified automatically. By identifying which operations access to replicated data, these operations are analyzed for commutativity, and conflict relations are defined for each operations pair. Conflict-free operations will be refactored to a commutative version capable of executing without global coordination. In this context, this thesis focuses on extending compile-time commutativity analysis applied to the Java language able to compute operation pairwise commutativity from the input given at data declaration. In addition, to extend commutativity analysis to objects, we specify which are the conditions that guarantee commutativity for an operations pair. We conclude our work by evaluating correctness and scalability. We show the correctness of the effects extraction and the produced outputs of each stage of the analysis. We analyze the time distribution in the inner stages of the analysis, and we seek to comprehend how the compile time scales when the size of the source code increases. Finally, we quantify the time required to determine if two method calls commute.Os sistemas distribuídos recorrem frequentemente à replicação de dados não só para reforçar a sua disponibilidade, mas também para reduzir a latência observada pelos seus utilizadores através da distribuição de carga entre réplicas e encaminhando os pedidos de acordo com a mesma. Existem alguns sistemas que são obrigados a enfraquecer a consistência de modo a garantirem alta disponibilidade para os seus utilizadores. Porém certos sistemas são demasiado sensíveis e não podem abdicar de consistência forte. Tendo em conta as incompatibilidades entre propriedades como a consistência e a alta disponibilidade, alguns sistemas permitem que existam differentes niveis de consitência em simultaneo dentro dos mesmos. No entanto grande parte destes sistemas necessita de auxilo extra do programador. Assim sendo o programador necessita de especificar dependências/ordenações entre operações e invariantes a serem preservadas, ou até mesmo escolher o nível de consistência correto a ser atribuído para cada operação, o que é geralmente uma tarefa propensa a erros principalmente quando o programa escala. No âmbito do projeto DeDuCe este trabalho visa a reduzir o esforço do programador exigindo uma contribuição simples e intuitiva por parte do mesmo ao nível da declaração de dados. Seguindo esta abordagem, o raciocínio é centralizado e todos os acessos aos dados replicados são identificados automaticamente. Após identificar quais operações acedem a dados replicados, estas operações são testadas de modo a verificar se comutam e são definidas relações para cada par de operações As operações que não tenham conflitos são refatorizadas numa versão comutativa capaz de executar sem coordenação. Neste contexto, o foco desta tese passa por estender a análise em tempo de compilação aplicada à linguagem Java capaz de computar a comutatividade entre operações a partir das anotações do programador. Para além de estender a análise de comutatividade a objetos, também serão especificadas as condições para que exista comutatividade nas operações. Concluímos o trabalho avaliando a correção e a escalabilidade. É mostrada a correção dos efeitos extraídos e dos resultados produzidos por cada uma das fases da análise. É analisada a distribuição de tempo em cada uma das fases internas da solução, e é procurado perceber como escala o tempo de compilação quando o tamanho do código fonte é aumentado. Finalmente é avaliado o tempo necessário para determinar se duas chamadas a métodos comutamPaulino, HervéRUNVaz, Rúben Alexandre Correia2024-02-28T15:44:09Z2023-122023-12-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10362/164248enginfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-03-11T05:51:36Zoai:run.unl.pt:10362/164248Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-20T04:00:06.777607Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Identifying operation commutativity in the Context of Replicated Systems
title Identifying operation commutativity in the Context of Replicated Systems
spellingShingle Identifying operation commutativity in the Context of Replicated Systems
Vaz, Rúben Alexandre Correia
Distributed Systems
Replication
Commutativity Analysis
Concurrency control
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Identifying operation commutativity in the Context of Replicated Systems
title_full Identifying operation commutativity in the Context of Replicated Systems
title_fullStr Identifying operation commutativity in the Context of Replicated Systems
title_full_unstemmed Identifying operation commutativity in the Context of Replicated Systems
title_sort Identifying operation commutativity in the Context of Replicated Systems
author Vaz, Rúben Alexandre Correia
author_facet Vaz, Rúben Alexandre Correia
author_role author
dc.contributor.none.fl_str_mv Paulino, Hervé
RUN
dc.contributor.author.fl_str_mv Vaz, Rúben Alexandre Correia
dc.subject.por.fl_str_mv Distributed Systems
Replication
Commutativity Analysis
Concurrency control
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Distributed Systems
Replication
Commutativity Analysis
Concurrency control
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description Distributed systems often resort to data replication not only to enhance their availability but also to reduce user-perceived latency by balancing the load between replicas and routing their requests accordingly. Several systems resort to strong consistency to ensure high availability, although some systems are not allowed to weaken their consistency model. Recognizing the tension between consistency and high availability, many systems allow multiple consistency levels to coexist. However, most of those systems require that the programmer explicitly specifies each operation’s consistency level or declare the operation’s invariants and side effects. Reasoning about the system’s correctness becomes more challenging as the code scales. For instance, a single missing side effect identification may silently adulterate the application’s behavior. As part of the DeDuCe research project, this work aims to reduce the programmer’s effort by only requiring the programmer to introduce a simple and intuitive input at data declaration. Following this approach, the reasoning is centralized, and all accesses to replicated data are identified automatically. By identifying which operations access to replicated data, these operations are analyzed for commutativity, and conflict relations are defined for each operations pair. Conflict-free operations will be refactored to a commutative version capable of executing without global coordination. In this context, this thesis focuses on extending compile-time commutativity analysis applied to the Java language able to compute operation pairwise commutativity from the input given at data declaration. In addition, to extend commutativity analysis to objects, we specify which are the conditions that guarantee commutativity for an operations pair. We conclude our work by evaluating correctness and scalability. We show the correctness of the effects extraction and the produced outputs of each stage of the analysis. We analyze the time distribution in the inner stages of the analysis, and we seek to comprehend how the compile time scales when the size of the source code increases. Finally, we quantify the time required to determine if two method calls commute.
publishDate 2023
dc.date.none.fl_str_mv 2023-12
2023-12-01T00:00:00Z
2024-02-28T15:44:09Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10362/164248
url http://hdl.handle.net/10362/164248
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799138177157431296