Az első weboldalaimat a 90-es évek végén írtam. Akkoriban nagyon egyszerű volt működésbe állítani őket.

Üdvözlet, Habr! Szeretném megosztani egy tudás útmutató könyvet, amelyet sikerült összegyűjtenem RabbitMQ és összegezni rövid ajánlásokban és következtetésekben.

Tartalomjegyzék

  • RabbitMQ. 1. rész. Bevezetés. Erlang, AMQP és RPC
  • RabbitMQ. 2. rész. Az Exchanges részletezése
  • RabbitMQ. 3. rész. Queues és Bindings megértése
  • RabbitMQ. 4. rész. Mi a helyzet a üzenetekkel és keretekkel
  • RabbitMQ. 5. rész. Az üzenetek közzétételi és fogyasztási teljesítménye
  • RabbitMQ. 6. rész. A Federation és Shovel modulok áttekintése
  • RabbitMQ. 7. rész. Részletesen a Kapcsolatról és csatornáról
  • RabbitMQ. 8. rész. RabbitMQ .NET környezetben
  • RabbitMQ. 9. rész. Monitoring

Röviden az AMQP-ról

Az AMQP (Advanced Message Queuing Protocol) egy nyílt protokoll az üzenetek rendszerkomponensek közötti továbbítására. A fő elképzelés az, hogy a különböző alrendszerek (vagy független alkalmazások) szabadon tudjanak üzeneteket cserélni egy AMQP brókeren keresztül, amely biztosítja az útválasztást, esetleg garantálja a kézbesítést, az adatfolyamok elosztását, és lehetőséget ad bizonyos típusú üzenetekre való feliratkozásra.

Protokoll AMQP három fogalmat vezet be:

Az első weboldalaimat a 90-es évek végén írtam. Akkoriban nagyon egyszerű volt működésbe állítani őket.

  • exchange (cserehely) – ahová az üzeneteket küldik. A cserehely elosztja az üzenetet egy vagy több sorba. Ő irányítja az üzeneteket a sorba a létrehozott kapcsolatok (binding) alapján az ő és a sor között
  • queue (sor) – egy adatstruktúra, amely a lemezen vagy a memóriában tárolja az üzenetekre mutató hivatkozásokat, és átadja az üzenetek másolatait a fogyasztóknak consumers (fogyasztóknak)
  • binding (lekötés) – egy szabály, amely megjeleníti a cserehelynek, hogy ezek az üzenetek melyik sorba kerüljenek

A protokoll a TCP/IP.

rendszer tetején működik.

Röviden az Erlangról GitHubA projekt forráskódja a következő tárolóban található . Az architektúra RabbitMQ-server Erlang és BEAM.

Erlang A rendszert Ericsson fejlesztette ki az 1980-as évek közepén, mint egy elosztott, hibatűrő, valós idejű rendszert az alkalmazások számára, amelyek 99,999% megbízhatóságot igényelnek. Erlang Különböző iparágakban és modern alkalmazásokban használják, például a WhatsApp. További részleteket olvashat a WhatsApp architektúrájáról, amelyet a Facebook 19 milliárd dollárért vásárolt meg

Röviden a RabbitMQ-ról

RabbitMQ – egy nyílt forráskódú üzenetbróker, amely üzeneteket irányít az összes alapvető protokollel AMQP az alábbiakban leírt specifikáció. RabbitMQ megvalósítja és kiegészíti a protokollt. AMQP.

Az üzenetváltás modelljének alapgondolata az, hogy RabbitMQ producer producer (a kiadó) nem küld közvetlen üzeneteket a sorba. Valójában gyakran a kiadó még csak azt sem tudja, hogy az üzenet egyáltalán el lesz-e juttatva valamilyen sorba.

Ehelyett a kiadó csak a cserére küldhet üzeneteket. Egyrészt a csere fogadja az üzeneteket a kiadóktól, másrészt pedig továbbítja azokat a sorokba. A cserének pontosan tudnia kell, mit kell tenni a megkapott üzenettel. Hozzá kell-e adni egy konkrét sorhoz? Hozzá kell-e adni több sorhoz? Vagy az üzenetet figyelmen kívül kell hagyni?

