Identifying operation commutativity in the Context of Replicated Systems
Autor(a) principal: | |
---|---|
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 |