스크립트
00:00:00SQS, Kafka et RabbitMQ peuvent aller à la poubelle, car vous pouvez désormais gérer vos files d'attente directement
00:00:05dans Postgres avec PGMQ. Et j'entends déjà certains dire que ça ne passe pas à l'échelle.
00:00:11Eh bien, si, en fait, car Postgres peut gérer confortablement des millions de lignes et
00:00:15des milliers de requêtes par seconde. Donc, si vous souhaitez garder une infrastructure simple,
00:00:20nous allons voir aujourd'hui comment créer des applications distribuées à fort volume avec PGMQ.
00:00:30Bon, trêve de bavardages, passons directement à la démo. J'ai configuré un projet
00:00:34avec Docker et installé PGMQ. Vous pouvez l'utiliser sous deux formes : soit en SQL pur, soit via l'une des
00:00:41bibliothèques clientes officielles comme Rust ou Python, en plus de plusieurs bibliothèques communautaires comme Ruby ou
00:00:47différentes variantes de TypeScript. Comme nous ne serons jamais d'accord sur le langage, je vais faire cette démo
00:00:52uniquement en SQL. Commençons par créer une nouvelle file d'attente. On exécute select pgmq.create, puis on passe
00:00:58le nom de la file d'attente. Ici, chaque file est une table à part entière. Si l'on regarde directement dans la base de données,
00:01:04on peut voir que la nouvelle table existe désormais. On peut ensuite envoyer des messages dans notre file en spécifiant son nom,
00:01:09puis le message au format JSON. Il est possible d'ajouter un délai en option. Ainsi, le message est poussé dans la
00:01:15file, mais ne peut pas être consommé avant, disons, cinq secondes. Bon, nos messages sont maintenant dans la file.
00:01:20Consommons-les. On peut le faire avec la commande read. VT correspond au délai de visibilité (visibility timeout).
00:01:26Ici, cela signifie que les messages que vous lisez resteront visibles pendant 30 secondes, empêchant tout autre processus de les récupérer.
00:01:31C'est ainsi que PGMQ garantit une livraison unique (exactly-once). Quantity représente ensuite le nombre de messages que nous souhaitons
00:01:38lire. S'ils ne sont pas supprimés ou archivés dans ce laps de temps, ils redeviennent visibles. Pour ce faire,
00:01:44vous pouvez exécuter archive, qui supprime le message de la file et l'ajoute à la table d'archives, ou simplement
00:01:49exécuter delete. Par exemple, ici, je supprime le message avec l'ID 2. Et petite parenthèse, si vous trouvez cela
00:01:54utile, vous nous rendriez un énorme service en vous abonnant à la chaîne. Cela nous aide à continuer à créer du contenu gratuit
00:01:59pour aider le maximum de développeurs. Bon, passons maintenant au test de charge de PGMQ. D'abord, j'ajoute 100 000 lignes
00:02:06dans la file. Cela prend environ 0,4 seconde. Je vais ensuite lancer 100 workers pour traiter chacun un lot de 10 tâches
00:02:13et voir combien de temps il faut pour tout lire. Ici, tout ce que fait le worker, c'est lire le message,
00:02:18consigner ce qu'il a lu, puis le supprimer. Bien sûr, en production, vous feriez quelque chose de plus utile avec ces données,
00:02:23mais je cherche uniquement à tester directement les performances de PGMQ ici. Et cela a pris neuf secondes.
00:02:29Chaque worker a traité en moyenne 111 messages par second, soit un total combiné d'environ 11 100 messages par seconde.
00:02:37J'ai volontairement limité le conteneur Docker à deux processeurs et deux gigaoctets de mémoire, ce qui est typique pour un service en direct.
00:02:44Comme je l'ai mentionné plus tôt, vous pouvez aussi utiliser les bibliothèques clientes pour interagir avec PGMQ.
00:02:49En utilisant TypeScript avec Prisma, nous pouvons créer une file, envoyer un message, lire un lot de messages, et vous pouvez
00:02:55faire exactement de même avec Python. Donc, si vous voulez éviter les dépendances superflues, vous pouvez réellement exécuter
00:03:01des files d'attente à grande échelle directement dans Postgres grâce à PGMQ. Et nous allons encore plus loin en remplaçant une grande partie
00:03:08de la stack par Postgres, ce que je détaille dans cette vidéo.
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기