6 research outputs found
On reducing the complexity of matrix clocks
Matrix clocks are a generalization of the notion of vector clocks that allows
the local representation of causal precedence to reach into an asynchronous
distributed computation's past with depth , where is an integer.
Maintaining matrix clocks correctly in a system of nodes requires that
everymessage be accompanied by numbers, which reflects an exponential
dependency of the complexity of matrix clocks upon the desired depth . We
introduce a novel type of matrix clock, one that requires only numbers to
be attached to each message while maintaining what for many applications may be
the most significant portion of the information that the original matrix clock
carries. In order to illustrate the new clock's applicability, we demonstrate
its use in the monitoring of certain resource-sharing computations
Bounded version vectors
Version vectors play a central role in update tracking under optimistic distributed systems, allowing the detection of obsolete or inconsistent versions of replicated data. Version vectors do not have a bounded representation; they are based on integer counters that grow indefinitely as updates occur. Existing approaches to this problem are scarce; the mechanisms proposed are either unbounded or operate only under specific settings. This paper examines version vectors as a mechanism for data causality tracking and clarifies their role with respect to vector clocks. Then, it introduces bounded stamps and proves them to be a correct alternative to integer counters in version vectors. The resulting mechanism, bounded version vectors, represents the first bounded solution to data causality tracking between replicas subject to local updates and pairwise symmetrical synchronization.FCT project POSI/ICHS/44304/2002, FCT under grant BSAB/390/2003
A Model-Based Approach for Reconciliation of Polychronous Execution Traces
International audienceEmbedded systems are very difficult to design and debug because of the limited access to the device itself. Therefore, debugging usually requires to instrument the code so as to produce execution traces that are then monitored from a base station. Such an intrusive method has a direct impact on performances. In case of multiple interacting embedded targets the problem is even more severe and is not limited to computations but also spreads to communications. To reduce the communication overhead, we propose an approach in which unsynchronized traces from several targets are reconciled a posteriori. Since each target has its own time base without a built-in clock synchronization protocol, our approach requires a multi-clock reconciliation specification. This paper describes our model-based proposal developed during the ANR project RT-Simex. The different steps of the reconciliation are illustrated on a simple case-study used in the project, a terrestrial robot controlled in position
A Semantic Consistency Model to Reduce Coordination in Replicated Systems
Large-scale distributed applications need to be available and responsive to satisfy millions
of users, which can be achieved by having data geo-replicated in multiple replicas.
However, a partitioned system cannot sustain availability and consistency at fully.
The usage of weak consistency models might lead to data integrity violations, triggered
by problematic concurrent updates, such as selling twice the last ticket on a flight company
service. To overcome possible conflicts, programmers might opt to apply strong
consistency, which guarantees a total order between operations, while preserving data
integrity. Nevertheless, the illusion of being a non-replicated system affects its availability.
In contrast, weaker notions might be used, such as eventual consistency, that boosts
responsiveness, as operations are executed directly at the source replica and their effects
are propagated to remote replicas in the background. However, this approach might put
data integrity at risk. Current protocols that preserve invariants rely on, at least, causal
consistency, a consistency model that maintains causal dependencies between operations.
In this dissertation, we propose a protocol that includes a semantic consistency model.
This consistency model stands between eventual consistency and causal consistency. We
guarantee better performance comparing with causal consistency, and ensure data integrity.
Through semantic analysis, relying on the static analysis tool CISE3, we manage
to limit the maximum number of dependencies that each operation will have. To support
the protocol, we developed a communication algorithm in a cluster. Additionally,
we present an architecture that uses Akka, an actor-based middleware in which actors
communicate by exchanging messages. This architecture adopts the publish/subscribe
pattern and includes data persistence. We also consider the stability of operations, as well
as a dynamic cluster environment, ensuring the convergence of the replicated state. Finally,
we perform an experimental evaluation regarding the performance of the algorithm
using standard case studies. The evaluation confirms that by relying on semantic analysis,
the system requires less coordination between the replicas than causal consistency,
ensuring data integrity.Aplicações distribuídas em larga escala necessitam de estar disponíveis e de serem responsivas
para satisfazer milhões de utilizadores, o que pode ser alcançado através da
geo-replicação dos dados em múltiplas réplicas.
No entanto, um sistema particionado não consegue garantir disponibilidade e consistência
na sua totalidade. O uso de modelos de consistência fraca pode levar a violações da
integridade dos dados, originadas por escritas concorrentes problemáticas. Para superar
possíveis conflitos, os programadores podem optar por aplicar modelos de consistência
forte, originando uma ordem total das operações, assegurando a integridade dos dados.
Em contrapartida, podem ser utilizadas noções mais fracas, como a consistência eventual,
que aumenta a capacidade de resposta, uma vez que as operações são executadas diretamente
na réplica de origem e os seus efeitos são propagados para réplicas remotas. No
entanto, esta abordagem pode colocar em risco a integridade dos dados. Os protocolos
existentes que preservam as invariantes dependem, pelo menos, da consistência causal,
um modelo de consistência que mantém as dependências causais entre operações.
Nesta dissertação propomos um protocolo que inclui um modelo de consistência semântica.
Este modelo situa-se entre a consistência eventual e a consistência causal. Garantimos
um melhor desempenho em comparação com a consistência causal, e asseguramos
a integridade dos dados. Através de uma análise semântica, obtida através da ferramenta
de análise estática CISE3, conseguimos limitar o número de dependências de cada operação.
Para suportar o protocolo, desenvolvemos um algoritmo de comunicação entre
um aglomerado de réplicas. Adicionalmente, apresentamos uma arquitetura que utiliza
Akka, um middleware baseado em atores que trocam mensagens entre si. Esta arquitetura
utiliza o padrão publish/subscribe e inclui a persistência dos dados. Consideramos também
a estabilidade das operações, bem como um ambiente dinâmico de réplicas, assegurando
a convergência do estado. Por último, apresentamos a avaliação do desempenho do algoritmo
desenvolvido, que confirma que a análise semântica das operações requer menos
coordenação entre as réplicas que a consistência causal
Cheaper Matrix Clocks
Matrix clocks have nice properties that can be used in the context of distributed database protocols and fault tolerant protocols. Unfortunately, they are costly to implement, requiring storage and communication overhead of size O(n²) for a system of n sites. They are often considered a non feasible approach when the number of sites is large. In this paper, we firstly describe an efficient incremental algorithm to compute the matrix clock, which achieves storage and communication overhead of size O(n) when the sites of the computation are "well synchronized". Secondly, we introduce the k-matrix clock: an approximation to the genuine matrix clock that can be computed with a storage and communication overhead of size O(kn). k-matrix clocks can be useful to implement fault-tolerant protocols for systems with crash failure semantics such that the maximum number of simultaneous faults is bounded by k - 1