{"id":77159,"date":"2024-05-27T08:38:53","date_gmt":"2024-05-27T07:38:53","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=77159&#038;preview=true&#038;preview_id=77159"},"modified":"2024-05-28T12:54:37","modified_gmt":"2024-05-28T11:54:37","slug":"node-js-clustering","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/","title":{"rendered":"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-node-js\/\">Node.js<\/a> est un <a href=\"https:\/\/kinsta.com\/fr\/blog\/deno-vs-node-js\/\">moteur d&rsquo;ex\u00e9cution JavaScript<\/a> c\u00f4t\u00e9 serveur qui utilise un mod\u00e8le d&rsquo;entr\u00e9e-sortie (E\/S) non bloquant et pilot\u00e9 par les \u00e9v\u00e8nements. Il est largement reconnu pour la construction d&rsquo;applications web rapides et \u00e9volutives. Il dispose \u00e9galement d&rsquo;une grande communaut\u00e9 et d&rsquo;une riche biblioth\u00e8que de modules qui simplifient diverses t\u00e2ches et processus.<\/p>\n<p>Le clustering am\u00e9liore les performances des <a href=\"https:\/\/kinsta.com\/fr\/blog\/applications-node-js\/\">applications Node.js<\/a> en leur permettant de s&rsquo;ex\u00e9cuter sur plusieurs processus. Cette technique leur permet d&rsquo;utiliser tout le potentiel d&rsquo;un syst\u00e8me multic\u0153ur.<\/p>\n<p>Cet article pr\u00e9sente une vue d&rsquo;ensemble du clustering dans Node.js et de la mani\u00e8re dont il affecte les performances d&rsquo;une application.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Qu&rsquo;est-ce que le clustering ?<\/h2>\n<p>Par d\u00e9faut, les applications Node.js s&rsquo;ex\u00e9cutent sur un seul thread. Cette nature monot\u00e2che signifie que Node.js ne peut pas utiliser tous les c\u0153urs d&rsquo;un syst\u00e8me multic\u0153ur &#8211; ce qui est le cas de la plupart des syst\u00e8mes actuels.<\/p>\n<p>Node.js peut n\u00e9anmoins traiter plusieurs requ\u00eates simultan\u00e9ment en exploitant les op\u00e9rations d&rsquo;E\/S non bloquantes et les techniques de programmation asynchrones.<\/p>\n<p>Toutefois, les t\u00e2ches de calcul lourdes peuvent bloquer la boucle d&rsquo;\u00e9v\u00e8nements et emp\u00eacher l&rsquo;application de r\u00e9pondre. Par cons\u00e9quent, Node.js est livr\u00e9 avec un module cluster natif &#8211; ind\u00e9pendamment de sa nature monot\u00e2che &#8211; pour tirer parti de la puissance de traitement totale d&rsquo;un syst\u00e8me multic\u0153ur.<\/p>\n<p>L&rsquo;ex\u00e9cution de plusieurs processus tire parti de la puissance de traitement de plusieurs c\u0153urs d&rsquo;unit\u00e9 centrale de traitement (CPU) pour permettre un traitement parall\u00e8le, r\u00e9duire les temps de r\u00e9ponse et augmenter le d\u00e9bit. Cela permet d&rsquo;am\u00e9liorer les performances et l&rsquo;\u00e9volutivit\u00e9 des applications Node.js.<\/p>\n<h3>Comment fonctionne le clustering ?<\/h3>\n<p>Le <a href=\"https:\/\/nodejs.org\/api\/cluster.html\" target=\"_blank\" rel=\"noopener noreferrer\">module de cluster Node.js<\/a> permet \u00e0 une application Node.js de cr\u00e9er un cluster de processus enfants fonctionnant simultan\u00e9ment, chacun g\u00e9rant une partie de la charge de travail de l&rsquo;application.<\/p>\n<p>Lors de l&rsquo;initialisation du module cluster, l&rsquo;application cr\u00e9e le processus principal, qui transforme ensuite les processus enfants en processus workers. Le processus primaire agit comme un \u00e9quilibreur de charge, distribuant la charge de travail aux processus workers pendant que chaque processus worker est \u00e0 l&rsquo;\u00e9coute des requ\u00eates entrantes.<\/p>\n<p>Le module de cluster Node.js dispose de deux m\u00e9thodes pour distribuer les connexions entrantes.<\/p>\n<ul>\n<li><strong>L&rsquo;approche <\/strong><strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_scheduling\" target=\"_blank\" rel=\"noopener noreferrer\">approche round-robin<\/a><\/strong> &#8211; Le processus principal \u00e9coute sur un port, accepte les nouvelles connexions et r\u00e9partit uniform\u00e9ment la charge de travail pour s&rsquo;assurer qu&rsquo;aucun processus n&rsquo;est surcharg\u00e9. Il s&rsquo;agit de l&rsquo;approche par d\u00e9faut sur tous les syst\u00e8mes d&rsquo;exploitation, \u00e0 l&rsquo;exception de Windows.<\/li>\n<li><strong>La deuxi\u00e8me approche<\/strong> &#8211; Le processus principal cr\u00e9e la socket d&rsquo;\u00e9coute et l&rsquo;envoie aux workers \u00ab int\u00e9ress\u00e9s \u00bb, qui acceptent directement les connexions entrantes.<\/li>\n<\/ul>\n<p>En th\u00e9orie, la deuxi\u00e8me approche &#8211; qui est plus compliqu\u00e9e &#8211; devrait offrir de meilleures performances. Mais en pratique, la distribution des connexions est tr\u00e8s d\u00e9s\u00e9quilibr\u00e9e. La <a href=\"https:\/\/nodejs.org\/api\/cluster.html#how-it-works\" target=\"_blank\" rel=\"noopener noreferrer\">documentation de Node.js<\/a> mentionne que 70 % de toutes les connexions aboutissent \u00e0 seulement deux processus sur huit.<\/p>\n<h2>Comment regrouper vos applications Node.js ?<\/h2>\n<p>Examinons maintenant les effets du clustering dans une application Node.js. Ce tutoriel utilise une application Express qui ex\u00e9cute intentionnellement une t\u00e2che de calcul lourde pour bloquer la boucle d&rsquo;\u00e9v\u00e8nements.<\/p>\n<p>Tout d&rsquo;abord, ex\u00e9cutez cette application sans clustering. Ensuite, enregistrez les performances \u00e0 l&rsquo;aide d&rsquo;un outil d&rsquo;analyse comparative. Ensuite, le clustering est impl\u00e9ment\u00e9 dans l&rsquo;application et l&rsquo;analyse comparative est r\u00e9p\u00e9t\u00e9e. Enfin, comparez les r\u00e9sultats pour voir comment le clustering am\u00e9liore les performances de votre application.<\/p>\n<h3>Premiers pas<\/h3>\n<p>Pour comprendre ce tutoriel, vous devez \u00eatre familiaris\u00e9 avec Node.js et <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-express-js\/\">Express<\/a>. Pour configurer votre <a href=\"https:\/\/kinsta.com\/fr\/blog\/creer-application-express\/\">serveur Express<\/a> :<\/p>\n<ol start=\"1\">\n<li>Commencez par cr\u00e9er le projet.\n<pre><code class=\"language-bash\">mkdir cluster-tutorial<\/code><\/pre>\n<\/li>\n<li>Naviguez jusqu&rsquo;au r\u00e9pertoire de l&rsquo;application et cr\u00e9ez deux fichiers, <strong>no-cluster.js<\/strong> et <strong>cluster.js<\/strong>, en ex\u00e9cutant la commande ci-dessous :\n<pre><code class=\"language-bash\">cd cluster-tutorial && touch no-cluster.js && touch cluster.js<\/code><\/pre>\n<\/li>\n<li>Initialisez NPM dans votre projet :\n<pre><code class=\"language-bash\">npm init -y<\/code><\/pre>\n<\/li>\n<li>Enfin, installez Express en ex\u00e9cutant la commande ci-dessous :\n<pre><code class=\"language-bash\">npm install express<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Cr\u00e9ation d&rsquo;une application non group\u00e9e<\/h3>\n<p>Dans votre fichier <strong>no-cluster.js<\/strong>, ajoutez le bloc de code ci-dessous :<\/p>\n<pre><code class=\"language-javascript\">const express = require(\"express\");\nconst PORT = 3000;\n\nconst app = express();\n\napp.get(\"\/\", (req, res) =&gt; {\n  res.send(\"Response from server\");\n});\n\napp.get(\"\/slow\", (req, res) =&gt; {\n  \/\/Start timer \n  console.time(\"slow\");\n\n  \/\/ Generate a large array of random numbers\n  let arr = [];\n  for (let i = 0; i &lt; 100000; i++) {\n  arr.push(Math.random());\n  }\n\n  \/\/ Perform a heavy computation on the array\n  let sum = 0;\n  for (let i = 0; i  {\n  console.log(`Server listening on port ${PORT}`);\n});<\/code><\/pre>\n<p>Le bloc de code ci-dessus cr\u00e9e un serveur express qui fonctionne sur le port <code>3000<\/code>. Le serveur a deux routes, une route racine (<code>\/<\/code>) et une route <code>\/slow<\/code>. La route racine envoie une r\u00e9ponse au client avec le message suivant : \u00ab Response from server \u00bb<\/p>\n<p>Cependant, la route <code>\/slow<\/code> effectue intentionnellement des calculs lourds pour bloquer la boucle d&rsquo;\u00e9v\u00e8nements. Cette route d\u00e9marre un minuteur et remplit ensuite un tableau avec 100.000 nombres al\u00e9atoires \u00e0 l&rsquo;aide d&rsquo;une boucle <code>for<\/code>.<\/p>\n<p>Ensuite, \u00e0 l&rsquo;aide d&rsquo;une autre boucle <code>for<\/code>, il met au carr\u00e9 chaque nombre du tableau g\u00e9n\u00e9r\u00e9 et les additionne. La minuterie se termine \u00e0 la fin de l&rsquo;op\u00e9ration et le serveur r\u00e9pond avec les r\u00e9sultats.<\/p>\n<p>D\u00e9marrez votre serveur en ex\u00e9cutant la commande ci-dessous :<\/p>\n<pre><code class=\"language-bash\">node no-cluster.js<\/code><\/pre>\n<p>Effectuez ensuite une requ\u00eate GET \u00e0 l&rsquo;adresse <code>localhost:3000\/slow<\/code>.<\/p>\n<p>Pendant ce temps, si vous tentez d&rsquo;envoyer d&rsquo;autres requ\u00eates \u00e0 votre serveur &#8211; par exemple \u00e0 la route racine (<code>\/<\/code>) &#8211; les r\u00e9ponses sont lentes car la route <code>\/slow<\/code> bloque la boucle d&rsquo;\u00e9v\u00e8nements.<\/p>\n<h3>Cr\u00e9ation d&rsquo;une application group\u00e9e<\/h3>\n<p>Cr\u00e9ez des processus enfants \u00e0 l&rsquo;aide du module cluster pour vous assurer que votre application ne devient pas insensible et ne bloque pas les requ\u00eates ult\u00e9rieures lors de t\u00e2ches de calcul lourdes.<\/p>\n<p>Chaque processus enfant ex\u00e9cute sa boucle d&rsquo;\u00e9v\u00e8nements et partage le port du serveur avec le processus parent, ce qui permet une meilleure utilisation des ressources disponibles.<\/p>\n<p>Tout d&rsquo;abord, importez le module Node.js cluster et <code>os<\/code> dans votre fichier <strong>cluster.js.<\/strong> Le module cluster permet de cr\u00e9er des processus enfants afin de r\u00e9partir la charge de travail sur plusieurs c\u0153urs de processeur.<\/p>\n<p>Le module <code>os<\/code> fournit des informations sur le syst\u00e8me d&rsquo;exploitation de votre ordinateur. Vous avez besoin de ce module pour connaitre le nombre de c\u0153urs disponibles sur votre syst\u00e8me et vous assurer que vous ne cr\u00e9ez pas plus de processus enfants que de c\u0153urs sur votre syst\u00e8me.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Si vous cr\u00e9ez plus de processus enfants que de c\u0153urs sur votre syst\u00e8me, celui-ci passera plus de temps \u00e0 passer d&rsquo;un processus \u00e0 l&rsquo;autre. Cela entraine une augmentation des frais g\u00e9n\u00e9raux et une diminution des performances.<\/p>\n<\/aside>\n\n<p>Ajoutez le bloc de code ci-dessous pour importer ces modules et r\u00e9cup\u00e9rer le nombre de c\u0153urs sur votre syst\u00e8me :<\/p>\n<pre><code class=\"language-javascript\">const cluster = require(\"node:cluster\");\nconst numCores = require(\"node:os\").cpus().length;<\/code><\/pre>\n<p>Ensuite, ajoutez le bloc de code ci-dessous \u00e0 votre fichier <strong>cluster.js<\/strong>:<\/p>\n<pre><code class=\"language-javascript\">if (cluster.isMaster) {\n  console.log(`Master ${process.pid} is running`);\n  console.log(`This machine has ${numCores} cores`);\n\n  \/\/ Fork workers.\n  for (let i = 0; i  {\n  console.log(`worker ${worker.process.pid} died`);\n\n  \/\/ Replace the dead worker\n  console.log(\"Starting a new worker\");\n  cluster.fork();\n  });\n}<\/code><\/pre>\n<p>Le bloc de code ci-dessus v\u00e9rifie si le processus en cours est le processus principal ou le processus ouvrier. Si c&rsquo;est le cas, le bloc de code cr\u00e9e des processus enfants en fonction du nombre de c\u0153urs de votre syst\u00e8me. Ensuite, il \u00e9coute l&rsquo;\u00e9v\u00e8nement de sortie des processus et les remplace en cr\u00e9ant de nouveaux processus.<\/p>\n<p>Enfin, enveloppez toute la logique express connexe dans un bloc else. Votre fichier <strong>cluster.js<\/strong> termin\u00e9 devrait ressembler au bloc de code ci-dessous.<\/p>\n<pre><code class=\"language-javascript\">\/\/cluster.js\nconst express = require(\"express\");\nconst PORT = 3000;\nconst cluster = require(\"node:cluster\");\nconst numCores = require(\"node:os\").cpus().length;\n\nif (cluster.isMaster) {\n  console.log(`Master ${process.pid} is running`);\n  console.log(`This machine has ${numCores} cores`);\n\n  \/\/ Fork workers.\n  for (let i = 0; i  {\n  console.log(`worker ${worker.process.pid} died`);\n\n  \/\/ Replace the dead worker\n  console.log(\"Starting a new worker\");\n  cluster.fork();\n  });\n} else {\n  const app = express();\n\n  app.get(\"\/\", (req, res) =&gt; {\n    res.send(\"Response from server\");\n  });\n\n  app.get(\"\/slow\", (req, res) =&gt; {\n   console.time(\"slow\");\n  \/\/ Generate a large array of random numbers\n  let arr = [];\n  for (let i = 0; i &lt; 100000; i++) {\n  arr.push(Math.random());\n    }\n\n   \/\/ Perform a heavy computation on the array\n   let sum = 0;\n  for (let i = 0; i  {\n  console.log(`Server listening on port ${PORT}`);\n  });\n}<\/code><\/pre>\n<p>Apr\u00e8s avoir mis en \u0153uvre le clustering, plusieurs processus traiteront les requ\u00eates. Cela signifie que votre application reste r\u00e9active m\u00eame lors d&rsquo;une t\u00e2che de calcul lourde.<\/p>\n<h2>Comment \u00e9valuer les performances \u00e0 l&rsquo;aide de loadtest<\/h2>\n<p>Pour d\u00e9montrer et afficher avec pr\u00e9cision les effets de la mise en cluster dans une application Node.js, utilisez le paquet npm <a href=\"https:\/\/www.npmjs.com\/package\/loadtest\" target=\"_blank\" rel=\"noopener noreferrer\">loadtest<\/a> pour comparer les performances de votre application avant et apr\u00e8s la mise en cluster.<\/p>\n<p>Ex\u00e9cutez la commande ci-dessous pour installer <code>loadtest<\/code> globalement :<\/p>\n<pre><code class=\"language-bash\">npm install -g loadtest<\/code><\/pre>\n<p>Le paquet <code>loadtest<\/code> ex\u00e9cute un test de charge sur une URL HTTP\/WebSockets sp\u00e9cifi\u00e9e.<\/p>\n<p>Ensuite, d\u00e9marrez votre fichier <strong>no-cluster.js<\/strong> sur une instance de terminal. Ensuite, ouvrez une autre instance de terminal et ex\u00e9cutez le test de charge ci-dessous :<\/p>\n<pre><code class=\"language-bash\">loadtest http:\/\/localhost:3000\/slow -n 100 -c 10<\/code><\/pre>\n<p>La commande ci-dessus envoie <code>100<\/code> requ\u00eates avec une concurrence de <code>10<\/code> \u00e0 votre application non clusteris\u00e9e. L&rsquo;ex\u00e9cution de cette commande produit les r\u00e9sultats ci-dessous :<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/05\/non-clustered-result.jpg\" alt=\"R\u00e9sultats du test de charge de l'application non group\u00e9e.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">R\u00e9sultats du test de charge de l&rsquo;application non group\u00e9e.<\/figcaption><\/figure>\n<p>D&rsquo;apr\u00e8s les r\u00e9sultats, il a fallu environ 100 secondes pour traiter toutes les demandes sans clustering, et la requ\u00eate la plus longue a pris jusqu&rsquo;\u00e0 12 secondes pour \u00eatre trait\u00e9e.<\/p>\n<p>Les r\u00e9sultats varieront en fonction de votre syst\u00e8me.<\/p>\n<p>Ensuite, arr\u00eatez d&rsquo;ex\u00e9cuter le fichier <strong>no-cluster.js<\/strong> et d\u00e9marrez votre fichier <strong>cluster.js<\/strong> sur une instance de terminal. Ensuite, ouvrez une autre instance de terminal et ex\u00e9cutez ce test de charge :<\/p>\n<pre><code class=\"language-bash\">loadtest http:\/\/localhost:3000\/slow -n 100 -c 10<\/code><\/pre>\n<p>La commande ci-dessus enverra <code>100<\/code> requ\u00eates avec une concurrence <code>10<\/code> \u00e0 votre application clusteris\u00e9e.<\/p>\n<p>L&rsquo;ex\u00e9cution de cette commande produit les r\u00e9sultats ci-dessous :<\/p>\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/05\/clustered-result.jpg\" alt=\"Clustered app load test result\" width=\"1001\" height=\"471\"><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">R\u00e9sultat du test de charge de l&rsquo;application group\u00e9e.<\/figcaption><\/figure>\n<p>Avec le clustering, les requ\u00eates ont pris 0,13 seconde (136 ms) pour s&rsquo;ex\u00e9cuter, ce qui repr\u00e9sente une \u00e9norme diminution par rapport aux 100 secondes n\u00e9cessaires \u00e0 l&rsquo;application non mise en grappe. En outre, la requ\u00eate la plus longue de l&rsquo;application group\u00e9e a pris 41 ms pour s&rsquo;ex\u00e9cuter.<\/p>\n<p>Ces r\u00e9sultats d\u00e9montrent que la mise en place d&rsquo;un clustering am\u00e9liore consid\u00e9rablement les performances de votre application. Notez que vous devriez utiliser un logiciel de gestion de processus tel que <a href=\"https:\/\/pm2.keymetrics.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">PM2<\/a> pour g\u00e9rer votre clustering dans les environnements de production.<\/p>\n<h3>Utiliser Node.js avec l&rsquo;h\u00e9bergement d&rsquo;applications de Kinsta<\/h3>\n<p>Kinsta est une soci\u00e9t\u00e9 d&rsquo;h\u00e9bergement qui facilite le <a href=\"https:\/\/sevalla.com\/application-hosting\/\">d\u00e9ploiement de vos applications Node.js<\/a>. Sa plateforme d&rsquo;h\u00e9bergement est construite sur Google Cloud Platform, qui fournit une infrastructure fiable con\u00e7ue pour g\u00e9rer un trafic \u00e9lev\u00e9 et prendre en charge des applications complexes. En fin de compte, cela am\u00e9liore les performances des applications Node.js.<\/p>\n<p>Kinsta offre diverses fonctionnalit\u00e9s pour les d\u00e9ploiements Node.js, telles que les connexions internes aux bases de donn\u00e9es, l&rsquo;int\u00e9gration Cloudflare, les d\u00e9ploiements GitHub et les Google C2 Machines.<\/p>\n<p>Ces fonctionnalit\u00e9s facilitent le d\u00e9ploiement et la gestion des applications Node.js et rationalisent le processus de d\u00e9veloppement.<\/p>\n<p>Pour d\u00e9ployer votre application Node.js sur l&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications de Kinsta<\/a>, il est essentiel de <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-pousser-code-github\/\">pousser le code et les fichiers de votre application<\/a> vers le fournisseur Git de votre choix (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> ou <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>).<\/p>\n<p>Une fois que votre d\u00e9p\u00f4t est configur\u00e9, suivez les \u00e9tapes suivantes pour d\u00e9ployer votre application Express sur Kinsta :<\/p>\n<ol start=\"1\">\n<li>Connectez-vous ou cr\u00e9ez un compte pour afficher votre tableau de bord <a href=\"https:\/\/my.kinsta.com\/?lang=fr\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorisez Kinsta avec votre fournisseur Git.<\/li>\n<li>Cliquez sur <strong>Applications<\/strong> dans la colonne lat\u00e9rale de gauche, puis sur <strong>Ajouter une application<\/strong>.<\/li>\n<li>S\u00e9lectionnez le d\u00e9p\u00f4t et la branche \u00e0 partir desquels vous souhaitez d\u00e9ployer l&rsquo;application.<\/li>\n<li>Attribuez un nom unique \u00e0 votre application et choisissez l&rsquo;<strong>emplacement du centre de donn\u00e9es<\/strong>.<\/li>\n<li>Configurez ensuite votre environnement de construction. S\u00e9lectionnez la configuration <strong>Machine de construction standard<\/strong> avec l&rsquo;option <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/nixpacks\">Nixpacks<\/a> recommand\u00e9e pour cette d\u00e9mo.Utilisez toutes les configurations par d\u00e9faut, puis cliquez sur <strong>Cr\u00e9er une application<\/strong>.<\/li>\n<\/ol>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Le clustering dans Node.js permet la cr\u00e9ation de plusieurs processus de travail pour distribuer la charge de travail, am\u00e9liorant ainsi les performances et l&rsquo;\u00e9volutivit\u00e9 des applications Node.js. Il est essentiel d&rsquo;impl\u00e9menter correctement le clustering afin d&rsquo;atteindre le plein potentiel de cette technique.<\/p>\n<p>La conception de l&rsquo;architecture, la gestion de l&rsquo;allocation des ressources et la minimisation de la latence du r\u00e9seau sont des facteurs essentiels lors de la mise en \u0153uvre du clustering dans Node.js. L&rsquo;importance et la complexit\u00e9 de cette mise en \u0153uvre expliquent pourquoi les gestionnaires de processus tels que PM2 devraient \u00eatre utilis\u00e9s dans les environnements de production.<\/p>\n<p><em>Que pensez-vous du clustering dans Node.js ? L&rsquo;avez-vous d\u00e9j\u00e0 utilis\u00e9 ? Partagez dans la section des commentaires !<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js est un moteur d&rsquo;ex\u00e9cution JavaScript c\u00f4t\u00e9 serveur qui utilise un mod\u00e8le d&rsquo;entr\u00e9e-sortie (E\/S) non bloquant et pilot\u00e9 par les \u00e9v\u00e8nements. Il est largement reconnu pour &#8230;<\/p>\n","protected":false},"author":199,"featured_media":77160,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[994,980],"class_list":["post-77159","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-node-js","topic-tutoriel-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es ? - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d&#039;une application.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es\" \/>\n<meta property=\"og:description\" content=\"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d&#039;une application.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-27T07:38:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-28T11:54:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d&#039;une application.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es\",\"datePublished\":\"2024-05-27T07:38:53+00:00\",\"dateModified\":\"2024-05-28T11:54:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\"},\"wordCount\":2076,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\",\"name\":\"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es ? - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png\",\"datePublished\":\"2024-05-27T07:38:53+00:00\",\"dateModified\":\"2024-05-28T11:54:37+00:00\",\"description\":\"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d'une application.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es ? - Kinsta\u00ae","description":"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d'une application.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/","og_locale":"fr_FR","og_type":"article","og_title":"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es","og_description":"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d'une application.","og_url":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2024-05-27T07:38:53+00:00","article_modified_time":"2024-05-28T11:54:37+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png","type":"image\/png"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d'une application.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering-1024x512.png","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Jeremy Holcombe","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es","datePublished":"2024-05-27T07:38:53+00:00","dateModified":"2024-05-28T11:54:37+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/"},"wordCount":2076,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/","url":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/","name":"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es ? - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png","datePublished":"2024-05-27T07:38:53+00:00","dateModified":"2024-05-28T11:54:37+00:00","description":"Cet article fait le point sur le clustering dans Node.js et sur la mani\u00e8re dont il affecte les performances d'une application.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/05\/node-js-clustering.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-clustering\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Node.js","item":"https:\/\/kinsta.com\/fr\/sujets\/node-js\/"},{"@type":"ListItem","position":3,"name":"Pourquoi le clustering de Node.js est la cl\u00e9 pour des applications optimis\u00e9es"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/77159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=77159"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/77159\/revisions"}],"predecessor-version":[{"id":77178,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/77159\/revisions\/77178"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/77159\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/77160"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=77159"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=77159"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=77159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}