So richten Sie hochverfügbare Messaging-Middleware unter Linux ein

PHPz
Freigeben: 2023-07-07 14:45:07
Original
878 Leute haben es durchsucht

So richten Sie hochverfügbare Nachrichten-Middleware unter Linux ein

Einführung:
Mit der weit verbreiteten Anwendung verteilter Architektur spielt Nachrichten-Middleware eine entscheidende Rolle beim Systemdesign. Die Aufrechterhaltung einer hohen Verfügbarkeit der Nachrichten-Middleware ist für den stabilen Betrieb des Systems von entscheidender Bedeutung. In diesem Artikel wird die Einrichtung hochverfügbarer Nachrichten-Middleware unter Linux vorgestellt und entsprechende Codebeispiele bereitgestellt.

1. Was ist Hochverfügbarkeits-Nachrichten-Middleware? Hochverfügbarkeit bedeutet normalerweise, dass ein System oder Dienst bei einem Ausfall weiterlaufen und so weit wie möglich in den normalen Betriebszustand zurückversetzt werden kann. Als wichtige verteilte Systemkomponente ist die Nachrichten-Middleware auf Hochverfügbarkeit ausgelegt, um sicherzustellen, dass die Nachrichten-Middleware unter allen Umständen verfügbar bleibt und eine zuverlässige Zustellung von Nachrichten gewährleistet ist.

2. Nachrichten-Middleware unter Linux

Unter Linux stehen viele ausgereifte Nachrichten-Middleware zur Auswahl, z. B. RabbitMQ, Kafka, ActiveMQ usw. In diesem Artikel wird RabbitMQ als Beispiel verwendet, um die Einrichtung einer hochverfügbaren Nachrichten-Middleware unter Linux vorzustellen.

  1. RabbitMQ installieren

    Zuerst müssen wir RabbitMQ unter Linux installieren. Am Beispiel von Ubuntu können Sie zur Installation den folgenden Befehl verwenden:

    sudo apt-get install rabbitmq-server
    Nach dem Login kopieren

  2. RabbitMQ-Cluster konfigurieren
  3. Um eine hohe Verfügbarkeit zu erreichen, müssen wir einen RabbitMQ-Cluster konfigurieren, der mehrere RabbitMQ-Knoten enthält. Auf jedem Knoten müssen wir Folgendes konfigurieren:
2.1 Ändern Sie die RabbitMQ-Konfigurationsdatei.

Verwenden Sie den folgenden Befehl, um die RabbitMQ-Konfigurationsdatei zu bearbeiten:

sudo nano /etc/rabbitmq/rabbitmq.conf
Nach dem Login kopieren

Fügen Sie den folgenden Inhalt in der Konfigurationsdatei hinzu:

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
Nach dem Login kopieren

Diese Konfigurationselemente werden verwendet, um den RabbitMQ-Cluster zu aktivieren und AWS als Backend für die Knotenerkennung anzugeben.

2.2 Starten Sie den RabbitMQ-Knoten

Verwenden Sie den folgenden Befehl, um den RabbitMQ-Knoten zu starten:

sudo rabbitmq-server
Nach dem Login kopieren

Nach Abschluss des Startvorgangs können Sie im Browser auf die RabbitMQ-Verwaltungsoberfläche zugreifen, um sicherzustellen, dass der Knoten erfolgreich gestartet wurde. Die Standardadresse lautet: http://localhost:15672.

2.3 Dem Cluster beitreten

Um weitere Knoten zum Cluster hinzuzufügen, verwenden Sie den folgenden Befehl:

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
Nach dem Login kopieren

wobei

der Name des Knotens ist, der gestartet wurde. node1

    Ermöglichen Sie die zuverlässige Zustellung von Nachrichten
  1. Um eine zuverlässige Zustellung von Nachrichten sicherzustellen, können wir den von RabbitMQ bereitgestellten dauerhaften Nachrichten- und Freigabebestätigungsmechanismus verwenden.
3.1 Persistente Nachricht

Beim Senden einer Nachricht können Sie die Nachricht als persistent markieren, um sicherzustellen, dass die Nachricht nicht verloren geht, wenn der RabbitMQ-Knoten ausfällt. Ein Beispiel lautet wie folgt:

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)  # 设置消息持久化
)
Nach dem Login kopieren

3.2 Release-Bestätigungsmechanismus

Durch die Aktivierung des Release-Bestätigungsmechanismus können Sie sicherstellen, dass die Nachricht erfolgreich von RabbitMQ empfangen wird. Ein Beispiel ist wie folgt:

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!'
)
Nach dem Login kopieren

3. Zusammenfassung

Dieser Artikel stellt vor, wie man hochverfügbare Nachrichten-Middleware unter Linux einrichtet und stellt Beispielcode für RabbitMQ bereit. In tatsächlichen Anwendungen sind weitere Konfigurationen und Optimierungen entsprechend den spezifischen Anforderungen erforderlich. Durch den rationellen Einsatz hochverfügbarer Nachrichten-Middleware können die Robustheit und Zuverlässigkeit des Systems verbessert und eine zuverlässige Zustellung von Nachrichten in einer verteilten Umgebung sichergestellt werden.

Referenz:

    RabbitMQ-Dokumentation: https://www.rabbitmq.com/
  1. Kafka-Dokumentation: https://kafka.apache.org/
  2. ActiveMQ-Dokumentation: https://activemq.apache.org /
Hinweis: Der obige Beispielcode dient nur als Referenz und muss möglicherweise entsprechend den spezifischen Umständen in tatsächlichen Anwendungen geändert werden.

Das obige ist der detaillierte Inhalt vonSo richten Sie hochverfügbare Messaging-Middleware unter Linux ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage