Un grupo Raft por rango

Por qué cada rango de TeselaDB acuerda sus escrituras con sus propias réplicas y qué ganas con ello.

TeselaDB

TeselaDB

Equipo de TeselaDB

2 min de lectura

  • Raft
  • rangos
  • replicación

En TeselaDB, cada rango de claves es un grupo Raft propio. Sus réplicas acuerdan el orden de sus escrituras entre ellas, sin pasar por un coordinador central. Aquí tienes cómo funciona y qué implica para tu aplicación.

Qué es un rango

Un rango es un intervalo [inicio, fin) del espacio de claves ordenado. Una colección empieza en un rango y se divide cuando supera 64 MiB de datos vivos o 512 MiB en disco con sus versiones, o cuando recibe demasiada carga. Cada rango tiene sus réplicas en varios nodos y es la unidad que el clúster replica y reparte, que es también la unidad que se divide cuando cruza uno de esos límites.

Cómo se confirma una escritura

Una réplica de cada rango es la líder. Propone las escrituras en su log, y una entrada se aplica cuando la tiene en disco la mayoría de las réplicas. Con su lease, la líder responde lecturas sin preguntar a las demás. Un seguidor puede servir lecturas hasta su marca cerrada, que la líder publica 3 segundos por detrás de su reloj.

   rango 42                 rango 43
 ┌─────────────┐         ┌─────────────┐
 │ líder  n1   │         │ líder  n2   │
 │ réplica n2  │         │ réplica n3  │
 │ réplica n3  │         │ réplica n1  │
 └─────────────┘         └─────────────┘

Muchos grupos en cada núcleo

Un nodo lleva muchos rangos. Cada núcleo de cada nodo lleva muchos grupos a la vez, y su log de Raft es también el log de escritura del almacenamiento, así que una escritura no se guarda dos veces en disco. Los metadatos del clúster, como los nodos, el catálogo y la lista de rangos, viven en otro grupo Raft, Group 0.

Qué ganas

Los rangos son independientes. Un problema en uno no frena a los demás. Si cae un nodo, cada rango que lideraba elige una líder nueva entre sus réplicas y sigue aceptando escrituras mientras responda la mayoría. Una escritura confirmada con w: "majority" sobrevive a la caída de cualquier minoría de réplicas de su rango.

Lo que cuesta

Un rango necesita la mayoría de sus réplicas para aceptar escrituras, así que cada escritura espera al disco de esa mayoría. Si repartes las réplicas entre centros de datos lejanos, esa espera se nota en la latencia. Más detalles en Consenso con Raft en cada rango y Rangos y réplicas.

Todos los artículos