FR 3103664 A1 20210528 FR 1913324 A 20191127 L’invention concerne un système de stockage distribué (1) comprenant des nœuds pour stocker des données contextuelles. Chaque nœud (140) est associé à une plage de scores de nœud, les nœuds comprenant une structure de données auxiliaires stockant un mappage entre une clé et des informations auxiliaires, associée à une plage de scores auxiliaires. Le système de stockage est configuré pour : - recevoir un message comprenant des données contextuelles représentées par une paire clé-valeur et des informations auxiliaires associées; - appliquer une fonction de hachage à un identifiant de clé qui fournit une valeur de score ; - déterminer la plage de scores de nœuds comprenant la valeur de score ; - stocker la paire clé-valeur dans le nœud correspondant; - déterminer la plage de scores auxiliaires qui comprend la valeur de score ; - stocker les informations auxiliaires dans la structure de données auxiliaires correspondante. Figure pour abrégé : Fig 1 Système de stockage distribué pour stocker des données contextuelles L’invention concerne de façon générale des systèmes de stockage et en particulier un système distribué pour stocker des données contextuelles. Un défi majeur pour les systèmes informatiques modernes est de gérer les mégadonnées tout en maintenant un haut niveau de performance. Ce défi est particulièrement critique pour les systèmes qui prennent en charge des sessions d’utilisateurs avec un dispositif externe, tel qu’un dispositif client, ces sessions générant un volume énorme d’informations contextuelles qui ont besoin d'être stockées pendant quelque temps. Dans ces systèmes, il est nécessaire d’avoir un niveau élevé de cohérence et de disponibilité de l’information contextuelle. Le traitement d’une session est généralement distribué sur une pluralité de serveurs d’applications. Dans une session, l’information contextuelle est conventionnellement stockée localement dans les serveurs d’applications. Plus spécifiquement, différentes parties des informations de contexte sont généralement stockées localement sur des serveurs d’applications sous forme de sous-ensembles d’informations contextuelles. La pluralité des sous-ensembles du contexte constitue le contexte associé à la session envisagée. Dans US 8 473 626, une première conversation s’ouvre et identifie une session pendant qu’une deuxième conversation rejoint la session, les deux conversations étant capables de partager le contexte, quel que soit le protocole. Cependant, cette solution n’est pas adaptée à une prise en charge des défaillances matérielles tout en assurant la continuité du service pour les utilisateurs. La résilience de l’information contextuelle de l’utilisateur telle qu’elle est gérée est faible dans ces situations. Par ailleurs, cette solution ne permet pas un stockage optimisé de l’information contextuelle et nécessite des ressources importantes aux serveurs d’application. Un système et un procédé permettant un stockage optimisé de l’information contextuelle de l’utilisateur sont donc nécessaires. Pour surmonter ces problèmes, il est fourni un système de stockage distribué pour stocker des données contextuelles reçues d’un système de transmission de données, le système de stockage distribué comprenant un stockage de données contextuelles comprenant une pluralité de nœuds pour stocker les données contextuelles. Avantageusement, chacun de ces nœuds est associé à une plage de scores de nœuds. Les nœuds comprennent au moins une structure de données auxiliaires stockant un mappage entre une clé et des informations auxiliaires, chaque structure de données auxiliaires étant associée à une plage de scores auxiliaires. Le système de stockage distribué est configuré pour : - recevoir un message provenant d’un serveur d’applications externe dans le système de transmission de données, le message comprenant des données contextuelles représentées par une paire clé-valeur et l’information auxiliaire associée à ladite paire clé-valeur ; - appliquer une fonction de hachage à un identifiant de la clé qui fournit une valeur de score ; - déterminer la plage de scores de nœuds parmi les plages de scores de nœuds associées aux nœuds qui comprend la valeur de score ; - stocker la paire clé-valeur dans le nœud correspondant à la plage de scores de nœuds ; - déterminer la plage de scores auxiliaires, parmi les plages de scores auxiliaires associées aux structures de données auxiliaires qui comprend la valeur de score ; - stocker l’information auxiliaire dans la structure de données auxiliaires correspondant à la plage de scores auxiliaires déterminée. Dans un mode de réalisation, le système de stockage distribué peut comprendre une unité d’initialisation configurée pour stocker initialement chaque structure de données auxiliaires dans un nœud du stockage de données contextuelles, l’unité d’initialisation étant configurée pour stocker une structure de données auxiliaires dans un nœud si la plage de scores de nœuds associée au nœud inclut le seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires. Dans un mode de réalisation, l’identifiant de la clé auquel la fonction de hachage est appliquée peut être le nom de la clé. L’unité d’initialisation est configurée pour générer un nom pour chaque structure de données auxiliaires associée à une plage de scores auxiliaires, le nom étant sélectionné de sorte que l’application de la fonction de hachage au nom de la structure de données auxiliaires fournisse une valeur de score qui correspond au seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires. Dans un mode de réalisation, le nom de chaque structure de données auxiliaires comprend des lettres aléatoires et un suffixe de nom, le suffixe de nom étant sélectionné de sorte que l’application de la fonction de hachage au nom de la structure de données auxiliaires fournisse une valeur de score qui correspond au seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires. Dans certains modes de réalisation, le système peut être hébergé dans un système dématérialisé « cloud ». Dans certains modes de réalisation, le système de stockage distribué peut comprendre au moins un substitut configuré pour échanger des messages avec le système de transmission de données. Le nombre de substituts utilisés par le système de stockage distribué est déterminé de façon dynamique à partir du nombre de requêtes reçues desdits serveurs d’applications par seconde. Dans certains modes de réalisation, les nœuds du stockage de données contextuelles peuvent être hébergés sur une ou plusieurs machines. Dans certains modes de réalisation, le système de stockage distribué est configuré pour ajouter un identifiant à chaque message reçu du système de transmission de données, l’identifiant identifiant un serveur d’applications du système de transmission de données à partir duquel le message est initié. Les plages de scores de nœuds sont délimitées par un seuil de système inférieur et un seuil de système supérieur, la fonction de hachage comprenant d’appliquer une fonction CRC modulo le seuil de système supérieur. Dans certains modes de réalisation, le nombre de plages de scores de nœuds attribuées aux nœuds du stockage de données contextuelles est changé dynamiquement durant le temps d’exécution en générant une permutation des plages. Chaque nœud peut comprendre un serveur, le système de stockage distribué comprenant l’émission d’une ou de plusieurs commandes au serveur correspondant au nœud de destination pour stocker l’information auxiliaire dans un nœud. Dans certains modes de réalisation, l’information auxiliaire peut comprendre différents types d’information, une commande étant émise pour chaque type d’information. Dans certains modes de réalisation, les données contextuelles peuvent être poussées du système de transmission de données vers le système de stockage distribué en réponse à une interruption ou panne d’un serveur d’applications dans le système de transmission de données. Les données contextuelles peuvent être récupérées à partir du système de stockage distribué par le système de transmission de données pour restaurer une session interrompue. Dans certains modes de réalisation, l’information auxiliaire peut comprendre la date d’expiration des données contextuelles, le système de stockage distribué comprenant un gestionnaire de temporisation configuré pour vérifier la date d’expiration associée à chaque paire clé-valeur stockée dans le stockage de données contextuelles à différents moments de vérification, le gestionnaire de temporisation étant par ailleurs configuré pour supprimer une paire clé/valeur du stockage de données contextuelles si la date d’expiration associée à la paire clé-valeur a été atteinte ou dépassée au moment de la vérification. Il est par ailleurs fourni un procédé pour stocker des données contextuelles reçues d’un système de transmission de données comprenant un stockage de données contextuelles, le stockage de données contextuelles comprenant une pluralité de nœuds pour stocker lesdites données contextuelles, chacun des nœuds étant associé à une plage de scores de nœuds, les nœuds comprenant au moins une structure de données auxiliaires stockant un mappage entre une clé et des informations auxiliaires, chaque structure de données auxiliaires étant associée à une plage de scores auxiliaires. Le procédé comprend : - la réception d’un message provenant d’un serveur d’applications externes dans le système de transmission de données, le message comprenant des données contextuelles représentées par une paire clé-valeur et des informations auxiliaires associées à la paire clé-valeur ; - l’application d’une fonction de hachage à un identifiant de la clé qui fournit une valeur de score ; - la détermination de la plage de scores de nœuds parmi les plages de scores de nœuds associées aux nœuds qui comprend la valeur de score ; - le stockage de la paire clé-valeur dans le nœud correspondant à la plage de scores de nœuds ; - la détermination de la plage de scores auxiliaires parmi les plages de scores auxiliaires associées aux structures de données auxiliaires qui comprend la valeur de score ; - le stockage de l’information auxiliaire dans la structure de données auxiliaires correspondant à la plage de scores auxiliaires déterminée. Il est également fourni un programme d’ordinateur comprenant des instructions de code de programme pour exécuter le procédé selon un quelconque des aspects précédents lorsque le programme fonctionne sur un ordinateur. Les dessins en annexe qui sont incorporés et constituent une partie de cette spécification, illustrent des modes variés de réalisation de l’invention et, avec la description générale de l’invention ci-dessus et la description détaillée des modes de réalisation donnée ci-après, servent à expliquer les modes de réalisation de l’invention. est une vue schématique d’un environnement exemplaire implémentant un système de stockage distribué, selon des modes de réalisation ; est une vue schématique d’un serveur d’applications ; est un organigramme illustrant les échanges entre un serveur d’applications et un stockage de données contextuelles, selon un mode de réalisation exemplaire ; est un organigramme illustrant les données contextuelles stockant un procédé, selon certains modes de réalisation ; est un organigramme illustrant le processus d’association de plages de valeurs à des nœuds du stockage de données contextuelles, selon un mode de réalisation ; et est un organigramme illustrant le stockage des informations auxiliaires dans un nœud du stockage de données contextuelles ; et représente une implémentation exemplaire du stockage de données contextuelles. Description détaillée La figure 1 est une vue schématique d’un environnement exemplaire 100 implémentant un système de stockage distribué 1, selon certains modes de réalisation ; Le système de stockage distribué 1 peut être connecté à un système de transmission de données 11 comprenant un ensemble de serveurs d’applications 110, chacun exécutant au moins une application cliente à travers un réseau 51. L’exécution de chaque application cliente génère des données contextuelles d’utilisateur. Chaque serveur d’applications 110 peut être configuré pour établir des sessions d’utilisateur avec un dispositif utilisateur 5. Ainsi qu’illustré dans la figure 2, chaque serveur d’applications 110 peut comprendre une partie frontale (FE) 1101 et une partie dorsale (BE) 1102, et un serveur de contexte (CS) 1103. La partie frontale 1101 peut comprendre des composants informatiques et des applications dédiées aux interactions avec des dispositifs utilisateurs externes. La partie dorsale 1102 peut comprendre des composants informatiques et des applications fournissant un accès simplifié à des données stockées dans un stockage persistant. Le serveur de contexte 1103 peut être configuré pour gérer les données contextuelles générées au cours de l’exécution d’une application fonctionnant sur le serveur d’applications 110. Une session comprend généralement un nombre de « conversations » et peut comprendre un ensemble de transactions. Une session est associée à des « données contextuelles » qui peuvent être générées par le serveur de contexte 1103 et/ou fournies par un dispositif externe 5. Une conversation fait référence à une communication entre deux composants. Une transaction fait référence à une ou plusieurs conversations et à un ensemble de fonctions de traitement qui sont exécutées pour traiter une interrogation reçue d’un dispositif utilisateur. Un « contexte d’utilisateur » (également appelé ci-après dans la présente « données contextuelles d’utilisateur » ou « données contextuelles ») fait référence à des données relatives à un utilisateur et qui sont reçues, utilisées et/ou générées au cours du traitement d’une session d’utilisateur (par exemple, des données utilisées par le système de transmission de données 11 pour exécuter les fonctionnalités requises). Les données contextuelles englobent donc les données liées à un utilisateur qui sont utilisées pour exécuter des fonctions associées à une session exécutée pour l’utilisateur. Les données contextuelles peuvent être générées par les serveurs d’applications 110 et/ou peuvent être fournies par un dispositif externe. Au moins certains des serveurs d’applications 110 peuvent stocker des données contextuelles générées au cours d’une session d’utilisateur dans le système de stockage distribué 1 au lieu de stocker les données localement. Les données contextuelles forment des données volatiles qui ont une durée de vie limitée. Le stockage temporaire des données contextuelles peut être nécessaire pour un ou plusieurs serveurs d’application 110 au cours des sessions. Une session comprend l’établissement de conversations entre un dispositif externe et un ou plusieurs serveurs d’applications 110 du système 11. Au cours d’une session, le dispositif externe 5 et le système de transmission de données 11 peuvent fonctionner en mode client/serveur, le système de transmission de données 11 fonctionnant dans un des modes client/serveur pendant que le dispositif externe 5 fonctionne dans l’autre mode. Chaque serveur d’applications 110 exécute au moins une application logicielle. Les serveurs d’application 110 peuvent former des groupes de serveurs d’applications dédiés à une application logicielle, chaque serveur d’applications du même groupe traitant indépendamment l’application logicielle à laquelle le groupe est dédié, les serveurs d’applications stockant une partie du contexte d’une session. Une communication (correspondant à une « conversation ») peut être établie entre un premier composant et un deuxième composant. Le premier et le deuxième composant peuvent inclure un dispositif externe 5 et un serveur d’applications 110 du système de transmission de données 11 ou deux serveurs d’applications 110 du système de transmission de données 11. Un protocole peut être utilisé pour chaque conversation établie entre deux composants. Pour établir une conversation, un appel peut être initié du premier composant au deuxième composant, l’appel étant ensuite routé vers le deuxième composant. Une conversation est configurée pour partager le contexte d’une autre conversation si l’appel spécifie un identifiant de session existant correspondant à l’autre conversation. Les données de contexte peuvent comprendre une entrée de données par l’utilisateur via un dispositif utilisateur 5 au cours d’une session. Par exemple, dans une application de l’invention pour un système fournisseur de voyage 11, les données contextuelles peuvent inclure des paramètres de voyage, tels qu’un lieu de départ et un lieu d’arrivée, entrés par un utilisateur pour rechercher un produit de voyage. Les données contextuelles peuvent par ailleurs comprendre des données générées par un serveur d’applications 110 pendant l’exécution d’une application logicielle associée fonctionnant sur le système de transmission de données 11. Les serveurs d’application 110 peuvent fonctionner sur une même machine ou sur une pluralité de machines séparées. Les machines peuvent inclure des machines virtuelles. Les serveurs d’application 110 peuvent partager un processeur commun ou avoir des processeurs séparés. Une même application logicielle peut être exécutée par plusieurs serveurs d’applications 110. Selon un aspect de l’invention, les données contextuelles peuvent être associées aux informations auxiliaires représentant des informations relatives aux données contextuelles. Les informations auxiliaires peuvent comprendre par exemple une information de date d’expiration (également désignée dans la présente comme « information de temporisation ») représentant une information relative à la durée de vie des données contextuelles. L’information d’expiration peut être utilisée pour déterminer la date à laquelle les données contextuelles correspondantes expireront pour qu’elles puissent être détruites par le système de stockage distribué 1. Jusqu’à l’expiration des données contextuelles, un serveur d’applications 110 peut accéder aux données contextuelles, par exemple pour les lire ou les actualiser. Dans un mode de réalisation, l’information de date d’expiration peut inclure une date (la date d’expiration) représentant la date à laquelle les données contextuelles associées expireront. La description suivante de certains modes de réalisation sera faite principalement en faisant référence aux informations auxiliaires comprenant l’information de date d’expiration représentée par une date (également désignée ci-après dans la présente « la date d’expiration ») à titre d’illustration uniquement. L’information de date d’expiration associée aux données contextuelles peut être prédéfinie ou déterminée ou fixée par le serveur d’applications 110 à partir duquel la paire clé/valeur (données contextuelles) a été émise. Chaque serveur d’applications 110 peut exécuter une application logicielle (aussi désignée simplement comme étant « une application »), l’exécution de l’application étant déclenchée au cours d’une session établie entre un dispositif externe 5 (tel qu’un dispositif utilisateur) connecté au système de transmission de données 11 et au système de transmission de données 11 à travers un réseau 52. L’exécution d’une application exécutée par un serveur d’applications 110 en rapport avec une session peut déclencher la génération de données contextuelles. Les données contextuelles peuvent être réutilisées durant une même session ou une session différente initiée entre le même utilisateur et le système de transmission de données 11. Un dispositif externe 5 peut être un dispositif informatique personnel, une tablette informatique, un terminal client léger (thin client), un smartphone et/ou un autre dispositif informatique de ce genre. Un dispositif utilisateur 5 peut héberger des navigateurs Web et/ou des logiciels d’applications personnalisés (p. ex. un système client), et peut inclure une interface graphique utilisateur. Un réseau 51 ou 52 peut inclure un ou plusieurs réseaux privés et/ou publics (p. ex. Internet) qui permettent l’échange de données, tels qu’Internet, un réseau de zone locale (LAN), un réseau de zone étendue (WAN), un réseau cellulaire voix/données, une ou plusieurs connexions par bus à haute vitesse et/ou d’autres types de réseaux de communication de ce genre. Chaque réseau de communication 51, 52 peut utiliser des technologies de communication normales et/ou des protocoles tels que 4G, Ethernet, 802.11, TCP/IP (Protocole de contrôle de transmission/Protocole Internet), HTTP (Protocole de transport hypertexte), FTP (Protocole de transfert de fichier), etc. Les données peuvent être échangées sur chaque réseau 51, 52 selon des technologies d’échange de données différentes et/ou des formats tels que le langage de balisage hypertexte (HTML), le modèle JSON et le langage de balisage étendu (XML). Dans une implémentation exemplaire de l’invention, le système de transmission de données 11 peut être un système de fournisseur de voyage délivrant un produit-vol à un utilisateur en réponse à une demande d’un utilisateur. Une session peut être initiée entre l’utilisateur et le système de transmission de voyage 11 pour permettre la réservation d’un produit-vol par un utilisateur au cours de la session. Au cours de la session, l’utilisateur peut entrer des données par l’intermédiaire du dispositif utilisateur 5 et sélectionner des données déclenchant la génération de données contextuelles qui ne sont pas stockées localement sur le dispositif utilisateur. Les données contextuelles peuvent par exemple être stockées dans le système de stockage distribué 1 si l’utilisateur initie une session pour réserver un vol mais finalement ne termine pas la session. Les données contextuelles générées au cours de cette session incomplète peuvent être stockées dans le système de stockage distribué 1 pour un usage subséquent par l’utilisateur, par exemple si l’utilisateur se connecte à nouveau au système de transmission de voyage 11 pour initier une nouvelle session, les données contextuelles sont utilisées, par exemple, pour recharger les données de la session précédente ou pour reprendre une session interrompue. Le système de transmission de données 11 peut comprendre un routeur de réseau pour router le trafic externe et interne. Les messages entrants peuvent être interceptés par le routeur de réseau qui route ensuite les messages vers un composant ciblé dans le système 11. Lorsqu’un serveur d’applications 110 a besoin de stocker des données contextuelles dans le système de stockage distribué 1, le serveur d’applications 110 peut ouvrir une conversation avec le routeur de réseau. La requête peut ensuite être routée vers une application qui renvoie une réponse à la requête. La session peut ensuite être actualisée en utilisant les données de session renvoyées par l’application. Une conversation entre le serveur d’applications 110 et le système de stockage distribué 1 peut ensuite être initiée (par exemple en mode reconnaissance). Un temporisateur de conversation peut être déclenché pour mesurer la durée de la conversation. Le système de transmission de données 11 peut ensuite pousser les données de session vers le système de stockage distribué 1. Les données de session peuvent comprendre des données de conversation et des données contextuelles. Les données de session peuvent par ailleurs comprendre des données de conversation dorsales. Le système de stockage distribué 1 peut envoyer un message de reconnaissance au système de transmission de données 11. Un serveur d’applications 110 peut envoyer les données contextuelles au système de stockage distribué 1 sous forme d’un ensemble de paires clé/valeur, chaque paire clé/valeur comprenant une clé et une valeur pour la clé. Chaque paire clé/valeur est par ailleurs associée aux informations auxiliaires telles que l’information d’expiration. Une application cliente fonctionnant sur un serveur d’applications 110 dans le système de transmission de données 11 peut envoyer les données contextuelles au système de stockage distribué 1 en utilisant une intégration de message dans les données contextuelles. Le message peut avoir un format de message approprié pour la transmission du message du système de transmission de données 11 au système de stockage distribué 1 via le réseau 52. Chaque message peut par ailleurs comprendre une commande telle qu’une commande d’addition, de suppression ou de mise à jour. Divers types de commandes peuvent être utilisés pour spécifier une addition, une suppression ou une mise à jour relative à la paire clé/valeur. De retour à la figure 1, le système de stockage distribué 1 peut comprendre un stockage de données contextuelles 14 utilisé comme une base de données. Le stockage de données contextuelles 14 comprend une pluralité de nœuds de stockage 140. Le stockage de données contextuelles 14 peut être configuré pour partager les données de façon dynamique (les paires clé/valeur et les informations auxiliaires associées) à travers les nœuds 140. Le système de stockage distribué 1 peut être hébergé avantageusement sur une plateforme distante telle qu’un système dématérialisé («cloud») Le système de stockage distribué 1 peut par ailleurs comprendre un substitut 12 configuré pour recevoir des requêtes provenant des serveurs d’application 110. Le substitut 12 permet la communication entre le serveur d’applications 110 en dehors de la plateforme distante (système dématérialisé («cloud»)) et le stockage de données contextuelles 14 qui est situé dans la plateforme distante. Chaque serveur d’applications 110 peut communiquer avec le substitut 12 en utilisant un protocole d’échange de données. Le substitut 12 peut à son tour échanger des données avec le stockage de données contextuelles 14 en utilisant le même ou un autre protocole d’échange de données. Le système de stockage distribué 1 peut être un système de stockage dépourvu d’état, configuré pour stocker des données contextuelles dans le stockage de données contextuelles 14 et pour gérer la durée de vie des données contextuelles afin de détruire les données contextuelles expirées en fonction de l’information d’expiration associée. Le substitut 12 permet l’accès à des données de l’extérieur des serveurs d’application 110 et peut être configuré pour insérer au moins certaines des informations auxiliaires dans le message comprenant les paires clé/valeur reçues. Chaque serveur d’applications 110 peut se connecter à un quelconque nœud du stockage de données contextuelles 14 par l’intermédiaire du substitut 12. Le substitut 12 assure par ailleurs le routage des informations reçues des serveurs d’applications externes vers les nœuds 140. Dans certains modes de réalisation, le stockage de données contextuelles 14 peut comprendre deux ou plusieurs substituts 12, le nombre de substituts utilisés dépendant du niveau de trafic, par exemple du nombre de transactions (le nombre de requêtes provenant des serveurs d’application 110) par seconde. Dans un mode de réalisation, le système de stockage distribué 1 peut comprendre un orchestrateur (non illustré) pour changer dynamiquement le nombre de substituts 12 utilisés afin de gérer les communications entre les applications externes 110 et le système de stockage distribué 1. Dans un mode de réalisation, le système de stockage distribué 1 peut comprendre une unité d’équilibrage de charge pour équilibrer la charge entre la pluralité des substituts 12 en fonction de critères d’équilibrage de charge. La description suivante de certains modes de réalisation de l’invention sera faite en faisant référence à l’utilisation d’un substitut unique 12 afin de faciliter la compréhension de ces modes de réalisation et à titre d’exemple uniquement. Dans le stockage de données contextuelles 14, les données contextuelles sont distribuées à travers les divers nœuds 140 du stockage de données (un nœud du stockage de données 14 peut par ailleurs être désigné comme étant un « module » ou un « container »). Un nœud 140 du stockage de données contextuelles 14 peut être hébergé sur une plusieurs machines (serveurs), incluant des machines virtuelles. Les données contextuelles stockées dans le stockage de données contextuelles 14 peuvent être distribuées dans les divers nœuds de stockage 140 sur la base d’une structure d’arbre représentant les données contextuelles, chaque nœud de l’arbre correspondant à un nœud de stockage 140. Les nœuds peuvent par ailleurs comprendre des structures de données stockant les informations auxiliaires associées aux paires clé-valeur. Le système de stockage distribué 1 peut être utilisé en cas de défaillance de machine, par exemple si le système de stockage local hébergé dans le système 11 échoue. Autrement, le système de stockage distribué 11 peut être utilisé comme système de stockage principal pour stocker des données contextuelles générées dans le système de transmission de données 11 au cours des sessions. La description qui suit de certains modes de réalisation de l’invention sera faite en faisant référence à l’utilisation du système de stockage distribué 11 comme stockage principal pour stocker des données contextuelles générées au cours des sessions d’utilisateur exécutées par le système de transmission de données 11. Dans certains modes de réalisation, les données contextuelles stockées dans le système de stockage distribué 1 peuvent être utilisées pour restaurer une session sur le système de transmission de données 11 en cas de défaillance d’une machine du système de transmission de données 11 ou d’une interruption d’une session en raison d’une défaillance d’un dispositif ou d’un composant. Cela permet de reprendre rapidement une session sur un dispositif utilisateur 5 en cas d’interruption de la session sur une machine. La figure 3 est un organigramme décrivant le processus d’actualisation des données contextuelles stockées dans le stockage de données contextuelles 14 du système de stockage distribué 1. Une requête de mise à jour peut être envoyée (1) au dispositif de stockage distribué 1 par un serveur d’applications 110 pour actualiser les données contextuelles stockées dans le stockage de données contextuelles 14. La requête de mises à jour émise au dispositif de stockage distribué 1 peut être poussée du serveur d’applications 110, par un message POUSSER [PUSH], vers le substitut 12. La requête de message peut identifier une ou plusieurs clés dont les valeurs doivent être actualisées ainsi que la nouvelle valeur pour la clé. Une clé est associée à un nom de clé. Une clé peut avoir des types différents tels qu’un type de chaîne. La valeur d’une clé peut être une valeur de chaîne ou une structure de donnée plus complexe telle qu’une liste d’éléments de chaîne, une collection d’éléments de chaîne non triés, une collection d’éléments triés comprenant des éléments de chaîne, chaque élément de chaîne étant associé à une valeur flottante de nombre (également appelée score). Pour une valeur de clé comprenant une structure de données auxiliaires d’éléments, les éléments sont triés selon le score ce qui permet d’accéder aux éléments de la valeur de clé en spécifiant une plage de scores. Une valeur de clé peut aussi comprendre des mappes (également appelées « hachages ») composées de champs associés à des valeurs, un champ et une valeur qui sont des chaînes ou des ensembles de bits comprenant des bits. Le système de stockage distribué 1 peut prendre en charge divers types de commandes reçues d’un serveur d’applications 110, telles qu’une commande d’addition, de suppression ou de mise à jour dépendant des types de valeurs de clé. Les commandes de mises à jour relatives à une clé peuvent, par exemple, inclure une commande pousser pour apposer une valeur à la tête ou à la queue de la clé si la valeur de clé est une liste d’éléments de chaîne, ou une commande pour actualiser la valeur de clé et renvoyer l’ancienne valeur. Les commandes de suppression peuvent inclure une commande pour supprimer un élément de la valeur de clé. Le substitut 12 peut ensuite envoyer (2) un message de mise à jour au nœud 130 hébergeant la clé identifiée dans le message. Le substitut 12 peut ajouter des données supplémentaires à la requête de message de mise à jour et/ou transformer certains champs du message. Un nœud 140 du stockage de données contextuelles 14 stockant la paire clé/valeur peut actualiser la paire spécifiée dans la requête du message de mise à jour en réponse à la requête de mise à jour reçue du substitut 14 et renvoyer une réponse (3) au substitut 12 qui à son tour peut ensuite renvoyer une réponse au serveur d’applications émetteur 110 (4). Chaque donnée contextuelle poussée dans le stockage de données 110 peut être estampillée avec un horodatage représentant la date de stockage de la donnée contextuelle dans le stockage de donnée 14, que ce soit pour la première fois ou la date d’actualisation de la donnée contextuelle stockée dans le nœud 140 du stockage de donnée. Le substitut 12 peut être configuré pour ajouter une information au message reçu du système de transmission de données 1 spécifiant une clé et une valeur pour la clé, cette information étant insérée dans un endroit particulier du message tel que le préfixe. Dans un mode de réalisation, l’information ajoutée (par exemple le préfixe) peut représenter un identifiant de client représentant le serveur d’applications 110 à partir duquel la paire de valeur de clé a été émise. Le système de stockage distribué 1 peut fonctionner selon trois modes opératoires : - Dans un mode ombre, une requête de mise à jour relative à un contexte clé/valeur peut être poussée vers le stockage de données contextuelles 14 ; - Dans un mode asynchrone, une requête de mise à jour relative à une paire clé/valeur de contexte peut être poussée vers le stockage de données contextuelles 14 et ensuite l’entrée correspondante dans le stockage de données contextuelles 14 peut être récupérée à partir du nœud correspondant 140 en utilisant une requête de RÉCUPÉRATION à la demande ; - Dans un mode synchrone, une requête de mise à jour relative à une paire clé/valeur de contexte peut être poussée vers le stockage de données contextuelles 14 et ensuite l’entrée correspondante dans le stockage de données contextuelles 14 peut être récupérée à partir du nœud correspondant 140 en utilisant une requête de RÉCUPÉRATION pour chaque message ; Les données de contexte peuvent être d’abord stockées sous forme d’objets en mémoire par chaque serveur d’applications 110 puis sérialisées et poussées vers le système de stockage distribué 1 pour la durée de vie associée aux données contextuelles. Les données contextuelles peuvent être extraites et désérialisées du système de stockage distribué 1 au lancement du serveur d’applications 110 ou autrement lorsque cela s’avère nécessaire pour une transaction d’un client. Le fait de pousser les données contextuelles vers le système de stockage distribué 1 présente des coûts supplémentaires limités (inférieurs à 5 %). Par ailleurs, les coûts relatifs à l’opération d’extraction des données contextuelles du système de stockage distribué 1 sont limités et n’impactent pas le traitement du trafic des clients en temps réel. Dans certains modes de réalisation, un procédé de gestion de la cohérence des données peut aussi être implémenté pour assurer la cohérence des données contextuelles au cours des mises à jour de données contextuelles, un accès parallèle aux données contextuelles. Ceci permet un accès simultané aux conversations et aux sessions par deux serveurs d’application distincts. Le stockage des données contextuelles dans le système de stockage distribué 1 peut être mis en œuvre de façon synchrone pour éviter un accès aux données contextuelles liées à un (N-1)e contexte au cours du traitement d’une Ne transaction. Chaque serveur d’applications 110 peut surveiller un compteur de conversation qui compte le nombre de conversations. Dans certains modes de réalisation, un compteur de conversation unique peut être utilisé pour continuer les conversations établies par deux serveurs différents. Comme le montre la figure 1, le système de stockage distribué 1 peut par ailleurs comprendre une unité d’horodatage 15 configurée pour dater les données reçues par le substitut 12 et un gestionnaire de temporisation 16 configurés pour gérer les données stockées dans les nœuds 140 du stockage de données contextuelles 14 en fonction des informations d’horodatage et de date d’expiration associées à une paire clé-valeur stockée dans le système de stockage distribué 1. Le gestionnaire de temporisation 16 peut être configuré pour vérifier la date d’expiration associée à chaque paire clé-valeur stockée dans le stockage de données contextuelles 14 à différents moments de vérification. Le gestionnaire de temporisation 16 peut par ailleurs être configuré pour supprimer une paire clé/valeur du stockage de données contextuelles 14 si la date d’expiration associée à la paire clé-valeur a été atteinte ou dépassée au moment de la vérification. Selon certains modes de réalisation, le système de stockage distribué 1 peut comprendre une unité de contrôle de stockage 13 configurée pour stocker une paire clé/valeur et les informations auxiliaires associées, spécifiées dans une requête en utilisant les valeurs de plages associées aux nœuds et à un hachage de la clé. Plus spécifiquement, en réponse à la réception d’un message de stockage, tel qu’un message d’addition ou de mise à jour identifiant une paire clé/valeur associée à des informations auxiliaires, l’unité de contrôle de stockage 13 peut être configurée pour stocker la paire clé/valeur dans un nœud sélectionné 140 tout en stockant l’information de date d’expiration dans le même ou dans un autre nœud 140 du stockage de données contextuelles 14. Par ailleurs, l’unité de contrôle de stockage 13 peut être configurée pour stocker les paires clé/valeur et les informations auxiliaires associées à travers les différents nœuds d’une façon optimisée afin d’assurer l’équilibrage de charge. L’unité de contrôle de stockage 13 applique un procédé de stockage pour déterminer un nœud cible dans lequel l’information auxiliaire doit être stockée afin d’assurer autant que possible le stockage de l’information auxiliaire dans le même nœud que la clé/valeur paire associée. La collocation de la paire clé/valeur et des informations auxiliaires associées assure la meilleure performance. Bien que l’unité de contrôle de stockage 13 soit représentée comme étant un composant séparé du système de stockage distribué 1, l’homme de métier comprendra aisément que dans certains modes de réalisation, l’unité de contrôle de stockage 13 peut faire partie du substitut 12 ou de tout autre composant du système de stockage 1. Dans certains modes de réalisation, le stockage de données contextuelles 14 peut comprendre un plusieurs nœuds maîtres et un plusieurs nœuds esclaves qui sont connectés aux nœuds maitres et sont des copies exactes de nœuds maîtres. Lorsqu’un nœud maître et un nœud esclave sont connectés, le nœud maitre garde les esclaves actualisés en envoyant un flux de commande vers le nœud esclave pour répliquer les effets sur l’ensemble de données survenant du côté maitre, occasionnés par exemple par un client qui écrit, des clés expirées ou évincées sur l’ensemble de données. Chaque nœud 140 du stockage de données contextuelles 14 peut être initialement associé à une plage de scores (chaque score représentant un nombre réel). Par ailleurs, les informations auxiliaires associées à une paire clé/valeur (par exemple les données d’expiration de clé) peuvent être stockées dans une ou plusieurs structures de données auxiliaires 1402. La structure de données auxiliaire peut être avantageusement triée par valeur de donnée auxiliaire. Dans certains modes de réalisation, chaque structure de données auxiliaires 1402 peut stocker la correspondance entre les données auxiliaires et une paire clé-valeur. Une structure de données auxiliaires 1402 peut comprendre une ou plusieurs entrées, chaque entrée stockant un identifiant de clé (tel qu’un nom de clé) identifiant une paire clé-valeur et les données auxiliaires associées à la clé. Les structures de données auxiliaires peuvent par exemple représenter un ensemble trié d’éléments de chaîne (correspondant à des noms de clés) associés à des valeurs de données auxiliaires (valeur de données auxiliaires associées aux clés). Les structures de données auxiliaires 1402 peuvent être implémentées par exemple sous forme d’un tableau trié. Les structures de données auxiliaires 1402 peuvent être stockées dans les nœuds 140 du stockage de données contextuelles 14. Dans un mode de réalisation, chaque nœud peut comprendre au moins une structure de données auxiliaires 1402. Chaque structure de données auxiliaires 1402 peut elle-même correspondre à une plage de scores (ci-après désignée comme « plage de scores auxiliaires » pour faire la distinction avec les plages de scores de nœuds). Le nombre N de structures de données auxiliaires 1402 peut être fixé. Autrement, le nombre de structures de données auxiliaires 1402 peut être changé de façon dynamique au cours du temps d’exécution. Les plages de scores auxiliaires peuvent dépendre du nombre N de structures de données auxiliaires. Les plages de scores auxiliaires peuvent avoir des longueurs égales ou différentes, ou être fixées. On notera que les différentes plages de scores auxiliaires peuvent être indépendantes des plages de scores de nœuds. Chaque structure de données auxiliaires 1402 peut en elle-même être vue comme étant une paire clé-valeur stockée dans un nœud 140. Dans une application de l’invention aux données auxiliaires représentant l’information d’expiration de la clé, chaque structure de données auxiliaires 1402 forme une queue d’expiration. L’unité de contrôle de stockage 13 peut être configurée pour déterminer le nœud du 140 dans lequel une paire clé/valeur doit être stockée ou actualisée en réponse à la réception d’un message relatif à la clé/valeur paire. L’unité de contrôle de stockage 13 peut ensuite appliquer une fonction de hachage au nom de la clé ce qui fournit une valeur de score de clé. Le nœud parmi les nœuds 140 du stockage de données contextuelles 14 qui est associé à une plage de scores, dans laquelle la valeur de score de clé est comprise, est ensuite sélectionné par l’unité de contrôle de stockage 13. L’unité de contrôle de stockage 13 peut ensuite stocker la paire clé/valeur dans le nœud sélectionné si le message est un message de stockage de clé, ou actualiser sa valeur dans le nœud sélectionné si le message est un message d’actualisation de clé. Avantageusement, les données auxiliaires associées à une paire clé-valeur sont stockées dans le stockage de données contextuelles 14 pour assurer la collocation entre une clé et les données auxiliaires associées. Le système de stockage 1 peut comprendre une unité d’initialisation 10 configurée pour initialiser les structures de données auxiliaires 1402 avant le temps d’exécution de sorte que la collocation entre une clé et les informations auxiliaires associées soient optimisées. Au cours du processus d’initialisation, l’unité d’initialisation 10 peut attribuer un nom sélectionné à chaque structure de données auxiliaires 1402 et ensuite appliquer une fonction de hachage au nom de structure de données auxiliaire pour obtenir une valeur de score auxiliaire. Cette valeur de score auxiliaire définit ensuite un seuil inférieur (« le seuil auxiliaire inférieur »). Une plage de scores auxiliaire comprise entre le seuil auxiliaire inférieur et un seuil supérieur (le seuil auxiliaire supérieur) est ensuite déterminée. La correspondance entre la structure de données auxiliaires et la plage de scores auxiliaires ainsi déterminée peut ensuite être stockée dans une mémoire accessible aux stockages de données contextuelles 14 (cette mémoire peut être interne ou externe au stockage de données contextuelles). Chaque structure de données auxiliaire 1402 est donc stockée dans un nœud 140 qui est lui-même associé à une plage de scores de nœuds comprenant des valeurs allant d’un seuil inférieur (le seuil de nœud inférieur) à un seuil supérieur (le seuil de nœud supérieur). Dans certains modes de réalisation, l’unité d’initialisation 10 peut être configurée pour stocker une structure de données auxiliaires 1402 dans un nœud 140 si la plage de scores de nœuds associée au nœud 140 inclut le seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires 1402. Avantageusement, le suffixe du nom de la structure de données auxiliaires 1402 peut être sélectionné par l’unité d’initialisation 10 de sorte que l’application de la même fonction de hachage que celle utilisée par l’unité de contrôle de stockage 13 pour déterminer un hachage des clés, fournisse une valeur qui correspond au seuil inférieur (le seuil auxiliaire inférieur) de la plage de scores auxiliaires associée à la structure de données auxiliaires. Avantageusement, les unités d’initialisation 10 et de contrôle de stockage 13 permettent, pour la plupart des données auxiliaires, le stockage des données auxiliaires dans le même nœud que le nœud dans lequel la clé-valeur paire correspondante est stockée. Cependant, il peut survenir dans un nombre très limité de cas que les données auxiliaires et la paire clé-valeur correspondante soient stockées dans des nœuds différents Dans un mode de réalisation ou le nombre de nœuds 140 est une puissance deux, pour toutes les paires clé-valeur, les données auxiliaires sont stockées dans le même nœud que le nœud dans lequel la clé-valeur paire est stockée. Dans une application de l’invention aux données auxiliaires représentant l’information d’expiration des paires clé-valeur, le triage des structures de données auxiliaires 1402 assure une gestion optimisée de l’expiration des paires clé-valeur par le gestionnaire de temporisation 16 qui est ainsi habilité pour rapidement retirer les paires clé-valeur expirées des structures de données auxiliaires 1402. Lorsque le nombre de structures de données auxiliaires 1402 est fixé au moment de l’initialisation, le temps nécessaire pour que le gestionnaire de temporisation mette en retrait la paire clé-valeur expirée de la file d’attente est fixé et indépendant du nombre de clés stockées dans le stockage de données contextuelles 14. Dans ce mode de réalisation, le gestionnaire de temporisation 16 peut être configuré pour surveiller la durée de vie (TTL) des données contextuelles stockées dans les nœuds 140 sur la base de l’information de date d’expiration (donnée auxiliaire) associée aux paires clé/valeur stockées dans les structures de données auxiliaires 1402. Dans ce mode de réalisation exemplaire, les structures de donnée 1402 peuvent former des files d’attente de durée de vie (TTL) qui peuvent être utilisées par le gestionnaire de temporisation 16 pour gérer les TTL des données contextuelles stockées dans les nœuds 140. Le gestionnaire de temporisation 16 peut être configuré pour surveiller, selon une période de veille, les données stockées dans les nœuds 140 du stockage de données contextuelles 14. Le gestionnaire de temporisation 16 peut accéder aux nœuds 140 à un moment instantané d’accès donné correspondant à la durée de surveillance, récupérer les paires clé-valeur associées à une information de date d’expiration (donnée auxiliaire) qui est antérieure ou égale à l’instant d’accès en utilisant les structures de données auxiliaires 1402, et ajouter les paires clés/valeur récupérées dans une ou plusieurs listes d’attente de suppression. Les listes d’attente de suppression peuvent comprendre une liste par serveur d’applications 110. Le gestionnaire de temporisation 16 peut par ailleurs déclencher une opération ou une action avant la suppression d’une paire clé-valeur expirée des listes d’attente de suppression, par exemple en emettant une notification pour demander la suppression de données, relatives à la paire clé-valeur, telles que des données de produits si le système de transmission de données fournit des produits (p. ex. des billets) lorsque la transaction n’a pas été finalisée (l’utilisateur n’a pas acheté le produit). Le fait de permettre la collocation des paires clé-valeur avec les données auxiliaires dans les nœuds du stockage de données contextuelles 14 est un avantage de l’invention. Vu que chaque nœud peut être implémenté sur un serveur ou une machine, cette colocation limite le nombre de connexions sur les serveurs de nœuds ou sur les machines et le groupement des transferts de réseau, augmentant ainsi les performances du système. Un même message peut par exemple être utilisé pour demander une opération d’écriture sur la paire clé-valeur et sur les données auxiliaires. La figure 4 illustre un procédé de stockage de paires clé/valeur dans les nœuds 140 du stockage de données 14. Le procédé de stockage est implémenté pour colocaliser autant que possible la paire clé/valeur et ces informations auxiliaires associées afin d’optimiser la performance du système 1. Le stockage de données contextuelles 14 peut être un système créneau associé à un créneau de valeur défini par un créneau une plage entre le seuil inférieur d’un système Tlow et un seuil supérieur Tup (par exemple de 0 à 16383) capable de distribuer les clés sur les différents nœuds 140. Dans l’agencement du stockage de données contextuelles, des plages de créneaux peuvent être attribuées à chaque nœud 140. Si l’on envisage une application exemplaire de l’invention avec 3 nœuds maitres et une plage globale associée aux nœuds du stockage de données contextuelles 14 égale à [0, 16383], les créneaux suivants (ou plages) peuvent être attribués aux nœuds maîtres : - Nœud 1 : 0-5461 - Nœud 2 : 5462-10922 - Nœud 3 : 10923-16383. À l’étape 400, un message, comprenant une paire clé/valeur et des informations auxiliaires associées, est reçu d’un serveur d’applications 110 par le système de stockage distribué 1. À l’étape 402, un identifiant peut être ajouté au message incluant la paire clé/valeur, par exemple sous la forme d’un préfixe, l’identifiant identifiant le serveur d’applications émetteur. À l’étape 404, la clé comprise dans le message reçu est hachée avec une fonction de hachage modulo le seuil supérieur Tup, telle que l’algorithme CRC16 appliqué à la clé modulo 16383 pour déterminer une valeur de créneau correspondante. Par exemple, la fonction de hachage CRC16( ) appliquée à la clé «MYKEY_ABC», modulo la valeur de seuil supérieur « 16383 » peut être : CRC16 (MYKEY_ABC) % 16383 = 2394. À l’étape 406, la clé hachée est stockée dans le nœud correspondant au créneau déterminé (dans l’exemple ci-dessus, la clé hachée MYKEY_ABC serait stockée dans le nœud maitre 1. La figure 5 illustre le procédé de création de structures de données auxiliaires 1402 dans les nœuds 140, selon certains modes de réalisation. À l’étape 500, un nombre de créneaux sans chevauchements est créé. Par exemple, les plages suivantes sans chevauchements peuvent être définies initialement à partir des valeurs : [0 8192 12288 4096 2048 10240 14336 6144 7168 15360 11264 3072 5120 13312 9216 1024…] À l’étape 502, un nombre N (par exemple N=16) de valeurs peut être ensuite conservé parmi les plages créées, les plages sélectionnées étant triées pour définir les plages sans chevauchements N=16 où les informations auxiliaires (les valeurs d’expiration des clés) doivent être stockées. [0 - 1024 [[1024 - 2048 [[2048 - 3072 [... Le nombre N de plages de créneaux peut être modifié dynamiquement pendant le temps d’exécution en générant une permutation des créneaux. À l’étape 504, des noms peuvent être générés pour chaque plage de scores auxiliaires créée à l’étape 500. À l’étape 504, des noms peuvent être générés pour chaque structure de données auxiliaires 1402 de sorte qu’ils satisfassent une contrainte (« contrainte de nom ») liée à la plage de scores auxiliaires déterminée à l’étape 502. Dans un mode de réalisation, la contrainte de nom est satisfaite si l’application de la fonction de hachage au nom généré de la structure de données auxiliaires 1402 fournit une valeur de score qui correspond au seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires 1402 à l’étape 502. Cela permet un stockage optimisé de la structure de données auxiliaires 1402 dans les nœuds 140. Dans certains modes de réalisation, seule une partie du nom comprenant un nombre de lettres formant la signature de la structure de données auxiliaires peut être déterminé afin d’assurer que le nom de structure de données auxiliaires satisfait la contrainte de nom, en fonction du type de fonction de hachage, pendant que les autres parties du nom de la structure de données auxiliaires peuvent être une quelconque chaîne. En particulier, le nombre de lettres spécifiquement sélectionnées pour satisfaire la contrainte de nom peut être placé à la fin du nom de la structure de données auxiliaires (les dernières lettres ou suffixes du nom de la structure de données auxiliaires). Dans un mode de réalisation exemplaire, 4 lettres (par exemple « ABCD ») peuvent être sélectionnées et positionnées à la fin du nom de la structure de données auxiliaires. Le nom de la structure de données auxiliaires stocké dans un nœud 140 du stockage de données 14 est ensuite choisi pour satisfaire la contrainte selon laquelle le hachage du nom « NomStructureDonnéesAuxiliairesABCD » fournit une valeur correspondant au seuil inférieur de la plage de scores auxiliaires correspondante. Par exemple, les noms des structures de données auxiliaires peuvent avoir le modèle NomAux : zzzz où zzzz sont les lettres sélectionnées. Le procédé de la figure 5 permet ainsi de déterminer les quatre lettres qui assurent que le nom de la structure de données auxiliaires satisfait la contrainte de nom. Par exemple : - un suffixe ZZZZ est déterminé de sorte que la fonction de hachage au nom NomAux : ZZZZ de la structure de données auxiliaires 1402 associée à la plage de scores auxiliaires [0-1024] fournisse une valeur égale au seuil inférieur de la plage de scores auxiliaires, notamment « 0 » ; - un suffixe XXXX est déterminé de sorte que l’application de la fonction de hachage au nom NomAux : XXXX de la structure de données auxiliaires 1402 associée à la plage de scores auxiliaires [1024-2048] fournisse une valeur égale au seuil inférieur de la plage de scores auxiliaires, notamment « 1024 » ; La fonction de hachage peut aussi, par exemple, être l’algorithme CRC16 appliqué au nom de NomAux : ZZZZ modulo le seuil supérieur du système de la plage globale (16383). Ceci fournit N (par exemple, N=16) noms pour les N structures de données auxiliaires 1402 associées aux plages de scores auxiliaires et couvrant la plage de créneaux de l’ensemble du système [0 ; 16383]. Par exemple, les noms suivants de structures de données auxiliaires peuvent être déterminés pour les 16 structures de données auxiliaires : NomAux : BABH (seuil inférieur 0 de la première plage de scores auxiliaires) NomAux : AAWS (seuil inférieur 1024 de la deuxième plage de scores auxiliaires) NomAux : BENE (seuil inférieur 2048 de la troisième plage de scores auxiliaires) NomAux : AMRF (seuil inférieur 3072 de la quatrième plage de scores auxiliaires) -NomAux : BASJ (seuil inférieur 4096 de la cinquième plage de scores auxiliaires) NomAux : AGLZ (seuil inférieur 14336 de la ie plage de scores auxiliaires) ; - NomAux : BGYA (seuil inférieur 15360 de la dernière plage de scores auxiliaires) ; La figure 6 illustre le procédé de stockage des informations auxiliaires associé à une clé dans le stockage de données contextuelles 140 selon certains modes de réalisation (étape 408 de la figure 4). La figure 6 correspond à un mode de réalisation où chaque clé est associée à l’information auxiliaire représentée par une information de date d’expiration (information de temporisation). À l’étape 600, la clé associée à l’information auxiliaire qui doit être stockée dans le stockage de données contextuelles 14 est reçue. À l’étape 602, la clé est hachée en utilisant l’algorithme cryptographique qui fournit une valeur de score. La fonction de hachage peut par exemple être l’algorithme CRC6 appliqué au nom de la clé MYKEY_ABC modulo le seuil supérieur du créneau de système : CRC16 (MYKEY_ABC) % 16383 = 2394 Cela donne la valeur de score 2394. À l’étape 603, la plage de scores auxiliaires correspondant au nœud 140 dans lequel les informations auxiliaires doivent être stockées est déterminée à partir de la valeur de score (par exemple 2394) calculée à l’étape 602. Ceci comprend le fait de déterminer à quelle plage de scores auxiliaires, parmi les N plages de scores auxiliaires définies pour les structures de données auxiliaires 1402, appartient la valeur de score calculée à l’étape 602. Par exemple la valeur de créneau « 2394 » appartient à la plage [2048 – 3072 [. À l’étape 604, le nom de la structure de données auxiliaires associée à la plage déterminée à l’étape 603 est récupéré (par exemple la plage [2048 – 3072 [correspond au nom « NomAux : BENE »). À l’étape 606, le nœud 140 (le nœud maître dans les modes de réalisation où les nœuds maitres esclaves sont utilisés), sur lequel est déterminée la structure de données auxiliaires 1402 associée au nom obtenu à l’étape 604. Ce sera dans la plupart des cas le même nœud que le nœud sur lequel la clé est stockée en raison du nom de la structure de données auxiliaires. Par exemple, MYKEY_ABC (créneau 2048) et « NomAux : BENE » (créneau 2394) sont tous deux situés sur le nœud 1. À l’étape 608, une ou plusieurs commandes peuvent être émises au serveur correspondant au nœud déterminé à l’étape 606 pour stocker les informations auxiliaires sur le nœud. Si les informations auxiliaires comprennent différents types de données (par exemple si les informations auxiliaires comprennent une donnée de clé et une donnée de temporisation), une commande peut être émise pour chaque type de donnée. Les divers modes de réalisation de l’invention permettent donc un stockage distribué permettant aux divers serveurs d’applications 110 de fonctionner sur une ou plusieurs machines du système de transmission de données 11 pour utiliser la même donnée et pour mettre à jour la même donnée tout en évitant des conflits de mise à jour de données. Les serveurs d’application 110 peuvent ensuite avoir un accès simultané aux données contextuelles (par exemple pour lire ou écrire les données) tout en permettant une gestion efficace des données auxiliaires de contexte, telles que la donnée d’expiration de clé. Le système de stockage distribué 1 est capable de maintenir un niveau de cohérence entre les différents serveurs d’applications. Par exemple, si un serveur d’applications 110 actualise des données contextuelles, les mises à jour peuvent être exécutées immédiatement sur le stockage de données contextuelles 14 avec une cohérence élevée. En particulier, le système de stockage distribué évite la perte de mises à jour simultanées. Par ailleurs, le serveur d’applications 110 peut avoir un accès parallèle aux données contextuelles, ce qui contribuent toujours à maintenir une latence et une résilience élevées du système de transmission de données 11 tout en assurant la continuité de services en cas de panne de machine. La figure 7 illustre une implémentation exemplaire du système de stockage distribué 1 dans laquelle chaque information auxiliaire correspond à la date d’expiration associée à la clé correspondante. Dans l’exemple de la figure 7, le stockage de données contextuelles 14 comprend trois nœuds, le nœud 1, le nœud 2 et le nœud 3, les nœuds étant associés aux plages suivantes comme dans l’exemple précédent : - Nœud maître-1 : plage 0-5461 - Maître-2 : plage 5462-10922 - Maître-3 : plage 10923-16383 Dans la figure 7, il est supposé qu’une paire clé-valeur ayant le nom de clé « jean » et une valeur de clé « 0612330034 » a été stockée dans le stockage de données contextuelles 14. La paire clé-valeur « jean »/« 0612330034 » est par ailleurs associée à l’information d’expiration (donnée auxiliaire) égale à 60s. Au moment de l’initialisation le nom de chaque structure de données auxiliaire 1402 est choisi de sorte que l’application de la fonction de hachage au nom de la structure de donnée auxiliaire 1402 fournisse une valeur de score qui correspond au seuil inférieur auxiliaire de la plage de scores auxiliaires associée à la structure de données auxiliaires 1402. La longueur de la plage de scores auxiliaires associée à une structure de données auxiliaires 1402 peut être déterminée en fonction de différents paramètres incluant le nombre N de structures de données auxiliaires. Le seuil supérieur est ensuite dérivé à partir du seuil inférieur déterminé pour la plage de scores auxiliaires et à partir de la longueur déterminée. La correspondance entre chaque structure de données auxiliaires 1402 et la plage de scores auxiliaires déterminée est ensuite stockée dans une mémoire pour un accès subséquent durant le traitement d’un message relatif à une clé particulière par le système de stockage distribué 1. En supposant qu’un message de mise à jour soit reçu pour actualiser la clé, l’unité de contrôle de stockage 13 peut déterminer le nœud dans lequel la clé « jean » est stockée en appliquant une fonction de hachage à la chaîne « jean » correspondant au nom de la clé. En supposant que cela donne une valeur de score égale à « 368 », pour déterminer le nœud stockant la clé « jean » l’unité de contrôle de stockage 13 peut déterminer quels nœuds parmi les M nœuds sont associés à une plage de scores de nœuds dans laquelle la valeur 368 est incluse. Cela correspondant dans l’exemple au nœud 1 qui est associé à la plage [0, 5461]. Pour déterminer dans quel nœud l’information auxiliaire « 60 s » associée à la clé « Jean » doit être stockée dans une structure de données auxiliaires 1402, la fonction de hachage est appliquée au nom de clé « jean », ce qui fournit la valeur « 368 ». La structure de données auxiliaires 1402 associée à un score de plage auxiliaire dans laquelle la valeur 368 est comprise, est ensuite sélectionnée. En raison du processus de nomination au moment de l’initialisation, on a l’assurance que la structure de données auxiliaires 1402 ayant cette plage de scores auxiliaires à une très forte probabilité d’être incluse dans le premier nœud, le nœud -1. Dans l’exemple considéré, la structure de données auxiliaires sélectionnée 1402 est la première qui a un score de plage auxiliaire associée égale à [0 ; 1024]. Les modes de réalisation de l’invention assurent donc la cohérence des données contextuelles stockées à travers un ensemble de nœuds distincts 140. Le système de stockage distribué 1 fournit avantageusement un modèle amélioré pour stocker et accéder à des informations de contexte. Par ailleurs, les procédés décrits dans la présente peuvent être implémentés par des instructions de programmes informatiques fournies au processeur de tout type d’ordinateur pour produire une machine avec un processeur qui exécute des instructions afin d’implémenter les fonctions/actions spécifiées dans la présente. Ces instructions de programmes informatiques peuvent aussi être stockées sur un support lisible par ordinateur qui peut instruire un ordinateur pour fonctionner de façon particulière. Dans ce but, les instructions de programmes informatiques peuvent être chargées sur un ordinateur pour entraîner l’exécution d’une série d’étapes opérationnelles et produire ainsi un processus implémenté par ordinateur de sorte que les instructions exécutées fournissent les processus pour implémenter les fonctions/actions spécifiées dans la présente. On notera que les fonctions, les actions et/ou des opérations spécifiées dans les organigrammes, diagrammes de séquence, et/ou des diagrammes blocs peuvent être réordonnées, traitées en série, et/ou traitées en même temps selon les modes de réalisation de l’invention. De plus, tout organigramme, diagramme séquentiel et/ou diagramme bloc peut inclure plus ou moins de blocs que ceux qui sont illustrés, tout en restant cohérents avec les modes de réalisation de l’invention. Bien que l’invention soit illustrée par une description de divers modes de réalisation et bien que ces modes de réalisation soient décrits de façon très détaillée dans les présentes, le demandeur n’a pas l’intention de restreindre ou de limiter d’aucune façon le champ d’application des revendications en annexe à ces détails. Des avantages et des modifications supplémentaires apparaîtront aisément aux hommes de métier. L’invention sous ses aspects plus larges n’est donc pas limitée aux détails spécifiques, aux procédés représentatifs et aux exemples illustratifs montrés et décrits. Système de stockage distribué (1) pour stocker des données contextuelles reçues d’un système de transmission de données (11), le système de stockage distribué (1) comprenant un stockage de données contextuelles (14) comprenant une pluralité de nœuds pour stocker lesdites données contextuelles, dans lequel chacun des nœuds (140) est associé à une plage de scores de nœuds, les nœuds comprenant au moins une structure de données auxiliaires (1402) stockant un mappage entre une clé et des informations auxiliaires, dans lequel chaque structure de données auxiliaires (1402) est associée à une plage de scores auxiliaires, le système de stockage distribué étant configuré pour : - recevoir un message provenant d’un serveur d’applications externe (110) dans le système de transmission de données (11), le message comprenant des données contextuelles représentées par une paire clé-valeur et des informations auxiliaires associées à ladite paire clé-valeur ; - appliquer une fonction de hachage à un identifiant de la clé, ce qui fournit une valeur de score ; - déterminer la plage de scores de nœuds, parmi lesdites plages de scores de nœuds associées aux nœuds (1402) qui comprend la valeur de score ; - stocker la paire clé-valeur dans le nœud correspondant à ladite plage de scores de nœuds ; - déterminer la plage de scores auxiliaires, parmi lesdites plages de scores auxiliaires associées aux structures de données auxiliaires (1402) qui comprend la valeur de score ; - stocker l’information auxiliaire dans la structure de données auxiliaires (1402) correspondant à la plage de scores auxiliaires déterminée. Système de stockage distribué selon la revendication 1, dans lequel le système de stockage distribué comprend une unité d’initialisation (10) configurée pour stocker initialement chaque structure de données auxiliaires dans un nœud (140) du stockage de données contextuelles (14), l’unité d’initialisation étant configurée pour stocker une structure de données auxiliaires dans un nœud si la plage de scores de nœuds associée au nœud inclut le seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires. Système de stockage distribué selon l’une quelconque des revendications précédentes 1 et 2, dans lequel l’identifiant de la clé auquel la fonction de hachage est appliquée est le nom de la clé. Système de stockage distribué selon la revendication 2 et 3, dans lequel l’unité d’initialisation est configurée pour générer un nom pour chaque structure de données auxiliaires associée à une plage de scores auxiliaires, le nom étant sélectionné de sorte que l’application de la fonction de hachage au nom de la structure de données auxiliaires fournisse une valeur de score qui correspond au seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires. Système de stockage distribué selon la revendication 4, dans lequel le nom de chaque structure de données auxiliaires comprend des lettres aléatoires et un suffixe de nom, le suffixe de nom étant sélectionné de sorte que l’application de la fonction de hachage au nom de la structure de données auxiliaires fournisse une valeur de score qui correspond au seuil inférieur de la plage de scores auxiliaires associée à la structure de données auxiliaires. Système de stockage distribué selon l’une quelconque des revendications précédentes, dans lequel le système est hébergé dans un système dématérialisé « cloud ». Système de stockage distribué selon l’une quelconque des revendications précédentes, dans lequel le système de stockage distribué comprend au moins un substitut configuré pour échanger des messages avec le système de transmission de données (11). Système de stockage distribué selon la revendication 7, dans lequel le nombre de substituts utilisés par le système de stockage distribué (1) est déterminé de façon dynamique à partir du nombre de requêtes reçues desdits serveurs d’applications (110) par seconde. Système de stockage distribué selon l’une quelconque des revendications précédentes, dans lequel le système de stockage distribué (1) est configuré pour ajouter un identifiant à chaque message reçu du système de transmission de données (11), l’identifiant identifiant un serveur d’applications (110) du système de transmission de données à partir duquel le message est initié. Système de stockage distribué selon l’une quelconque des revendications précédentes, dans lequel les plages de scores de nœuds sont délimitées par un seuil de système inférieur et un seuil de système supérieur, la fonction de hachage comprenant l’application une fonction CRC modulo le seuil de système supérieur. Système de stockage distribué selon l’une quelconque des revendications précédentes, dans lequel le nombre de plages de scores de nœuds attribuées aux nœuds du stockage de données contextuelles (14) est changé de façon dynamique durant le temps d’exécution en générant une permutation des plages. Système de stockage distribué selon l’une quelconque des revendications précédentes, dans lequel chaque nœud (140) comprend un serveur, le système de stockage distribué comprenant l’émission d’une ou de plusieurs commandes au serveur correspondant au nœud de destination pour stocker l’information auxiliaire dans un nœud. Système de stockage distribué (1) selon l’une quelconque des revendications précédentes, dans lequel les données contextuelles sont récupérées à partir du système de stockage distribué (1) par le système de transmission de données (11) pour restaurer une session interrompue. Système de stockage distribué (1) selon l’une quelconque des revendications précédentes, dans lequel lesdites informations auxiliaires comprennent la date d’expiration des données contextuelles, le système de stockage distribué comprenant un gestionnaire de temporisation (16) configuré pour vérifier la date d’expiration associée à chaque paire clé-valeur stockée dans le stockage de données contextuelles (14) à différents instants de vérification, le gestionnaire de temporisation étant par ailleurs configuré pour supprimer une paire clé/valeur du stockage de données contextuelles (14) si la date d’expiration associée à la paire clé-valeur a été atteinte ou dépassée au moment de la vérification. Procédé pour stocker des données contextuelles reçues d’un système de transmission de données (11) comprenant un stockage de données contextuelles (14), le stockage de données contextuelles comprenant une pluralité de nœuds pour stocker lesdites données contextuelles, chacun des nœuds (140) étant associés à une plage de scores de nœuds, les nœuds comprenant au moins une structure de données auxiliaires (1402) stockant un mappage entre une clé et des informations auxiliaires, chaque structure de données auxiliaires (1402) étant associée à une plage de scores auxiliaires, dans lequel le procédé comprend : - la réception d’un message provenant d’un serveur d’applications externe (110) dans le système de transmission de données (11), le message comprenant des données contextuelles représentées par une paire clé-valeur et des informations auxiliaires associées à ladite paire clé-valeur ; - l’application d’une fonction de hachage à un identifiant de la clé, ce qui fournit une valeur de score ; - la détermination de la plage de scores de nœuds parmi lesdites plages de scores de nœuds associées aux nœuds (1402) qui comprend la valeur de score ; - le stockage de la paire clé-valeur dans le nœud correspondant à ladite plage de scores de nœuds ; - la détermination de la plage de scores auxiliaires, parmi lesdites plages de scores auxiliaires associées aux structures de données auxiliaires (1402) qui comprend la valeur de score ; - le stockage des informations auxiliaires dans la structure de données auxiliaires (1402) correspondant à la plage de scores auxiliaires déterminée.