Almacén
Un almacén es la unidad central contra la que trabajas en Clustron Zaris. Cada operación de datos y de coordinación ocurre dentro de un almacén, y el almacén define el límite dentro del cual esas operaciones son consistentes y están aisladas.
Qué es un almacén
Un almacén es un clúster lógico. Es un contenedor para tus datos y tus primitivas de coordinación, y es el límite para la consistencia y la gestión del ciclo de vida — el ámbito dentro del cual las claves, locks, contadores y leases se relacionan entre sí. Siempre interactúas con Clustron Zaris a través de un almacén; no hay un nivel inferior que direcciones directamente.
La misma abstracción de almacén funciona tanto si se ejecuta dentro de un proceso como a través de muchas máquinas. Lo que cambia entre esos casos es el número de nodos detrás del almacén, no cómo lo usas.
Un almacén, muchos nodos
En modo distribuido, un almacén está respaldado por varios nodos. Un nodo es una única instancia en ejecución del almacén. Los nodos comparten los datos y el estado de coordinación del almacén y se presentan ante ti como una única unidad lógica:
Store (TestStore)
├── Node 1
├── Node 2
└── Node N
Cada nodo participa en el clúster, los datos y el estado de coordinación se comparten entre ellos, y el sistema se comporta como un único almacén. No enrutas solicitudes a nodos específicos por tu cuenta — los clientes pueden conectarse a cualquier nodo, y el clúster se coordina entre bastidores.
Almacenes en proceso y distribuidos
El mismo almacén se ejecuta en dos modos. En modo en proceso se ejecuta enteramente dentro de tu aplicación, sin comunicación de red y sin dependencias externas:
Application
└── Store (InProc)
En modo distribuido el almacén se ejecuta a través de máquinas — por ejemplo Node 1 en la máquina A, Node 2 en la máquina B, Node 3 en la máquina C. Los nodos se comunican entre sí, los clientes pueden conectarse a cualquiera de ellos, y el clúster mantiene el estado compartido. La API es idéntica en ambos modos, así que la diferencia es dónde se ejecuta el almacén, no cómo programas contra él. Modos en proceso y distribuido cubre las concesiones.
Nombrar un almacén
Cada almacén tiene un nombre único, como TestStore, orders o cache. El nombre es el identificador que usas para crear el almacén, conectar clientes a él, y resolverlo desde la configuración. Como el nombre es cómo todo encuentra el almacén, mantenlo estable y descriptivo.
Un almacén es un límite
Lo más importante que entender sobre un almacén es que traza límites estrictos. Estos límites son lo que convierte a los almacenes en una unidad de aislamiento sobre la que puedes razonar.
- Límite de datos. Las claves viven dentro de un almacén. Almacenes distintos nunca comparten datos, y cada almacén mantiene su propio espacio de claves. Una clave en un almacén es invisible para otro.
- Límite de coordinación. Los locks, contadores y watches están acotados a un único almacén. No hay coordinación entre almacenes — un lock en un almacén no significa nada en otro.
- Límite de fallos. El fallo y la recuperación ocurren dentro de un almacén. Cada almacén opera de forma independiente, de modo que los problemas en uno no se extienden a otro.
Ejecutar varios almacenes
Como cada almacén está aislado, puedes ejecutar varios en el mismo entorno — por ejemplo orders-store, inventory-store y session-store. Cada uno se gestiona de forma independiente, lo que te permite aislar cargas de trabajo, escalar un almacén específico por sí solo, y aplicar una configuración distinta por almacén. Esta es la razón principal por la que los almacenes son la unidad de escala y modularidad en Clustron Zaris: particionas tu sistema a lo largo de los límites de los almacenes y tratas cada almacén como su propia incumbencia.