Des API ultra-rapides pour la DeFi à l’échelle d’Internet : optimisation des performances via la refactorisation et de nouveaux composants

kevin lallement
multiversx-fr
Published in
3 min readSep 6, 2021

L’infrastructure et le code de l’API d’Elrond ont récemment fait l’objet d’une refactorisation et de modifications majeures. L’augmentation de performances et d’évolutivité qui en résultent sont arrivées à point nommé pour le lancement très attendu du Maiar Exchange.

La recherche de possibilités d’améliorations et le travail acharné fournit pour leur mise en œuvre ont donné des résultats remarquables : l’augmentation du nombre d’utilisateurs connectés simultanément, une meilleure gestion du trafic de pointe et un réduction des temps de réponse.

Un des changements importants a été une décision concernant le framework utilisé. Les autres étaient une série de nouvelles stratégies de mise en cache pour mieux gérer les demandes, chacune d’entre elles ayant pour effet d’accélérer les temps de réponse et de rendre l’ensemble de la couche API très rapide.

Voici les changements et améliorations les plus importants:

Transition de ExpressJS à NestJS

Le framework NestJS est mieux adapté à notre architecture de micro-services et dispose d’un ensemble d’outils et d’une documentation de qualité qui nous permettront de développer davantage ses capacités.

Mise en cache synchronisée avec les heures des tours

Un tour de blockchaîne Elrond prend 6 secondes. Les données du dernier bloc frappé ne peuvent donc pas changer pendant toute la durée d’un tour. Nous avons utilisé cette information pour toujours répondre aux demandes de données identiques à partir du cache, améliorant ainsi considérablement le temps de réponse pour les données demandées à un moment donné.

Cache en mémoire

Nos serveurs API ont été équipés d’un module de cache en mémoire qui réduit considérablement le nombre de requêtes à effectuer vers les instances distinctes du serveur Redis. Cela réduit encore le temps nécessaire pour que les données soient mises à la disposition des demandeurs.

Processeur de transactions

Ce nouveau composant surveille en permanence toutes les transactions blockchaîne et déclenche des actualisations sur les informations obsolètes mises en cache. Grâce à ce mécanisme de récupération proactif, la durée de vie des données est passée de 1 minute à 1 heure. Cela signifie que les demandes de calcul intensif pour mettre à jour toutes les données se produisent moins souvent, et certaines données sont peut-être disponibles encore plus tôt qu’auparavant. Le processeur TX accorde une attention particulière aux ESDT et aux transactions qui y sont liées, telles que la frappe ou les transferts.

Ce composant génial est disponible en tant que package NPM ici: https://www.npmjs.com/package/@elrondnetwork/transaction-processor

Réchauffeur de cache

Ce nouveau composant met à jour de manière proactive certaines données et les place directement dans le cache, pour éviter les requêtes prévisibles à forte intensité de calcul. Par exemple, la liste des nœuds de validation actifs est actualisée toutes les 1 minute et prend 30 secondes à générer. Le réchauffeur de cache calcule de manière proactive la liste afin que l’explorateur Elrond ait les informations prêtes dès que possible, sans avoir besoin de l’attendre après avoir effectué la requête.

Gestion des données à l’échelle Internet pour (presque) tout le monde

Si l’empreinte de l’infrastructure requise vous a fait réfléchir à deux fois avant de vous engager avec l’infrastructure d’API Elrond, bonne nouvelle ! Grâce aux optimisations mentionnées ci-dessus et à plusieurs autres améliorations, nous avons pu réduire l’empreinte de notre infrastructure de 80 % et avons fini par doubler la capacité.

Voici ce dont vous avez besoin pour devenir vous-même un fournisseur d’API Elrond:

La couche API n’est qu’un des nombreux et fascinants aspects de la pile technologique d’Elrond. Plongez dans le protocole blockchaîne entièrement open source et la vaste gamme d’outils qui l’entourent !

Commencez par le repo Elrond GitHub et rejoignez des centaines de personnes partageant les mêmes idées dans notre communauté dynamique de développeurs.

Article original traduit en français : https://elrond.com/blog/elrond-api-internet-scale-defi/ par Lucian Mincu

Pour plus d’information, vous pouvez consulter :

--

--