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.
| Aspecto | En proceso | Remoto |
|---|---|---|
| Cadena de conexión | zaris://inproc/store | zaris(s)://host:port/store |
| Ejecución | Dentro del proceso de tu aplicación | A través de varios nodos |
| Red | Ninguna | Requerida |
| TLS | No disponible | Disponible mediante zariss:// |
| Configuración | Ninguna | Instalación requerida |
| Escala | Instancia única | Varias instancias |
| Coordinación | Local al proceso | Compartida entre instancias |
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");