Saltar al contenido principal

En proceso y remoto

Clustron Zaris se ejecuta de dos maneras: en proceso (embebido en tu aplicación) y remoto (conectado a un clúster). Este artículo explica en qué se diferencian las dos, cuándo usar cada una y cómo cambiar entre ellas.

Ambas usan la API de cliente y el modelo de programación idénticos. Escribes tu código una vez, y la elección entre en proceso y remoto se expresa enteramente mediante qué cadena de conexión usas — zaris://inproc/store para embebido, zaris://host:port/store (o zariss:// para TLS) para un clúster. Como solo cambia la cadena, puedes empezar en proceso durante el desarrollo y pasarte a un clúster en producción sin tocar el código de la aplicación.

En proceso​

Un almacén en proceso se ejecuta dentro del propio proceso de tu aplicación. No hay servidor separado ni conexión de red implicados, y los datos se mantienen en memoria. Lo seleccionas con el host reservado inproc:

zaris://inproc/orders

Usa en proceso cuando quieras ejecutar sin infraestructura:

  • Desarrollo local, donde el almacén arranca y se detiene con tu aplicación.
  • Pruebas unitarias y de integración, donde necesitas un almacén pero no un clúster.
  • Aplicaciones de instancia única que no comparten datos entre procesos.

Como no hay salto de red, en proceso es la forma más rápida de ejecutar el almacén. Un almacén en proceso no puede usar TLS — no hay conexión de red que asegurar.

Remoto​

Una conexión remota alcanza un almacén que se ejecuta a través de un clúster de nodos. Un nodo es una única instancia en ejecución del almacén, normalmente una por máquina. Los nodos se comunican por la red para replicar datos y coordinar el trabajo entre las instancias de aplicación. Lo seleccionas listando uno o varios hosts semilla:

zaris://node-a:7861,node-b:7861/orders
zariss://node-a:7863/orders?ca=/etc/zaris/ca.pem

Los hosts separados por comas son una lista semilla que el cliente usa para descubrir el resto del clúster y para hacer failover. Usa remoto cuando un solo proceso no sea suficiente:

  • Sistemas de producción que necesitan alta disponibilidad.
  • Aplicaciones que se ejecutan como varias instancias y deben compartir estado.
  • Cargas de trabajo que deben escalar a más de una máquina.

Elige una forma​

La siguiente tabla compara las dos para que puedas decidir cuál encaja en un entorno dado.

AspectoEn procesoRemoto
Cadena de conexiónzaris://inproc/storezaris(s)://host:port/store
EjecuciónDentro del proceso de tu aplicaciónA través de varios nodos
RedNingunaRequerida
TLSNo disponibleDisponible mediante zariss://
ConfiguraciónNingunaInstalación requerida
EscalaInstancia únicaVarias instancias
CoordinaciónLocal al procesoCompartida entre instancias
tip

El modelo mental que conviene conservar es "en proceso hoy, remoto mañana." Construye y prueba con zaris://inproc/..., luego cambia a una cadena zaris://host.../... cuando necesites disponibilidad o escala. La misma ruta de código sirve para ambas.

Cambiar entre ellas​

Seleccionas en proceso o remoto mediante la cadena de conexión, no mediante código. Mantén la cadena en la sección ConnectionStrings y varía su valor por entorno (consulta Obtener un cliente).

Un almacén en proceso:

{
"ConnectionStrings": {
"orders": "zaris://inproc/orders"
}
}

Un clúster remoto — misma clave, valor distinto:

{
"ConnectionStrings": {
"orders": "zaris://node-a:7861,node-b:7861/orders"
}
}

El código de aplicación que registra y llama al almacén es idéntico en ambos casos:

services.AddClustronZaris(configuration, "orders");

var client = await provider.GetAsync("orders");
await client.PutAsync("key", "value");

Próximos pasos​