RabbitMQ-meddelanden och asynkrona system · Lektion

Federation-plugin för klustring

Utforska Federation-pluginen för att ansluta flera RabbitMQ-brokers till ett logiskt kluster utan komplex nätverkskonfiguration. Skapa distribuerade meddelandesystem som sträcker sig över datacenter.

Lektion 3 av 411 steg

Federation-plugin för klustring är en gratis lektion i RabbitMQ-meddelanden och asynkrona system på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för RabbitMQ-meddelanden och asynkrona system, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i RabbitMQ-meddelanden och asynkrona system innehåller totalt 4 lektioner.

Vad är RabbitMQ Federation?

Föreställ dig att du har RabbitMQ-brokers i olika datacenter eller molnregioner. Hur kan de dela meddelanden utan komplicerade nätverkskonfigurationer?

Federation-pluginet gör det möjligt att löst koppla samman dessa brokers. Det gör att meddelanden kan flöda mellan dem och skapa ett distribuerat meddelandesystem över geografiska gränser.

Federation jämfört med traditionell klustring

Det är viktigt att skilja Federation från traditionell RabbitMQ-klustring:

  • Klustring: Kopplar samman noder tätt så att de delar tillstånd och data. Passar bäst för hög tillgänglighet inom ett enda nätverk med låg fördröjning, till exempel ett datacenter.
  • Federation: Kopplar löst samman brokers genom att replikera meddelanden. Passar bra för WAN-nätverk eller för att koppla samman brokers som hanteras av olika team. Tillstånd delas inte på samma sätt som i ett kluster.

Viktiga komponenter: upstreams och policies

Federation bygger på två huvudkoncept:

  • Upstreams: Definierar den källbroker som meddelanden hämtas från. En upstream anger anslutningsinformationen, till exempel URI:n, för den fjärranslutna RabbitMQ-instansen.
  • Policies: Dessa regler avgör vilka exchanges eller köer på din downstream-broker som ska ansluta till vilken upstream-broker. De använder reguljära uttryck för att matcha namn.

Aktivera Federation-pluginet

Innan du kan använda federation måste du aktivera pluginet på alla deltagande RabbitMQ-brokers. Detta görs med RabbitMQ:s kommandoradsverktyg.

Kör följande kommando på varje broker:

rabbitmq-plugins enable rabbitmq_federation rabbitmq_federation_management

Konfigurera en upstream-länk

En 'upstream' anger för din lokala broker var meddelanden ska hämtas från. Du definierar den med kommandot rabbitmqctl set_parameter.

Det här exemplet konfigurerar en upstream med namnet 'my-upstream' som pekar på en fjärransluten broker:

rabbitmqctl set_parameter federation-upstream my-upstream \
'{"uri":"amqp://guest:guest@remote-host:5672","expires":3600000}'

Skapa en Federation-policy för exchanges

När en upstream har definierats tillämpar du den på exchanges med hjälp av en policy. Policyn instruerar din lokala broker att federera meddelanden för matchande exchanges från den angivna upstreamen.

Den här policyn federerar alla exchanges som börjar med 'fed.' från 'my-upstream':

rabbitmqctl set_policy --apply-to exchanges \
fed-exchanges ".^fed\\..*" \
'{"federation-upstream":"my-upstream"}'

Så fungerar federerade exchanges

Med en federerad exchange:

  • Publicerar en producent meddelanden till en exchange på upstream-brokern.
  • Federation-pluginet på downstream-brokern hämtar dessa meddelanden från upstream-exchangen.
  • Meddelandena anländer sedan till motsvarande federerade exchange på downstream-brokern, där lokala konsumenter kan ta emot dem.

Konsumenten interagerar endast med sin lokala (downstream) broker.

Klientexempel: ta emot meddelanden från en federerad exchange

Här är en Python-konsument som ansluter till en downstream-broker och tar emot meddelanden från en federerad exchange. Den behöver inte känna till att meddelandena ursprungligen kom från en upstream-broker.

För att köra detta måste du se till att pika är installerat (pip install pika).

import pika
import sys
import os

def main():
    # Connect to the local (downstream) RabbitMQ broker
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()

    # Declare the exchange that is federated from an upstream broker
    # (e.g., using the policy created in previous steps for 'fed_logs')
    channel.exchange_declare(exchange='fed_logs', exchange_type='fanout', durable=True)

    result = channel.queue_declare(queue='', exclusive=True)
    queue_name = result.method.queue

    channel.queue_bind(exchange='fed_logs', queue=queue_name)

    print(' [*] Waiting for federated messages. To exit press CTRL+C')

    def callback(ch, method, properties, body):
        print(f" [x] Received: {body.decode()}")

    channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
    channel.start_consuming()

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print(' Interrupted')
        try:
            sys.exit(0)
        except SystemExit:
            os._exit(0)

Federera köer

Du kan även federera köer. När en kö är federerad hämtas meddelanden som publiceras till kön på upstream-brokern och läggs till i motsvarande kö på downstream-brokern.

Policykonfigurationen är mycket likartad, men ange --apply-to queues:

rabbitmqctl set_policy --apply-to queues \
fed-queues ".^fed\\..*" \
'{"federation-upstream":"my-upstream"}'

Snabbkontroll av Federation

Vilket av följande beskriver bäst det huvudsakliga användningsområdet för RabbitMQ Federation?

Sammanfattning: Federation för distribuerad meddelandehantering

I den här lektionen har du lärt dig om RabbitMQ Federation-pluginet:

  • Det gör att du kan koppla samman RabbitMQ-brokers på olika platser.
  • Det använder upstreams för att definiera källbrokers och policies för att tillämpa federeringsregler.
  • Federation skiljer sig från klustring genom att erbjuda lös koppling, vilket passar för WAN-nätverk.
  • Du kan federera både exchanges och köer, vilket möjliggör flexibel meddelandedistribution i ett distribuerat system.

Detta kraftfulla plugin hjälper dig att bygga robusta, geografiskt distribuerade meddelandearkitekturer.

Gratis att börja

Lär dig RabbitMQ-meddelanden och asynkrona system med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
11
Lektioner
44

Vanliga frågor

Är lektionen ”Federation-plugin för klustring” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen RabbitMQ-meddelanden och asynkrona system, inklusive ”Federation-plugin för klustring”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i RabbitMQ-meddelanden och asynkrona system innehåller totalt 4 lektioner.

Vad lär jag mig i ”Federation-plugin för klustring”?

Utforska Federation-pluginen för att ansluta flera RabbitMQ-brokers till ett logiskt kluster utan komplex nätverkskonfiguration. Skapa distribuerade meddelandesystem som sträcker sig över datacenter. Ni övar på RabbitMQ-meddelanden och asynkrona system med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig RabbitMQ-meddelanden och asynkrona system?

Du behöver inga förkunskaper. Utbildningen i RabbitMQ-meddelanden och asynkrona system på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Federation-plugin för klustring”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här RabbitMQ-meddelanden och asynkrona system-lektionen?

Ja. Varje RabbitMQ-meddelanden och asynkrona system-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Plugin för fördröjda meddelanden
  2. Shovel-plugin för federering
  3. Federation-plugin för klustring
  4. Deduplicering av meddelanden och plugins för consistent hash exchange
← Tillbaka till RabbitMQ-meddelanden och asynkrona system