Patrones de sistemas distribuidos
Tres ayudantes viven al lado de la aplicación, en la misma unidad atómica, compartiendo su ciclo de vida. Lo que los separa es la dirección:
- Sidecar: el caso general. Agrega una capacidad sin tocar el código.
- Ambassador: mira hacia afuera en nombre de la aplicación; sus llamadas salientes pasan por él.
- Adapter: mira hacia adentro en nombre del mundo; normaliza la salida al formato que el exterior espera.
Réplicas y salud
Las réplicas son intercambiables porque no guardan estado del pedido; guardar la sesión en memoria rompe eso y obliga a fijar cada usuario a una instancia. La sonda de liveness decide cuándo reiniciar el contenedor; la de readiness, cuándo está listo para recibir tráfico, y al fallar se le quita la dirección de los endpoints sin reiniciarlo; la de startup contiene a las otras dos mientras la aplicación levanta.
Escala y coordinación
El sharding reparte los datos: el hash reparte parejo y mata los recorridos por rango; el rango los conserva y expone shards calientes. El hashing consistente acota el movimiento de claves al cambiar la cantidad de nodos.
En scatter/gather la respuesta no es más rápida que la hoja más lenta; se convive con eso mediante peticiones de respaldo, timeouts con resultado parcial y micro-particionado.
El consenso —Paxos, Raft— da acuerdo con quórum de mayoría, no disponibilidad; un lease solo es seguro con tokens de cercado que verifica el recurso. Cierran la unidad los patrones batch.