Saltar al contenido principal

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.

Próximos pasos​