Comment configurer un middleware de messagerie hautement disponible sous Linux

PHPz
Libérer: 2023-07-07 14:45:07
original
715 Les gens l'ont consulté

Comment configurer un middleware de messages hautement disponible sous Linux

Introduction :
Avec l'application généralisée de l'architecture distribuée, le middleware de messages joue un rôle essentiel dans la conception du système. Le maintien d’une haute disponibilité du middleware de messages est crucial pour le fonctionnement stable du système. Cet article explique comment configurer un middleware de messages hautement disponible sous Linux et fournit des exemples de code correspondants.

1. Qu'est-ce qu'un middleware de messages à haute disponibilité ? La haute disponibilité signifie généralement qu'un système ou un service peut continuer à fonctionner lorsqu'une panne se produit et peut être restauré à son état de fonctionnement normal autant que possible. En tant que composant important du système distribué, le middleware de messages est conçu pour une haute disponibilité afin de garantir que le middleware de messages reste disponible en toutes circonstances et d'assurer une livraison fiable des messages.

2. Middleware de messages sous Linux

Sous Linux, il existe de nombreux middlewares de messages matures parmi lesquels choisir, tels que RabbitMQ, Kafka, ActiveMQ, etc. Cet article prend RabbitMQ comme exemple pour présenter comment configurer un middleware de messages hautement disponible sous Linux.

  1. Installer RabbitMQ

    Tout d'abord, nous devons installer RabbitMQ sur Linux. En prenant Ubuntu comme exemple, vous pouvez utiliser la commande suivante pour installer :

    sudo apt-get install rabbitmq-server
    Copier après la connexion

  2. Configurer le cluster RabbitMQ
  3. Afin d'atteindre une haute disponibilité, nous devons configurer un cluster RabbitMQ qui contient plusieurs nœuds RabbitMQ. Sur chaque nœud, nous devons configurer les éléments suivants :
2.1 Modifier le fichier de configuration RabbitMQ

Utilisez la commande suivante pour modifier le fichier de configuration RabbitMQ :

sudo nano /etc/rabbitmq/rabbitmq.conf
Copier après la connexion

Ajoutez le contenu suivant dans le fichier de configuration :

cluster_formation.peer_discovery_backend = rabbit_peer_discovery_aws cluster_formation.aws.region = us-east-1 cluster_formation.aws.access_key_id = YOUR_ACCESS_KEY cluster_formation.aws.secret_access_key = YOUR_SECRET_KEY cluster_formation.aws.tag.Cluster = YOUR_CLUSTER_TAG cluster_formation.aws.back_off_base = 2 cluster_formation.aws.back_off_multiplier = 1.2
Copier après la connexion

Ces éléments de configuration sont utilisés pour activer le cluster RabbitMQ et spécifier AWS comme backend pour la découverte de nœuds.

2.2 Démarrez le nœud RabbitMQ

Utilisez la commande suivante pour démarrer le nœud RabbitMQ :

sudo rabbitmq-server
Copier après la connexion

Une fois le démarrage terminé, vous pouvez accéder à l'interface de gestion RabbitMQ dans le navigateur pour vous assurer que le nœud a été démarré avec succès. L'adresse par défaut est : http://localhost:15672.

2.3 Rejoindre le cluster

Pour ajouter d'autres nœuds au cluster, utilisez la commande suivante :

sudo rabbitmqctl stop_app sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
Copier après la connexion

où,

est le nom du nœud qui a été démarré.node1

    Laissez les messages être livrés de manière fiable
  1. Afin de garantir une livraison fiable des messages, nous pouvons utiliser le mécanisme de confirmation de message persistant et de libération fourni par RabbitMQ.
3.1 Message persistant

Lors de l'envoi d'un message, vous pouvez marquer le message comme persistant pour vous assurer qu'il ne sera pas perdu lorsque le nœud RabbitMQ tombe en panne. Un exemple est le suivant :

import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='hello', durable=True) # 声明队列为持久化的 channel.basic_publish( exchange='', routing_key='hello', body='Hello World!', properties=pika.BasicProperties(delivery_mode=2) # 设置消息持久化 )
Copier après la connexion

3.2 Mécanisme de confirmation de version

En activant le mécanisme de confirmation de version, vous pouvez vous assurer que le message est reçu avec succès par RabbitMQ. Un exemple est le suivant :

import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='hello') channel.confirm_delivery() # 启用发布确认机制 def on_delivery_confirmation(frame): if frame.method.NAME == 'Basic.Ack': print('Message successfully delivered to RabbitMQ') else: print('Message failed to be delivered to RabbitMQ') channel.add_on_delivery_callback(on_delivery_confirmation) channel.basic_publish( exchange='', routing_key='hello', body='Hello World!' )
Copier après la connexion

3. Résumé

Cet article explique comment configurer un middleware de messages hautement disponible sur Linux et fournit un exemple de code pour RabbitMQ. Dans les applications réelles, une configuration et une optimisation supplémentaires sont nécessaires en fonction des besoins spécifiques. En utilisant de manière rationnelle un middleware de messages hautement disponible, la robustesse et la fiabilité du système peuvent être améliorées, et une livraison fiable des messages peut être assurée dans un environnement distribué.

Référence :

    Documentation RabbitMQ : https://www.rabbitmq.com/
  1. Documentation Kafka : https://kafka.apache.org/
  2. Documentation ActiveMQ : https://activemq.apache.org /
Remarque : l'exemple de code ci-dessus est uniquement à titre de référence et peut devoir être modifié en fonction de circonstances spécifiques dans les applications réelles.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!