Points clés
- Paramètres de service: BeanStalkd est auto-hébergé et doit être réglé manuellement sur Linux ou Mac OS X, tandis que IronMQ et Amazon SQS sont des services d'hébergement cloud avec un minimum de paramètres locaux.
- Contrat de niveau de service (SLA): IronMQ fournit un SLA de disponibilité de 99,95%, et BeanStalkd et Amazon SQS ne fournissent pas de tels protocoles, qui offrent des services de support facultatifs à des frais supplémentaires.
- Bibliothèque client et interface de gestion: BeanStalkD prend en charge les bibliothèques clients open source et manque d'une interface de gestion intégrée, tandis que IronMQ et Amazon SQS fournissent des bibliothèques clients officielles avec des panneaux de gestion conviviaux ou console.
- Redondance et sécurité: IronMQ et Amazon SQS offrent une redondance élevée grâce à une infrastructure basée sur le cloud et des fonctionnalités de sécurité améliorées telles que l'authentification des jetons et des clés, ce qui est conforme à la redondance du client de Beanstalkd contraste avec le manque des mesures de sécurité intégrées.
- Performances et fonctionnalités: BeanStalkd fournit un traitement rapide dans le même réseau, mais manque de fonctionnalités avancées telles que la priorité du message fournie dans IronMQ. Amazon SQS prend en charge un long sondage pour réduire la latence, mais ne garantit pas l'ordre de la récupération des messages, qui est différent des systèmes FIFO de BeanStalkd et d'IronMQ.
Introduction
Cet article présente le concept de files d'attente de messages et discute des avantages et des inconvénients de trois services de file d'attente de messages spécifiques: Beanstalkd, IronMQ et Amazon SQS.
Toute information décrite dans cet article est correcte au moment de la rédaction et est sujette à changement sans préavis.
Qu'est-ce qu'une file d'attente de messages?
La citation vous permet de stocker des métadonnées afin que les travaux puissent être traités plus tard. Ils peuvent aider à développer SOA (architecture orientée services) en offrant la flexibilité de différer les tâches pour séparer les processus. S'ils sont appliqués correctement, les files d'attente peuvent améliorer considérablement l'expérience utilisateur du site Web en réduisant le temps de chargement.
Avantages de la file d'attente de messages:
- Async: Fitre immédiatement et exécutez plus tard.
- Découplage: Logique d'application séparée.
- Élasticité: Si une partie de l'application échoue, toute l'application ne se bloquera pas.
- redondant: Si le travail échoue, vous pouvez réessayer.
- Garantie: Assurez-vous que le travail sera traité.
- Évolutif: De nombreux travailleurs peuvent gérer des travaux uniques dans une file d'attente.
- Analyse: Peut aider à identifier les problèmes de performances.
Inconvénients de la file d'attente de messages:
- async: Vous devez attendre la fin du travail.
- Charge: Chaque travail dans la file d'attente doit être attendu à son tour avant qu'il ne puisse être traité. Si un emploi a chronométré, cela affectera chaque emploi suivant.
- Architecture: Les applications doivent prendre en compte les files d'attente lors de la conception.
Cas d'utilisation pour les files d'attente de messages:
Tout processus long peut être mis dans la file d'attente:
- Envoyer / recevoir des données de l'API tiers
- Envoyez un e-mail
- générer un rapport
- Opper les processus à forte intensité de main-d'œuvre
Vous pouvez également utiliser des files d'attente de manière créative - verrouiller les travaux afin qu'un seul utilisateur puisse accéder à des informations à la fois.
Service
Vous pouvez utiliser de nombreux services pour implémenter les files d'attente de messages, et cet article décrit les différences entre BeanStalkd, IronMQ et Amazon SQS.
beanstalkd
BeanStalkd est "… une file d'attente de travail simple et rapide". Il a été publié en tant que logiciel open source sous la licence MIT. Il a une bonne documentation et est testé unitaire et peut être téléchargé pour s'exécuter gratuitement sur votre propre serveur. Cette architecture emprunte à Memcached, qui est spécialement conçue pour les files d'attente de messages.
Un article sur SitePoint intitulé Beat The Giants avec Beanstalkd, écrit par l'auteur Dave Kennedy, contient des informations sur la façon de commencer avec Beanstalkd et Ruby.
ironmq
IronMQ est un service Web RESTful géré. Des niveaux gratuits sont disponibles pour les développeurs, et de nombreux autres niveaux d'abonnement peuvent être utilisés par des applications commerciales.
sqs
Amazon SQS est une solution d'hébergement bon marché pour implémenter les files d'attente de messages. Il fait partie d'Amazon Web Services (AWS). Amazon fournit un niveau gratuit pour évaluer ses services de réseau, y compris SQS.
Paramètres du serveur
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
自托管 | 远程托管 | 远程托管 |
beanstalkd
Exécutez sur Linux et Mac OS X. Veuillez lire les instructions d'installation sur le site Web BeanStalkd pour des informations détaillées sur la façon de le faire fonctionner sur votre système. Le serveur BeanStalkd n'est pas disponible pour Windows.
ironmq et sqs
IronMQ et Amazon SQS sont des services réseau basés sur le cloud. Au lieu de configurer une application sur votre serveur, il vous suffit d'enregistrer un compte et de configurer une file d'attente.
Accord de niveau de service (SLA)
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 每月 99.95% | 无 |
beanstalkd
BeanStalkd est votre propre serveur hébergé, il est de votre responsabilité d'assurer sa disponibilité.
ironmq
iron.io a un accord de niveau de service avec un pourcentage de disponibilité pendant tout cycle de facturation mensuel d'au moins 99,95%. Leur package pro platine (2450 $ par mois) a des conditions de contrat personnalisées, y compris les accords de niveau de service. Ils fournissent des remboursements de points de service.
sqs
Amazon ne fournit pas un accord de niveau de service spécifique pour SQS. Ils offrent des services de support qui peuvent couvrir SQS pour des frais supplémentaires.
Architecture
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
PUSH(套接字) | HTTP 网络服务 | HTTP 网络服务 |
beanstalkd
Communiquez via Push Sockets, en fournissant une communication instantanée entre les fournisseurs et les travailleurs.
Lorsque le fournisseur a mis le travail, il peut être conservé immédiatement si le travailleur est connecté et prêt. Le travail sera conservé jusqu'à ce que le travailleur envoie une réponse (supprimer, enterré, etc.).
ironmq
SQS est un service Web RESTful géré.
IronMQ prend en charge les fonctions en forme de poussée. Les abonnés peuvent être appelés chaque fois que le fournisseur rejoint le travail à la file d'attente. En règle générale, vous souhaitez utiliser le service RESTful standard pour les travaux entrants et désactivés au lieu de méthodes push.
sqs
SQS est un service réseau géré.
SQS ne prend pas en charge la poussée. Vous devez périodiquement sonder pour vérifier s'il y a des emplois dans la file d'attente.
SQS peut utiliser un long sondage appelé temps d'attente de réception de message (par défaut: 0 secondes, maximum: 20 secondes) pour garder la connexion ouverte pendant que le travailleur attend un emploi. Cela signifie moins de demandes et des temps d'ouverture de socket plus longs.
Bibliothèque client
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
开源 | 官方 | 官方 |
beanstalkd
Il existe de nombreuses bibliothèques clients open source BeanStalkD disponibles dans de nombreux langages de programmation. Ce sont des projets autonomes de Beanstalkd.
ironmq
La bibliothèque client IronMQ est fournie par Iron.io et peut être téléchargée à partir du centre de développement.
Vous pouvez également utiliser la bibliothèque client BeanStalkd avec IronMQ si vous voulez la flexibilité pour basculer entre les deux services; cependant, certaines commandes (telles que Kick, Bury) ne sont pas prises en charge. Vous devrez peut-être également implémenter manuellement la commande oAuth pour vous connecter au service.
sqs
La bibliothèque client AWS comprend la bibliothèque client SQS. Ceux-ci sont fournis par Amazon et sont disponibles dans de nombreux langages de programmation.
Interface de gestion
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
开源 | 面板 | 控制台 |
beanstalkd
L'interface de gestion graphique n'est pas distribuée par défaut. Il existe des projets open source sur la page de l'outil BeanStalkd qui peuvent aider à déboguer et à la gestion.
ironmq
Le panneau IronMQ gère les files d'attente. Il contient un tutoriel utile qui décrit comment configurer une file d'attente et vous montre comment ajouter un travail (Message IronMQ:) à une file d'attente via Curl.
Cette interface vous permet de gérer les files d'attente dans des sites Web axés sur l'Ajax. Vous pouvez créer, lire et supprimer des travaux, afficher les informations historiques et gérer les configurations de file d'attente à partir de la vue du tableau de bord.
sqs
La console de gestion AWS vous permet de gérer les SQS. L'interface est construite sur un protocole sans état, vous devez donc appuyer sur le bouton Actualiser pour obtenir les dernières informations.
Vous pouvez créer, lire et supprimer des travaux (SQS: Messages) et gérer la configuration de la file d'attente.
redondant
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
客户端 | 基于云 | 基于云 |
beanstalkd
La redondance est gérée du côté client, et si le serveur tombe en panne, vous perdrez votre emploi.
BeanStalkd contient une option pour stocker des travaux dans les journaux binaires. Vous devez démarrer BeanStalkD avec l'option -B, mais la file d'attente de récupération est une tâche manuelle qui nécessite l'accès au disque du serveur.
ironmq
IronMQ est un service basé sur le cloud avec une forte persistance, une disponibilité et une redondance.
sqs
Les travaux sont stockés sur plusieurs serveurs dans la zone hébergée. Cette approche garantit que la disponibilité des services et des emplois ne devrait pas être perdue.
Sécurité
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 令牌 | 密钥和密钥 |
beanstalkd
La connexion à Beanstalkd ne nécessite pas d'authentification. Les fournisseurs peuvent rejoindre la file d'attente pour les emplois et les programmes de travail peuvent conserver des emplois sans passer par des modèles de sécurité. Par conséquent, il est fortement recommandé de créer un pare-feu pour bloquer les connexions externes aux ports fonctionnant sur beanstalkd.
ironmq
Vous pouvez utiliser votre file d'attente de messages en créant un collaborateur d'invitation. L'authentification à l'application se fait avec le jeton Iron.io et l'ID de projet.
sqs
L'authentification à SQS est implémentée via des clés et des clés API Amazon. Les autorisations de file d'attente d'accès peuvent être accordées et révoquées pour d'autres comptes AWS via la console de gestion AWS.
Speed
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
快 | 互联网延迟 | 互联网延迟 |
beanstalkd
beanstalkd est très rapide car il devrait être dans le même réseau que son fournisseur et son travailleur. BeanStalkd est parfois très rapide, et si le fournisseur met le poste dans la file d'attente, puis appelle MySQL, le travailleur peut obtenir votre emploi avant que MySQL ne termine l'exécution.
ironmq
La latence des demandes augmente car ils sont envoyés au service réseau IronMQ RESTFul sur HTTP.
sqs
La latence des demandes augmente car elles sont envoyées au service réseau SQS via HTTP.
Les emplois ne peuvent pas être acquis immédiatement car ils doivent être distribués sur différents serveurs et centres de données. Si la demande, le fournisseur ou le travailleur est hébergé sur une instance EC2, ce retard doit être négligeable.
Il peut ne pas être disponible immédiatement lorsque vous vous engagez au travail sur SQS. Le travail doit être propagé à un autre serveur. Attendez généralement jusqu'à une seconde.
Fidelity
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
FIFO | FIFO | 无保证 |
可优先级 | 无优先级 | 无优先级 |
beanstalkd
La file d'attente est FIFO (premier dans First Out). Les affectations très importantes peuvent être prioritaires, ce qui affectera l'ordre dans lequel les affectations sont désactivées.
ironmq
La file d'attente est FIFO (premier dans First Out). Le travail ne peut pas être traité en premier.
sqs
L'ordre d'occurrence des emplois est différent de l'ordre d'entrée dans la file d'attente. Étant donné que SQS est un service distribué, les travaux de chaque serveur seront disponibles à différents moments. C'est quelque chose à savoir lors de la conception de SQS.
Get en même temps
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
保证 | 保证 | 不保证 |
UNE Time Fetch décrit la limitation que deux ou plusieurs travailleurs ne gèrent jamais le même travail en parallèle, sauf si le travailleur a expiré.
beanstalkd
L'architecture basée sur le socket de BeanStalkd garantit une acquisition unique.
ironmq
IronMQ garantit une acquisition unique.
sqs
Parce que SQS est un service distribué, il n'est pas garanti d'obtenir une seule fois (mais peu probable).
FAIL-SAFE
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
僵尸套接字 | 超时 | 超时 |
beanstalkd
Si le travailleur ne répond pas à BeanStalkd dans le délai défini ou que la prise est fermée sans répondre au travail, le travail reviendra automatiquement à la file d'attente.
Ensuite, le prochain travailleur demandé peut l'obtenir immédiatement (pas de pots-de-vin requis).
ironmq et sqs
Le travailleur se connecte à la file d'attente et conserve le travail. À partir de ce moment, le travailleur a fixé le temps de supprimer le travail de la file d'attente avant de pouvoir être libéré et de rétention pour que le travailleur soit conservé.
Créez une nouvelle file d'attente
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
自动 | 自动和手动 | 手动 |
beanstalkd
Lorsque le travail rejoint la file d'attente, une file d'attente sera automatiquement créée (BeanStalkd: Pipeline). Pas besoin de les créer manuellement.
ironmq
Vous devez créer un projet dans le tableau de bord. Un projet contient de nombreuses files d'attente. Les files d'attente peuvent être créées automatiquement lorsque les travaux sont en cours ou en utilisant manuellement des configurations dans le tableau de bord.
sqs
La file d'attente pour SQS doit être définie manuellement à partir de la console de gestion AWS. Chaque file d'attente génère une URL unique qui est utilisée comme nom de file d'attente.
Veuillez noter la région dans laquelle appartient la file d'attente (par exemple: US-West-1, UE-West-1, etc.), car elle est nécessaire pour se connecter aux SQS.
Intégration de trame
laravel
Le framework Laravel a un excellent wrapper intégré qui résume les files d'attente de messages pour BeanStalkd, IronMQ et Amazon SQS. Vous pouvez modifier le serveur par configuration sans modifier aucune application.
Exemple de code PHP
Ces exemples de code vous montrent comment vous connecter à un serveur et comment faire la queue, conserver et désactiver les travaux pour faire la queue. Si une exception est lancée, elle enterrera le travail (si le serveur le prend en charge).
Essayez d'arrêter l'exécution une fois le travail en cours et déboguez la file d'attente à l'aide de l'outil de gestion.
(des exemples de code PHP pour BeanStalkd, IronMQ et SQS ont été omis car ils sont trop longs et ne correspondent pas à l'objectif pseudo-original. Ces extraits peuvent être facilement copiés à partir du texte d'origine.)
Conseils de file d'attente de messages
Quel que soit le service que vous choisissez, voici quelques conseils pour garder votre file d'attente forte:
Sérialisation des métadonnées
Votre travail peut contenir toutes les données que vous aimez, à condition qu'elle soit dans la limite de la taille des données du travail du serveur. Utilisez JSON dans le corps du travail pour rendre les métadonnées faciles à transférer.
limiter la taille des données du travail
Essayez de ne pas utiliser trop de métadonnées pour remplir le travail. Si vous pouvez stocker des informations dans la base de données et uniquement une file d'attente pour un traitement ultérieur, votre file d'attente sera plus puissante et plus facile à déboguer.
Suivez le statut des devoirs
Si, pour une raison quelconque, un élément déjà traité rentre dans la file d'attente, vous ne voudrez peut-être pas le traiter. Malheureusement, les données de travail ne sont pas obligatoires et uniques, alors assurez-vous de garder une trace de l'état du travail dans la base de données.
Cela peut être aussi simple que d'ajouter une colonne à la table de travail pour marquer l'élément comme traité. Si le projet a été traité, vous pouvez le supprimer de la file d'attente.
Termes
Certains mots sont utilisés différemment entre BeanStalkd et Amazon SQS. Voici une liste de traduction rapide:
(Les tables de comparaison du terme pour BeanStalkd, Amazon SQS et IronMQ ont été omises car elles sont trop longues et ne correspondent pas aux objectifs pseudo-originaux. Ces tableaux peuvent être facilement copiés à partir du texte d'origine.)
glossaire
Lorsque vous utilisez des files d'attente, vous pouvez rencontrer les termes suivants:
Enterré (Job) - Mettez le travail dans un état défaillant. Le travail ne peut pas être retraité tant que le travail n'est pas renvoyé manuellement à la file d'attente . IronMQ et SQS ne sont pas pris en charge.
utilisateur - voir le programme de travail.retard - retarder le travail pendant une période et non envoyé au travailleur.
supprimer (travail) - Voir Départ.
DEQUEUe - Marquez le travail terminé et supprimez-le de la file d'attente.
Entrez la file d'attente - Ajoutez le travail à la file d'attente et préparez-le à utiliser par le travailleur.
FIFO - Décrit comment les travaux sont traités dans les files d'attente, c'est-à-dire le premier-in, premier-out. Il s'agit du type de file d'attente de messages le plus courant.
Filo - Décrit comment les travaux sont traités dans une file d'attente, c'est-à-dire d'abord dans puis de sortir.
Job - Une tâche retardée dans la file d'attente contenant des métadonnées utilisées pour identifier la tâche à traiter. Similaire à une ligne de base de données.
Kick (travail) - Renvoyez le travail précédemment enterré dans la file d'attente pour que le travailleur puisse obtenir. IronMQ et SQS ne sont pas pris en charge.
Fournisseur
- Le client qui se connecte au serveur de messages pour créer un travail.Citation - Une méthode de regroupement de travaux similaires dans une file d'attente. Similaire aux tables de base de données.
Réserve (travail) - Passez le travail au travailleur et verrouillez-le pour l'empêcher d'être transmis à un autre travailleur.
Worker - Un client qui se connecte au serveur de messages pour conserver, supprimer et enterrer des travaux. Ces parties à forte intensité de main-d'œuvre du processus d'exécution.
Conclusion
Il n'y a pas de solution universelle pour le service de file d'attente de messages. Beanstalkd, IronMQ et Amazon SQS ont tous leurs propres avantages et inconvénients et peuvent être utilisés par vous. Cet article devrait vous fournir suffisamment d'informations pour vous aider à prendre une décision éclairée sur le service qui convient le mieux à votre niveau de compétence et à vos besoins de projet.Quel service de file d'attente de messages utiliserez-vous? Si vous utilisez actuellement des files d'attente, envisageriez-vous de changer? Avez-vous utilisé des files d'attente de messages d'une manière non traditionnelle qui peut aider les autres? Veuillez laisser un message à faire savoir à tout le monde.
Les questions fréquemment posées sur les files d'attente de messages (FAQ)
(Les questions fréquemment posées sur les files d'attente de messages ont été omises car elles sont trop longues et ne correspondent pas à l'objectif pseudo-original. Ces questions et réponses peuvent être facilement copiées à partir du texte d'origine.)
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!

PhpSessionsCanstorestrings, Numbers, Arrays, Andobject.1.Strings: TextDatalikeUserames.2.Numbers: IntegersorFloatsForCounters.3.arrays: listslikeshoppingcarts.4.Objects: complexestructuresthataReSerialized.

TostartaphpSession, usessession_start () aTTheScript'sbeginning.1) PlaceItBeForeanyOutputToSetTheSessionCooKie.2) USESSIONSFORUSERDATALIKELOGINSTATUSORSHOPPINGSCARS.3) RegegeraSesessionIdStopreventfixationAtTACKS.4)

La régénération de session fait référence à la génération d'un nouvel ID de session et à l'invalidation de l'ancien ID lorsque l'utilisateur effectue des opérations sensibles en cas d'attaques fixes de session. Les étapes de mise en œuvre incluent: 1. Détectez les opérations sensibles, 2. Générer un nouvel ID de session, 3. Détruiser l'ancien ID de session, 4. Mettre à jour les informations de session côté utilisateur.

Les séances PHP ont un impact significatif sur les performances des applications. Les méthodes d'optimisation incluent: 1. Utilisez une base de données pour stocker les données de session pour améliorer la vitesse de réponse; 2. Réduire l'utilisation des données de session et stocker uniquement les informations nécessaires; 3. Utilisez un processeur de session non bloquant pour améliorer les capacités de concurrence; 4. Ajustez le temps d'expiration de la session pour équilibrer l'expérience utilisateur et la charge du serveur; 5. Utilisez des séances persistantes pour réduire le nombre de données de lecture et d'écriture.

PhpsessionsareServer-côté, whileCookiesareclient-Side.1) SessionStoredataontheServer, aremoresecure, ethandleLargerData.2) CookiesstoredataontheClient, ArelessSecure, andlimitedIzeSize.USESESSIONSFORSENSEDATAANDCOOKIESFORNONNORNE-SENSENSITION, Client-Sidedata.

Phpidentifiesauser'sessionusingssse cookiesand sessionids.1) whenSession_start () est calculé, phpgeneratesauquesseSessionIdStoredInacookIenameDPhpSesssIdonUser'sbrowser.2) thisIdallowsphptoreTrrieSeSessionDatafromTeserver.

La sécurité des sessions PHP peut être obtenue grâce aux mesures suivantes: 1. Utilisez Session_RegeReate_ID () pour régénérer l'ID de session lorsque l'utilisateur se connecte ou est une opération importante. 2. Cryptez l'ID de session de transmission via le protocole HTTPS. 3. Utilisez session_save_path () pour spécifier le répertoire sécurisé pour stocker les données de session et définir correctement les autorisations.

PhpSessionFilesArestorentheDirectorySpecifiedSession.save_path, généralement / tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomzethis: 1) usession_save_path () tosetacustomDirectory, astumeit'swrit


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Dreamweaver Mac
Outils de développement Web visuel

Version Mac de WebStorm
Outils de développement JavaScript utiles

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.
