WindevExpert

Vidéo 49 • Haute Disponibilité & Big Data

Sharding :
L'Éclatement Stratégique

Apprenez à répartir vos clients sur plusieurs clusters de serveurs pour supporter une croissance infinie sans ralentissement.

Quand le Monolithe Explose

Vertical Scaling (Limite)

Vous achetez un serveur de plus en plus gros. Mais un jour, les index deviennent trop lourds pour la RAM, peu importe le prix payé.

RÉSULTAT : Latence généralisée pour TOUS les clients.

Horizontal Scaling (Sharding)

On divise les clients. Les clients A à M vont sur le Serveur 1. Les clients N à Z vont sur le Serveur 2.

AVANTAGE : Chaque serveur reste svelte et ultra-rapide.

Laboratoire : Routage de Requêtes

SHARD DISPATCHER
Cluster HFSQL 01 Host: 10.0.0.1
Cluster HFSQL 02 Host: 10.0.0.2
Cluster HFSQL 03 Host: 10.0.0.3

L'Intelligence du Dispatcher

Le Catalogue des Chemins

Le serveur central possède une table de correspondance.

Dès qu'un client se connecte, le serveur regarde son TenantID et charge dynamiquement les paramètres de connexion SQL vers le bon cluster physique.

Map["ALPHA"] ➔ Server_01
Map["BETA"] ➔ Server_02
Shard Discovery Service
Dynamic Routing Active

L'Aiguillage des Connexions

// 1. Récupération du cluster assigné au client
sMonCluster est une chaîne = LookupShardHost(gsIDTenant)

// 2. Configuration DYNAMIQUE de la connexion HFSQL
MyCnx est une Connexion
MyCnx.Serveur = sMonCluster
MyCnx.Utilisateur = "SaaS_Admin"
MyCnx.MotDePasse = "P@ssw0rd123"

// 3. On bascule le contexte de l'application sur ce cluster
SI PAS HOuvreConnexion(MyCnx) ALORS
    HTTPRéponse(503, "Shard cluster temporarily unavailable")
    RETOUR
FIN

HChangeConnexion(*, MyCnx)