0% ont trouvé ce document utile (0 vote)
75 vues13 pages

Sharding

Transféré par

shathaifaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
75 vues13 pages

Sharding

Transféré par

shathaifaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Systèmes NoSQL : le

partitionnement (sharding)
Partitionnement: Composants
3 types de nœuds (serveurs) :

✓ Des routeurs

✓ Des serveurs de configuration

✓ Des serveurs de données

La composition minimum d’un cluster est de 2 routeurs,


3 Config Servers et 2 shards.

2
Partitionner, comment?
Déroulement du sharding (i.e. partitionnement)

1. Découper une (grande) collection en fragments (chunks) en


fonction d’un champ. le champ selon lequel les données sont
partitionnées est appelé clé de partitionnement (i.e. shard
key).

2. Distribuer les chunks sur les serveurs (i.e. shards) ;

3. Maintenir un répertoire indiquant que tel chunk se trouve dans


tel shard

4. Un serveur (le Routeur), ou ensemble de serveurs, consulte le


répertoire et oriente les recherches vers le bon shard.

3
Partitionner, comment?

4
Equilibrage de la charge et élasticité
Le sharding doit assurer l’élasticité et l’équilibrage de
charge
Load balancing
 La charge doit être équitablement répartie sur les serveurs de
la grappe, sinon le serveur le plus lent ralentit tout le
traitement
Répartition dynamique (élasticité) : adaptation automatisée
 à l’ajout/suppression de données
 à l’ajout/disparition de serveurs

5
Equilibrage de la charge et élasticité
 L’équilibrage de charge et l’élasticité se basent sur 2 opérations :
le split et la migration de chunks
Split : Diviser un chunk qui a dépassé la taille maximale prédéfinie

6
Equilibrage de la charge et élasticité
 Migration et équilibrage : déplacement d’un chunk d’un shard à
un autre pour une répartition équitable

 Le "split" n’est pas couteux, la migration l’est. Pourquoi? ⇒


généralement le système effectue une seule migration à la fois ( à un
instant donné)
7
Tolérance aux pannes
Un système NoSQL doit savoir gérer la reprise sur pannes : failover

 Le serveur stockant le répertoire est un SPOF (Single point of


failure) ⇒ Le répertoire est répliqué : 3 copies au minimum dans
un environnement de production.

 Les fragments sont répliqués

8
Le sharding de MongoDB

9
Etapes de création du cluster sous
MongoDb
1. Lancer les ConfigServer en ReplicaSet

2. Lancer chaque Shard en ReplicaSet

3. Lancer un mongos (routeur)


a) Connecter les ConfigServer

b) Connecter les shard

c) Lancer le sharding sur une collection

10
Cas de MongoDB
Réplication + partitionnement
Trois catégories de nœuds:
 routeurs (processus mongos) communiquent avec les
applications clientes, se chargent de diriger les requêtes vers les
serveurs de stockage concernés, et transmettent les résultats
 les replica set (processus mongod), un replica set est en charge
d’un ou plusieurs fragments (shards) et gère localement la
reprise sur panne par réplication
 un replica set dit « de configuration » chargé de gérer les
informations de routage. Il est constitué de config
servers (processus mongod avec option configsrv) qui stockent la
configuration complète du système:
 liste des replica sets (avec, pour chacun, le maître et les esclaves),
 liste des fragments et allocation des fragments à chaque replica set

11
Le sharding de MongoDB

12
Le sharding de MongoDB
Config Server
 Stocke le répertoire (obligatoirement répliqué) : " Serveurs de métadonnées "
 Processus mongod
Instances mongos (Query Routers)
 prend en charge les requêtes des clients.
 consulte le répertoire (Config Server) et oriente les requêtes vers le shard approprié
 agrège les résultats et envoie la réponse au client.
 stateless (ne stocke pas les données)
 il peut y avoir plusieurs routeurs (mais un client envoie une requête à un seul)
Chaque shard est un replica set complet
 Shard : "serveur de données "
 Il s’agit d’un processus mongod maître avec un ou plusieurs autres processus mongod
secondaries et éventuellement un mongod arbiter
 On peut ajouter ou supprimer un shard dynamiquement (le processus d’arrière
plan Balancer se charge de répartition de la charge).
13

Vous aimerez peut-être aussi