Az első weboldalaimat a 90-es évek végén írtam. Akkoriban nagyon egyszerű volt működésbe állítani őket.

A munka röviden így leírható: RabbitMQ A kiadó üzenetet küld egy meghatározott cserére.

  1. A csere, miután megkapta az üzenetet, az üzenetet az általa és a sor között lévő kötési szabályok szerint egy vagy több sorba irányítja.
  2. A sor tárol egy hivatkozást erre az üzenetre. Magát az üzenetet memóriában vagy lemezen tárolják.
  3. Amint a fogyasztó készen áll arra, hogy az üzenetet a sorból megkapja, a szerver létrehoz egy másolatot az üzenetről a hivatkozás alapján, és elküldi.
  4. A fogyasztó megkapja az üzenetet, és visszaigazolást küld a brókernek.
  5. A bróker, miután megkapta a visszaigazolást, törli az üzenet másolatát a sorból. Ezután eltávolítja a memóriából és a lemezről.
  6. RPC (távoli eljárás-hívás)

RPC

Folyamat gyakorlatilag minden kölcsönhatás alapja a maggal. . Például a kliens feltételeinek kezdeti megbeszélése RabbitMQ, bemutat egy adott folyamatot. RabbitMQ. Amint ez a sorozat befejeződik, RPCkész lesz kérdések fogadására a klienstől: RabbitMQ A specifikációban is

Az első weboldalaimat a 90-es évek végén írtam. Akkoriban nagyon egyszerű volt működésbe állítani őket.

a kliens és a szerver parancsokat hívhatnak meg. Ez azt jelenti, hogy a kliens várja a szerverrel való kölcsönhatást. A parancsok osztályok és metódusok. Például, AMQP Connection.Start – metódus hívása. Start osztályának kapcsolat és csatornák Connection.

Az ilyen információcsere során a kliens és a szerver között

csatornákat használnak. A csatornák egy adott kapcsolaton belül jönnek létre.. Minden csatorna izolált a többi csatornától. A szinkron esetén nem lehet a következő parancsot végrehajtani, amíg nem érkezett válasz. Annak érdekében, hogy lehetővé váljon a parancsok párhuzamos küldése, több csatornát kell megnyitni. Minden csatorna különfolyamatot hoz létre. Egy kapcsolatnak több csatornája lehet (

multiplexing Erlang multiplexingmultiplexelés). Minden csatornához léteznek bizonyos struktúrák és objektumok a memóriában. Tehát minél több csatorna van egy kapcsolat keretein belül, annál több memóriát használ a RabbitMQ ennek a kapcsolatnak a kezelésére.

Az első weboldalaimat a 90-es évek végén írtam. Akkoriban nagyon egyszerű volt működésbe állítani őket.

Egyszerű példa a kapcsolat és csatorna létrehozására a RabbitMQ.Client:

// ...
private void TryConnect()
{
    var factory = new ConnectionFactory() 
    {
        HostName = "host_name",
        UserName = "user_name",
        Password = "p@ssword",
        // Включение автоматичекого восстановления
        // соединения после сбоев сети 
        AutomaticRecoveryEnabled = true
    };
    _connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
    _channel = _connection.CreateModel();
    // other options 
}

Minden egyes művelethez új kapcsolat nyitása nem ajánlott, mivel ez nagy költségeket eredményezne.A csatornáknak is állandónak kell lenniük, de sok protokollhibából adódóan a csatornát le kell zárni, így a csatorna élettartama rövidebb lehet, mint a kapcsolaté.

Hol használják a RabbitMQ-t?

A mikroszolgáltatások kontextusában a protokollt AMQP és annak megvalósítását RabbitMQ gyakran használják aszinkron interakcióra a szolgáltatások között.

A kontextusban IIOT protokoll AMQP és annak megvalósítását RabbitMQ az adatok cseréjére használják szerverek között (szerver-szerver). Emellett használják a RabbitMQ MQTT plugin-t ami a protokoll megvalósítása MQTT adatok továbbítására érzékelő és szerver között alacsony sebességű, magas késleltetésű környezetekben (a támogatott protokollok teljes listáját megtalálja a a projekt weboldalán).

A következő cikkben részletesebben tárgyaljuk az Exchanges-t.

Hivatkozások

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster