Author(s):
Fonte, Victor
Date: 2009
Persistent ID: http://hdl.handle.net/1822/8947
Origin: RepositóriUM - Universidade do Minho
Description
Tese de Doutoramento - Área do Conhecimento Tecnologias da Programação A causalidade desempenha um papel central no tratamento de problemas importantes
de sistemas distribuídos, tais como na replicação de dados, na análise de
execuções, na comunicação em grupo e na determinação de estados globais. Por
forma a ser útil, a causalidade precisa de ser concretizada em mecanismos que
procedam ao seu registo.
Os mecanismos existentes, tais como os vectores versão e os relógios vectoriais,
assumem a existência de um mapeamento entre identificadores globalmente únicos
e contadores inteiros. Num sistema em que é conhecido o número de entidades, é
possível pré-configurar estes identificadores por forma a ocuparem posições distintas
num vector ou serem-lhe atribuídos nomes distintos. A gestão destas identidades
é bem mais problemática em ambientes dinâmicos, com grande número de
entidades e onde estas são permanentemente criadas e destruídas. Esta situação é
agravada na presença de partições de rede. As soluções actuais para o registo de
causalidade não se revelam apropriadas a estes cenários, cada vez mais relevantes.
Esta tese apresenta novos mecanismos de registo de causalidade que têm a propriedade
de poder ser usados em cenários com um número dinâmico de entidades.
Estes mecanismos permitem a criação descentralizada de entidades (processos ou
réplicas) sem requerer identificadores globais ou coordenação global para a sua
geração. Estes mecanismos apresentam codificações com tamanho variável, o que
permite uma adaptação automática ao número de entidades em jogo, crescendo e
colapsando de acordo com as necessidades. Causality plays a central role as a building block in solving important problems
in distributed systems, such as replication, debugging, group communication and
global snapshots. To be useful, causality must be realised by actual mechanisms
that can track it and encode it.
Existing causality tracking mechanisms, such as vector clocks and version vectors,
rely on mappings from globally unique identifiers to integer counters. In a
system with a well known set of entities these identifiers can be pre-configured
and given distinct positions in a vector or distinct names in a mapping. Identity
management is more problematic in dynamic systems, with a large and highly variable
number of entities, being worsened when network partitions occur. Present
solutions for causality tracking are not appropriate to these increasingly common
scenarios.
This thesis introduces novel causality tracking mechanisms that can be used in
scenarios with a dynamic number of entities. These allow completely decentralised
creation of entities (processes or replicas) with no need for global identifiers or
global coordination. These mechanisms have a variable size representation that
adapts automatically to the number of entities, growing or shrinking appropriately.
Document Type
Doctoral Thesis
Language
English
Advisor(s)
Baqueo Moreno, Carlos; Almeida, Paulo Sérgio