0
votes

Comment les bases de données synchronisent les données entre les volumes persistants dans Kubernetes

Je viens de lire la rubrique Deploying Cassandra with Stateful Sets dans la documentation de Kubernetes. Le processus de déploiement: 1. Création de StorageClass 2. Création de PersistentVolume (dans mon cas 4 PersistentVolume). Ensemble créé dans 1) storageClassName 3. Création de Cassandra Headless Service 4. Utilisation d'un StatefulSet pour créer un anneau Cassandra - paramètre créé dans 1) storageClassName dans la définition yml StatefulSet.

En conséquence, il y a 4 pods: Cassandra-0, Cassandra-1, Cassandra-2, Cassandra-4, qui sont montés sur 2) volumes (pv-0, pv-1, pv-2, pv-3). Je me demande comment / si ces volumes persistants synchronisent les données entre eux.

Par exemple si j'ajoute un enregistrement, qui sera écrit par le pod cassandra-0 dans le volume persistant pv-0, alors si quelqu'un qui va récupérer des données de la base de données un instant plus tard - en utilisant le pod / pv cassandra-1 verra des données qui a été ajouté à pv-0. Quelqu'un peut-il me dire comment cela fonctionne exactement?


0 commentaires

4 Réponses :


2
votes

Le mécanisme de diffusion des données entre les clusters est indépendant s'il a été déployé dans des instances Kubernetes ou bare-metal. Cassandra essaiera de répartir aléatoirement les données sur les nœuds en fonction d'une valeur de hachage (appelée jeton), et utilisera le même algorithme pour récupérer les informations.

Il y a d'autres facteurs à prendre en compte: le facteur de réplication (nombre de copies) et le niveau de cohérence utilisé.

Vous voudriez jeter un œil à DS201: DataStax Enterprise Foundations of Apache Cassandra ™ dans Datastax academy , où ils couvrent les bases de Cassandra.


0 commentaires

1
votes

Juste pour étendre légèrement la réponse de Carlos, Kubernetes n'est pas impliqué et les volumes sont complètement isolés. Les tâches de réplication et de distribution sont entièrement à la charge du logiciel de base de données. Pour K8, ce ne sont que des processus séparés et des volumes séparés.


0 commentaires

2
votes
  1. Ceci n'est pas lié à Kubernetes

  2. La réplication se fait par base de données et est configurable

  3. Voir le théorème CAP et la cohérence éventuelle pour Cassandra

  4. Vous pouvez contrôler le niveau de cohérence dans Cassandra, que l'enregistrement soit immédiatement mis à jour ou plus tard, cela dépend de la configuration que vous effectuez dans Cassandra.

  5. Voir aussi: Réplication synchrone, réplication asynchrone

Cohérence Cassandra:

comment définir la cohérence de lecture et d'écriture de Cassandra < / p>

Comment le niveau de cohérence est-il configuré?


0 commentaires

0
votes

Merci pour les commentaires les gars! donc, quand j'ai ma base de données avec 3 PV:

cassandra-pod0  cassandra-pod1 cassandra-pod2
     |                 |             |
cassandra-pv0   cassandra-pv0   cassandra-pv0 

Les données sont divisées en 3 pvs.Lorsque je tue cassandra-pod1 - il est possible que je perde (temporairement) une partie des données . Ai-je raison?


1 commentaires

Cela dépendra du facteur de réplication de la table et des niveaux de cohérence des lectures et des écritures. Dans le cas proposé, si vous avez un facteur de réplication de 3 (3 copies), et un niveau de cohérence de QUORUM, les requêtes pourront être satisfaites avec un nœud vers le bas.