You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2024/09/04 09:49:59 UTC
(james-project) 18/20: [Antora] Adapt after partial - [DOC] Minor fixes to consistency-model.adoc (#2368)
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 6a0f5718830eaded735959fe23e57399ffef0ba8
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Fri Aug 30 08:47:41 2024 +0700
[Antora] Adapt after partial - [DOC] Minor fixes to consistency-model.adoc (#2368)
Adapt commit: fe339838bdd548938ff01c83f92d17a6bd687200
---
.../consistency_model_data_replication_extend.adoc | 4 +++-
.../servers/partials/architecture/consistency-model.adoc | 15 ++++++++++-----
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/docs/modules/servers/pages/distributed/architecture/consistency_model_data_replication_extend.adoc b/docs/modules/servers/pages/distributed/architecture/consistency_model_data_replication_extend.adoc
index d6e3cee915..08ac3316c5 100644
--- a/docs/modules/servers/pages/distributed/architecture/consistency_model_data_replication_extend.adoc
+++ b/docs/modules/servers/pages/distributed/architecture/consistency_model_data_replication_extend.adoc
@@ -12,7 +12,9 @@ link:https://cassandra.apache.org/doc/latest/operating/read_repair.html[Read rep
The {server-name} tries to mitigate inconsistencies by relying on
link:https://docs.datastax.com/en/archived/cassandra/3.0/cassandra/dml/dmlConfigConsistency.html[QUORUM] read and write levels.
-This means that a majority of replica are needed for read and write operations to be performed.
+This means that a majority of replica are needed for read and write operations to be performed. This guaranty is needed
+as the Mailbox is a complex datamodel with several layers of metadata, and needs "read-your-writes" guaranties that QUORUM
+read+writes delivers.
Critical business operations, like UID allocation, rely on strong consistency mechanisms brought by
link:https://www.datastax.com/blog/2013/07/lightweight-transactions-cassandra-20[lightweight transaction].
diff --git a/docs/modules/servers/partials/architecture/consistency-model.adoc b/docs/modules/servers/partials/architecture/consistency-model.adoc
index c104535b0a..2c6ce8f168 100644
--- a/docs/modules/servers/partials/architecture/consistency-model.adoc
+++ b/docs/modules/servers/partials/architecture/consistency-model.adoc
@@ -6,9 +6,11 @@ points to the tools built around it.
The {server-name} relies on different storage technologies, all having their own
consistency models.
-These data stores replicate data in order to enforce some level of availability. We call
-this process replication. By consistency, we mean the ability for all replica to hold the
-same data. By availability, we mean the ability for a replica to answer a request.
+These data stores replicate data in order to enforce some level of availability.
+
+By consistency, we mean the ability for all replica to hold the same data.
+
+By availability, we mean the ability for a replica to answer a request.
In distributed systems, link:https://en.wikipedia.org/wiki/CAP_theorem[according to the CAP theorem],
as we will necessarily encounter network partitions, then trade-offs need to be made between
@@ -27,8 +29,9 @@ Be aware that data is asynchronously indexed in OpenSearch, changes will be even
=== RabbitMQ consistency model
-The {server-name} relies out of the box on a single RabbitMQ server, thus consistency concerns
-are not (yet) applicable. Availability concerns are applicable.
+The {server-name} can be set up to rely on a RabbitMQ cluster. All queues can be set up in an high availability
+fashion using link:https://www.rabbitmq.com/docs/quorum-queues[quorum queues] - those are replicated queues using the link:https://raft.github.io/[RAFT] consensus protocol and thus are
+strongly consistent.
include::{data_replication_extend}[]
@@ -49,6 +52,8 @@ The primary data stores are composed of {backend-name} for metadata and Object s
To ensure the data referenced in {backend-name} is pointing to a valid object in the object store, we write
the object store payload first, then write the corresponding metadata in {backend-name}.
+Similarly, metadata is destroyed first before the corresponding object is deleted.
+
Such a procedure avoids metadata pointing to un existing blobs, however might lead to some unreferenced
blobs.
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org