Maison  >  Article  >  Java  >  API de données pour Amazon Aurora sans serveur avec AWS SDK pour Java - Comparaison partielle des démarrages à froid et à chaud : API de données vs DynamoDB

API de données pour Amazon Aurora sans serveur avec AWS SDK pour Java - Comparaison partielle des démarrages à froid et à chaud : API de données vs DynamoDB

王林
王林original
2024-07-23 11:17:431009parcourir

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part omparing cold and warm starts: Data API vs DynamoDB

Introduction

Dans la partie 7 de la série Data API for Amazon Aurora Serverless v2 with AWS SDK for Java - Data API meets SnapStart, nous avons mesuré les heures de démarrage à froid et à chaud de la fonction Lambda se connectant à la base de données PostgreSQL Amazon Aurora Serverless v2 à l'aide de Data API pour 3 cas d'usage :

  • sans SnapStart activé sur la fonction Lambda
  • avec SnapStart activé sur la fonction Lambda mais sans optimisation d'amorçage
  • avec SnapStart activé sur la fonction Lambda et avec optimisation d'amorçage (préchauffage de l'exécution des instructions SQL sur la base de données PostgreSQL).

Dans cet article, nous aimerions comparer ces mesures avec celles mais en utilisant DynamoDB au lieu de l'API de données pour Amazon Aurora Serverless v2.

Comparaison des démarrages à froid et à chaud de Lambda : API de données pour Amazon Aurora Serverless v2 et DynamoDB

Dans ma série d'articles sur Lambda SnapStart, nous avons déjà effectué de telles mesures pour une application similaire, mais dans l'article Mesurer les démarrages à chaud avec Java 21 en utilisant différents paramètres de mémoire Lambda.

Les deux applications Data API pour Amazon Aurora Serverless v2 et DynamoDB sont très similaires :

  • Ils fournissent une logique pour stocker et récupérer les produits de la base de données
  • Les fonctions Lambda des deux projets ont un paramètre de mémoire de 1 024 Mo
  • La taille des artefacts de déploiement est d'environ 18 Mo pour les deux
  • Les fonctions Lambda des deux projets utilisent le client HTTP Apache synchrone par défaut pour communiquer avec les bases de données
  • Les fonctions Lambda des deux projets utilisent l'architecture x86_64

Maintenant, rassemblons toutes les mesures.

Heure de démarrage à froid (c) et à chaud (m) en ms :

Approach c p50 c p75 c p90 c p99 c p99.9 c max w p50 w p75 w p90 w p99 w p99.9 w max
Data API, no SnapStart enabled 3154.35 3237 3284.91 3581.49 3702.12 3764.92 104.68 173.96 271.32 572.11 1482.89 2179.7
DynamoDB, no SnapStart enabled 3157.6 3213.85 3270.8 3428.2 3601.12 3725.02 5.77 6.50 7.81 20.65 90.20 1423.63
Data API, SnapStart enabled without priming 1856.11 1994.61 2467.83 3229.11 3238.80 3241.75 61.02 113.32 185.37 639.35 1973.30 2878.5
DynamoDB, SnapStart enabled without priming 1626.69 1741.10 2040.99 2219.75 2319.54 2321.64 5.64 6.41 7.87 21.40 99.81 1355.09
Data API, SnapStart enabled with priming 990.84 1069.04 1634.84 2120.00 2285.03 2286.9 60.06 106.35 185.37 581.27 1605.37 2658.24
DynamoDB, SnapStart enabled with priming 702.55 759.52 1038.50 1169.66 1179.05 1179.36 5.73 6.51 7.87 21.75 92.19 328.41

Conclusion

Dans cet article, j'ai comparé les mesures des heures de démarrage à froid et à chaud de la fonction Lambda se connectant à la base de données Amazon Aurora Serverless v2 PostgreSQL à l'aide de l'API Data et à la connexion à la base de données DynamoDB pour 3 cas d'utilisation :

  • sans SnapStart activé sur la fonction Lambda
  • avec SnapStart activé sur la fonction Lambda mais sans optimisation d'amorçage
  • avec SnapStart activé sur la fonction Lambda et avec amorçage de la requête base de données

Ce que nous avons observé, c'est que les temps de démarrage à froid sans activer SnapStart sur la fonction Lambda sont tout à fait comparables pour les deux. Dans le cas où SnapStart est activé (sans et surtout avec amorçage), l'API de données pour Amazon Aurora Serverless v2 a des temps de démarrage à froid nettement plus élevés, en particulier pour les centiles >= 90. Je devrai creuser plus profondément pour comprendre cette différence comme je l'ai fait. Je ne m'attendais pas à ce qu'il soit aussi gros, surtout si un apprêt était appliqué. La raison en est peut-être que les services natifs AWS comme DynamoDB sont davantage conscients de SnapStart. Je peux mieux gérer les reprises de connexion.

Les temps de démarrage à chaud (exécution) étaient constamment beaucoup plus élevés pour l'API de données pour Amazon Aurora Serverless v2 par rapport à DynamoDB, ce à quoi je m'attendais également car DynamoDB est connu pour ses temps de réponse à un ou deux chiffres en millisecondes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn