Dos packs salen juntos: v1.5 — Almacenamiento y ciclo de vida y v1.6 — Operaciones, controlador y cuotas. Entre ambos aportan al Kafka Simulator 19 escenarios nuevos, el temario llega a 74 de 122, y el modo libre termina la escalera de formas de clúster que empezó en la v1.3.
Esta vez arrancamos por el modo libre, porque son estos dos desbloqueos los que más se han pedido.
Modo libre: la escalera de topologías está completa
Desde la v1.3 el sandbox creció una forma de clúster por pack: primero activo/pasivo, luego activo/activo. Ambos son dos clústeres unidos por un mirror asíncrono. Las dos formas que llegan ahora son de otra clase: un único clúster estirado entre centros de datos, donde la replicación es síncrona y el propio ISR cruza la WAN.
La diferencia aparece en cuanto algo falla:
- En un par replicado, perder una región es un failover: promocionas el otro lado y aceptas lo que el mirror no había copiado todavía.
- En un clúster estirado, perder un DC es un evento de replicación: el ISR se encoge, y si puedes seguir escribiendo depende únicamente de
min.insync.replicas.
3-DC estirado (nuevo en v1.5)
Tres centros de datos, un clúster. El sandbox por defecto te da un broker y un controlador en cada uno de dc-a, dc-b y dc-c, con los brokers intercalados para que la colocación round-robin reparta las réplicas de cada partición por los tres emplazamientos. Tres particiones, así que cada DC abre con un líder natural, así que el diseño muestra liderazgo equilibrado entre DCs en vez de una partición solitaria.
Hay un quórum KRaft repartido entre los tres emplazamientos, no uno por región. Mata un DC y pierdes un votante de tres; los dos restantes siguen formando mayoría y el clúster sigue tomando decisiones.
2,5-DC estirado (nuevo en v1.6)
El último peldaño: dos centros de datos con datos más un tercer emplazamiento testigo que sostiene un voto de controlador y ningún dato.
Es la forma MRC de Confluent. Cada DC con datos recibe 2 réplicas síncronas y 1 observador — RF 4 en el conjunto síncrono, con min.insync.replicas 3. Dos cosas sobre los observadores:
- No cuentan para el ISR, así que no retienen una escritura
acks=all. Una réplica al otro lado de la WAN que condicionara cada commit sería un desastre de latencia; un observador es cómo mantienes una copia remota sin pagarla en el camino de escritura. - Cuando el ISR cae por debajo de
min.insync.replicas, un observador puede ser promocionado automáticamente para restaurar la durabilidad. El sandbox por defecto promociona al caer el ISR y vuelve a degradarlo cuando el DC se recupera; también puede quedarse promocionado, o puedes apagar la automatización y hacerlo a mano.
El testigo encaja directamente con los escenarios de controlador de esta entrega. Un quórum quiere un número impar de votantes, y comprar un tercer centro de datos completo para conseguirlo es caro — así que compras medio. El escenario 06.0.2 («quórum KRaft») termina justo en el fallo que el testigo existe para evitar; ahora puedes montar los dos despliegues en el sandbox y compararlos.
Con esto, las cinco formas de clúster están disponibles: DC único, activo/pasivo, activo/activo, 3-DC estirado y 2,5-DC estirado. Cada desbloqueo restante del modo libre — el laboratorio de fallos en v1.7, el terminal CLI de Kafka en v1.8, la gobernanza en v1.9 — es una capacidad nueva, no una forma nueva.
La misma salvedad que en la v1.3: el temario de DR que narra estas topologías sigue llegando en la v1.8. Las formas llegan antes a propósito, para que haya dónde probar las ideas antes de que los escenarios las expliquen.
Si mientras tanto quieres leer más sobre arquitecturas multirregión, la guía de SoftwareMill sobre recuperación ante desastres y arquitecturas multirregión en Apache Kafka es un tratamiento a fondo de los compromisos que estas formas codifican. Vale la pena tenerla abierta en otra pestaña mientras juegas con el sandbox.
Los escenarios
v1.5 — Almacenamiento y ciclo de vida (9 escenarios)
Un log de Kafka no es una cinta infinita. Este módulo cubre qué le pasa a los registros después de escribirlos, en tres grupos.
Retención — retention.ms y retention.bytes avanzando el log start offset, y qué recibe un consumidor que pide un offset que la retención ya borró (OFFSET_OUT_OF_RANGE, y el reset que viene después).
Compactación — cleanup.policy=compact conservando el último valor por clave, preservando offsets y dejando huecos; tombstones que borran una clave, con delete.retention.ms como ventana de gracia para que un consumidor observe el borrado antes de que se purgue; y compact,delete ejecutando ambas políticas a la vez.
Almacenamiento por niveles — descargar un prefijo envejecido del log al nivel remoto, volver a leerlo, y la diferencia entre retención local y total. Este grupo es el que más cambia cómo dimensionas un clúster: la retención local deja de ser lo que limita hasta dónde atrás puede leer un consumidor.
v1.6 — el plano de control (kraft, 4 escenarios)
Qué hace el controlador, y qué se detiene cuando no está:
- El trabajo del controlador y el quórum KRaft — el controlador mantiene consistentes los metadatos, no los datos. Pierde la mayoría del quórum y no hay controlador: los líderes se quedan donde están y nada nuevo se decide hasta que vuelva un votante.
- Failover del controlador y puesta al día de metadatos — un nuevo controlador activo debe alcanzar el offset de metadatos confirmado antes de poder servir, y por eso las elecciones se congelan un momento tras un failover.
- ZooKeeper frente a KRaft — el mismo clúster bajo dos planos de control, lado a lado.
v1.6 — operaciones (operations, 6 escenarios)
Lo que un operador cambia en un clúster en marcha, y lo que cuesta cada cambio:
- Escalar hacia fuera y el rebalanceo que sigue; escalar hacia dentro, drenando un broker antes de retirarlo.
- Reasignación de particiones a mano, y la misma reasignación limitada bajo carga — donde ves a una réplica nueva entrar tarde en el ISR porque le pusiste techo a su ritmo de puesta al día para proteger el tráfico vivo.
- Cambios de configuración en caliente y cuotas de cliente que estrangulan a un productor retrasando sus respuestas en vez de descartar datos.
Lo que viene
74 de 122 escenarios, siete packs entregados y un sandbox de modo libre que ya puede modelar todas las formas de clúster a las que se referirá el resto del temario. Lo siguiente es la v1.7 y el laboratorio de fallos: inyectar muertes de brokers y particiones de red en cualquiera de esas cinco formas, bajo demanda.
Abre el simulador, arranca un sandbox de 2,5-DC y mata un DC con datos, y mira cómo un observador es promocionado para mantenerte por encima de min.insync.replicas.