> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Enrutamiento con reconocimiento de réplicas

> Dirige solicitudes relacionadas a la misma réplica de ClickHouse Cloud para tablas temporales, sesiones, reutilización de caché y consistencia de lectura después de la escritura

export const EnterprisePlanFeatureBadge = ({feature = 'Esta funcionalidad', support = false, linking_verb_are = false}) => {
  return <div className="enterprisePlanFeatureContainer">
            <div className="enterprisePlanFeatureBadge">
                Funcionalidad del plan Enterprise
            </div>
            <div>
                <p>{feature} {linking_verb_are ? 'están' : 'está'} disponible{linking_verb_are ? 's' : ''} en el plan Enterprise. {support ? `Contacta con soporte para habilitar esta funcionalidad.` : 'Para cambiar de plan, visita la página de planes en la consola de Cloud.'}</p>
            </div>
        </div>;
};

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'Vista previa privada en ClickHouse Cloud'}
        </div>;
};

<PrivatePreviewBadge />

<EnterprisePlanFeatureBadge feature="Enrutamiento con reconocimiento de réplicas" support="true" />

El enrutamiento con reconocimiento de réplicas (también conocido como sesiones persistentes, enrutamiento con afinidad o afinidad de sesión) dirige las solicitudes relacionadas a la misma réplica de ClickHouse. Úselo cuando necesite que las [tablas temporales](/es/reference/statements/create/table/temporary-table) o el [estado de sesión con nombre](/es/concepts/features/interfaces/http#using-clickhouse-sessions-in-the-http-protocol) sigan estando disponibles entre consultas, cuando quiera que las consultas relacionadas reutilicen las cachés locales de la misma réplica o cuando necesite [consistencia de lectura después de la escritura](#read-after-write-consistency) entre una escritura y las lecturas posteriores.

Funciona según el mejor esfuerzo y no garantiza el aislamiento. El proxy asigna cada valor de enrutamiento a una réplica. La asignación se mantiene estable mientras no cambie el número de réplicas; al escalar el servicio, el valor puede asignarse a una réplica diferente.

<Warning>
  **Requiere la interfaz HTTP**

  El enrutamiento con reconocimiento de réplicas se aplica en la capa de proxy a través de la [interfaz HTTP/HTTPS](/es/concepts/features/interfaces/http) mediante el encabezado `X-ClickHouse-Replica-Tag`.

  El enrutamiento con reconocimiento de réplicas **no está disponible actualmente a través del protocolo nativo** (puerto nativo; por ejemplo, el driver [clickhouse-go](/es/integrations/language-clients/go/index) en su modo nativo predeterminado). Los client del protocolo nativo deben cambiar a HTTP y enviar el valor de enrutamiento en cada solicitud.
</Warning>

<div id="prerequisites">
  ## Prerrequisitos
</div>

* Tu servicio necesita **2 o más réplicas**. En un servicio con una sola réplica, no hay ninguna a la que anclarlo.
* Disponible en **Enterprise** de forma predeterminada cuando la función sea GA.
* Compatible con los servicios estándar de ClickHouse Cloud. [BYOC](/es/products/cloud/guides/infrastructure/deployment-options/byoc/overview) aún no es compatible.

<div id="configuring-replica-aware-routing">
  ## Configuración del enrutamiento con reconocimiento de réplicas
</div>

Abre un ticket de [soporte](https://clickhouse.com/support/program) y solicita que se habilite el enrutamiento de réplicas con afinidad basado en HTTP. Incluye el ID de tu servicio y por qué lo necesitas (tablas temporales, estado de la sesión, reutilización de caché o consistencia de lectura después de la escritura). No es necesario reiniciar.

<div id="http-based-routing">
  ## Enrutamiento basado en HTTP
</div>

Para asignar una carga de trabajo a una réplica concreta, envíe un encabezado `X-ClickHouse-Replica-Tag` a través de la [interfaz HTTPS](/es/concepts/features/interfaces/http). El proxy aplica hash consistente al valor del encabezado, por lo que las solicitudes que lo comparten se dirigen a la misma réplica mientras el número de réplicas no cambie. Un valor distinto se procesa como hash de forma independiente y puede asignarse a la misma réplica o a otra, pero no puede elegir *a qué* réplica se asigna un valor.

Use el nombre del host de su servicio existente. No se requieren nombres del host sticky especiales ni cambios en DNS. El valor del encabezado puede ser cualquier cadena que elija, como un nombre de aplicación, un ID de usuario o una etiqueta de carga de trabajo. Las solicitudes sin el encabezado mantienen el balanceo de carga normal.

Establezca el encabezado `X-ClickHouse-Replica-Tag` en cada solicitud:

```bash theme={null}
echo 'SELECT hostName()' | curl \
  -H 'X-ClickHouse-Replica-Tag: my-workload-1' \
  -H 'X-ClickHouse-User: default' \
  -H 'X-ClickHouse-Key: <password>' \
  'https://<host>:8443/' -d @-
```

Para clickhouse-go (v2), configure `Protocol: clickhouse.HTTP` y pase el encabezado mediante la [opción de conexión `HttpHeaders`](/es/integrations/language-clients/go/configuration#connection-settings).

<Info>
  `X-ClickHouse-Replica-Tag` proporciona afinidad con una réplica sin crear una sesión HTTP de ClickHouse. Las solicitudes concurrentes pueden reutilizar la misma etiqueta sin encontrarse con `SESSION_IS_LOCKED`.
</Info>

<div id="read-after-write-consistency">
  ### Consistencia de lectura después de la escritura
</div>

En un servicio con varias réplicas, es posible que una escritura en una réplica no sea visible en las demás hasta que la replicación se ponga al día. Envíe la escritura con un encabezado `X-ClickHouse-Replica-Tag` y reutilice el mismo valor de encabezado en las lecturas posteriores. El proxy enruta ambas solicitudes a la misma réplica, por lo que puede leer su propia escritura incluso si las demás réplicas aún están retrasadas. Este patrón es útil para cargas de trabajo que escriben y luego leen inmediatamente los mismos datos, como aplicaciones interactivas o jobs de ETL que validan las inserciones antes de continuar.

Para obtener garantías más amplias en todas las réplicas, también puede establecer [`select_sequential_consistency`](/es/reference/settings/session-settings#select_sequential_consistency) en `1` en ClickHouse Cloud.

<div id="check-which-replica">
  ### Compruebe qué réplica se ha utilizado
</div>

Ejecute de nuevo el ejemplo `SELECT hostName()` con el mismo valor de `X-ClickHouse-Replica-Tag`. Debería obtener el mismo nombre del host mientras el número de réplicas no cambie. Un valor de encabezado diferente puede asignarse a otra réplica.

<div id="limitations-of-replica-aware-routing">
  ## Limitaciones del enrutamiento con reconocimiento de réplicas
</div>

<div id="replica-aware-routing-does-not-guarantee-isolation">
  ### La afinidad cambia cuando cambia el número de réplicas
</div>

El escalado horizontal, tanto de ampliación como de reducción, cambia el anillo hash de enrutamiento. Las solicitudes que comparten el mismo valor de enrutamiento pueden acabar llegando a una réplica diferente. Si depende de tablas temporales o de configuración a nivel de sesión, prepárese para volver a crearlas tras una reasignación.

<div id="not-workload-isolation">
  ### El enrutamiento con reconocimiento de réplicas no es aislamiento de cargas de trabajo
</div>

El enrutamiento con afinidad solo controla *qué* réplica gestiona una petición. Esa réplica puede seguir atendiendo otro tráfico. Para tener cómputo dedicado, usa [compute-compute separation](/es/products/cloud/features/infrastructure/warehouses).

<div id="private-networking">
  ### Redes privadas
</div>

El enrutamiento basado en HTTP funciona con [redes privadas](/es/products/cloud/guides/security/connectivity/private-networking) en el nombre del host habitual de tu servicio. No se requieren registros DNS adicionales.

<div id="replica-aware-routing-requires-http">
  ### El enrutamiento con reconocimiento de réplicas requiere el protocolo HTTP
</div>

El enrutamiento con afinidad se basa en el encabezado HTTP `X-ClickHouse-Replica-Tag`. El protocolo binario nativo no incluye este valor que el proxy HTTP pueda usar para calcular el hash, por lo que el enrutamiento con reconocimiento de réplicas no está disponible a través del protocolo nativo. Los clients del protocolo nativo deben trasladar la carga de trabajo correspondiente a la interfaz HTTP para usar esta funcionalidad.

<div id="troubleshooting">
  ## Solución de problemas
</div>

**Las consultas siguen llegando a réplicas distintas con el mismo valor de enrutamiento**

* Confirme que cada solicitud incluya el encabezado `X-ClickHouse-Replica-Tag`.
* Confirme que cada solicitud utiliza exactamente el mismo valor de enrutamiento.
* Espere unos instantes tras la activación. Los cambios pueden tardar menos de un minuto en aplicarse.
* Compruebe si el número de réplicas ha cambiado recientemente; es normal que se reasignen después del escalado. Use `SELECT hostName()` para descubrir la nueva correspondencia.
