> ## 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.

# Routage tenant compte des répliques

> Acheminez les requêtes associées vers la même réplique ClickHouse Cloud pour les tables temporaires, les sessions, la réutilisation du cache et la cohérence lecture après écriture

export const EnterprisePlanFeatureBadge = ({feature = 'Cette fonctionnalité', support = false, linking_verb_are = false}) => {
  return <div className="enterprisePlanFeatureContainer">
            <div className="enterprisePlanFeatureBadge">
                Fonctionnalité du plan Enterprise
            </div>
            <div>
                <p>{feature} {linking_verb_are ? 'sont disponibles' : 'est disponible'} avec le plan Enterprise. {support ? `Contactez l’assistance pour activer cette fonctionnalité.` : 'Pour effectuer la mise à niveau, consultez la page des plans dans la Cloud Console.'}</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>
            {'Aperçu privé sur ClickHouse Cloud'}
        </div>;
};

<PrivatePreviewBadge />

<EnterprisePlanFeatureBadge feature="Routage tenant compte des répliques" support="true" />

Le routage tenant compte des répliques (également appelé sessions sticky, routage sticky ou affinité de session) achemine les requêtes liées vers la même réplique ClickHouse. Utilisez-le lorsque des [tables temporaires](/fr/reference/statements/create/table/temporary-table) ou un [état de session nommé](/fr/concepts/features/interfaces/http#using-clickhouse-sessions-in-the-http-protocol) doivent rester accessibles d’une requête à l’autre, lorsque vous souhaitez que des requêtes liées réutilisent les caches locaux d’une même réplique, ou lorsque vous avez besoin d’une [cohérence lecture après écriture](#read-after-write-consistency) entre une écriture et les lectures qui suivent.

Il est fourni au mieux et ne garantit pas l’isolation. Le proxy associe chaque valeur de routage à une réplique. Cette association reste stable tant que le nombre de répliques ne change pas ; la mise à l’échelle du service peut toutefois associer cette valeur à une autre réplique.

<Warning>
  **Nécessite l’interface HTTP**

  Le routage tenant compte des répliques est appliqué au niveau du proxy via l’[interface HTTP/HTTPS](/fr/concepts/features/interfaces/http) à l’aide de l’en-tête `X-ClickHouse-Replica-Tag`.

  Le routage tenant compte des répliques est **actuellement indisponible via le protocole natif** (port natif, par exemple avec le driver [clickhouse-go](/fr/integrations/language-clients/go/index) dans son mode natif par défaut). Les clients utilisant le protocole natif doivent passer à HTTP et envoyer la valeur de routage avec chaque requête.
</Warning>

<div id="prerequisites">
  ## Prérequis
</div>

* Votre service doit disposer d’**au moins 2 répliques**. Sur un service à réplique unique, il n’y a rien à épingler.
* Disponible par défaut sur **Enterprise** lorsque la fonctionnalité est en GA.
* Pris en charge sur les services ClickHouse Cloud standard. [BYOC](/fr/products/cloud/guides/infrastructure/deployment-options/byoc/overview) n’est pas encore pris en charge.

<div id="configuring-replica-aware-routing">
  ## Configuration du routage tenant compte des répliques
</div>

Ouvrez un ticket [d'assistance](https://clickhouse.com/support/program) et demandez l'activation du routage sticky HTTP vers les répliques. Indiquez l'ID de votre service et la raison pour laquelle vous en avez besoin (tables temporaires, état de la session, réutilisation du cache ou cohérence lecture après écriture). Aucun redémarrage n'est nécessaire.

<div id="http-based-routing">
  ## Routage HTTP
</div>

Pour associer une charge de travail à une réplique, envoyez un en-tête `X-ClickHouse-Replica-Tag` via l’[interface HTTPS](/fr/concepts/features/interfaces/http). Le proxy applique un hachage cohérent à la valeur de l’en-tête : les requêtes partageant cette valeur sont donc dirigées vers la même réplique tant que le nombre de répliques reste inchangé. Une valeur différente est hachée indépendamment et peut être associée à la même réplique ou à une autre, mais vous ne choisissez pas *à quelle* réplique une valeur est associée.

Utilisez le nom d’hôte existant de votre service. Aucun nom d’hôte sticky spécifique ni aucune modification DNS ne sont nécessaires. La valeur de l’en-tête peut être n’importe quelle chaîne de votre choix, par exemple un nom d’application, un ID utilisateur ou un label de charge de travail. Les requêtes sans cet en-tête conservent l’équilibrage de charge habituel.

Définissez l’en-tête `X-ClickHouse-Replica-Tag` pour chaque requête :

```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 @-
```

Pour clickhouse-go (v2), définissez `Protocol: clickhouse.HTTP` et transmettez l’en-tête à l’aide de l’[option de connexion `HttpHeaders`](/fr/integrations/language-clients/go/configuration#connection-settings).

<Info>
  `X-ClickHouse-Replica-Tag` assure une affinité avec une réplique sans créer de session HTTP ClickHouse. Les requêtes concurrentes peuvent réutiliser le même tag sans rencontrer l’erreur `SESSION_IS_LOCKED`.
</Info>

<div id="read-after-write-consistency">
  ### Cohérence lecture après écriture
</div>

Dans un service comportant plusieurs répliques, une écriture effectuée sur une réplique peut ne pas être visible sur les autres tant que la réplication n’a pas rattrapé son retard. Envoyez votre écriture avec un en-tête `X-ClickHouse-Replica-Tag`, puis réutilisez la même valeur d’en-tête pour les lectures suivantes. Le proxy achemine les deux requêtes vers la même réplique : vous lisez donc votre propre écriture, même si les autres répliques sont encore en retard. Ce modèle convient aux charges de travail qui écrivent des données, puis les relisent immédiatement, comme les applications interactives ou les jobs ETL qui valident les inserts avant de poursuivre.

Pour des garanties plus étendues sur l’ensemble des répliques, vous pouvez également définir [`select_sequential_consistency`](/fr/reference/settings/session-settings#select_sequential_consistency) sur `1` dans ClickHouse Cloud.

<div id="check-which-replica">
  ### Vérifier quelle réplique est utilisée
</div>

Exécutez à nouveau l’exemple `SELECT hostName()` avec la même valeur `X-ClickHouse-Replica-Tag`. Vous devriez obtenir le même nom d’hôte tant que le nombre de répliques reste inchangé. Une valeur d’en-tête différente peut être associée à une autre réplique.

<div id="limitations-of-replica-aware-routing">
  ## Limites du routage tenant compte des réplicas
</div>

<div id="replica-aware-routing-does-not-guarantee-isolation">
  ### La persistance change lorsque le nombre de répliques change
</div>

La mise à l’échelle horizontale, à la hausse comme à la baisse, modifie l’anneau de hachage du routage. Des requêtes partageant la même valeur de routage peuvent alors être dirigées vers une autre réplique. Si vous vous appuyez sur des tables temporaires ou des paramètres au niveau de la session, soyez prêt à les recréer après une réaffectation.

<div id="not-workload-isolation">
  ### Le routage tenant compte des réplicas n'est pas une isolation des charges de travail
</div>

Le routage sticky contrôle uniquement *quelle* réplique traite une requête. Cette réplique peut tout de même servir d'autres requêtes. Pour un compute dédié, utilisez la [séparation compute-compute](/fr/products/cloud/features/infrastructure/warehouses).

<div id="private-networking">
  ### Mise en réseau privée
</div>

Le routage HTTP fonctionne avec la [mise en réseau privée](/fr/products/cloud/guides/security/connectivity/private-networking) sur le nom d’hôte habituel de votre service. Aucune entrée DNS supplémentaire n’est requise.

<div id="replica-aware-routing-requires-http">
  ### Le routage tenant compte des répliques nécessite le protocole HTTP
</div>

Le routage sticky repose sur l’en-tête HTTP `X-ClickHouse-Replica-Tag`. Le protocole binaire natif ne transporte pas cette valeur sur laquelle le proxy HTTP puisse calculer un hash ; le routage tenant compte des répliques n’est donc pas disponible avec le protocole natif. Les clients utilisant le protocole natif doivent faire passer la charge de travail concernée par l’interface HTTP pour utiliser cette fonctionnalité.

<div id="troubleshooting">
  ## Résolution des problèmes
</div>

**Les requêtes sont toujours dirigées vers différentes répliques avec la même valeur de routage**

* Vérifiez que chaque requête inclut l’en-tête `X-ClickHouse-Replica-Tag`.

- Vérifiez que chaque requête utilise exactement la même valeur de routage.
- Attendez un instant après l’activation. La modification peut prendre moins d’une minute avant de prendre effet.
- Vérifiez si le nombre de répliques a récemment changé ; un remappage est attendu après une mise à l’échelle. Utilisez `SELECT hostName()` pour déterminer la nouvelle association.
