Teknologian jakaminen

Päivä 17 / 100 päivää säätiön rakentamisesta – Viestijonon aloittaminen

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Päivä 17 / 100 päivää säätiön rakentamisesta – Viestijonon aloittaminen

peruskonseptit

Mikä on viestijono?

MQ: Viestijono

Jono, joka tallentaa viestejä Kuluttaessa viestejä, ne kulutetaan järjestyksessä (jono ensin sisään, ensin ulos).

Viestityksessä mukana olevia kahta osapuolta kutsutaan tuottaja jakuluttaja , tuottaja vastaa viestien lähettämisestä ja kuluttaja vastaa viestien käsittelystä.

Mitä hyötyä viestijonosta on?

Kolme tuttua etua

  • Asynkroninen käsittely: Asynkroninen käsittely toteutetaan viestijonon kautta Kun vastaava viesti on lähetetty viestijonoon, tulos palautetaan välittömästi, mikä lyhentää vasteaikaa ja parantaa käyttökokemusta. Tämän jälkeen järjestelmä kuluttaa viestin.
  • Huippuleikkaus/virranrajoitus: Tallenna ensin suuren samanaikaisuuden synnyttämät tapahtumaviestit lyhyessä ajassa viestijonoon, ja sitten taustapalvelu kuluttaa nämä viestit hitaasti omien kykyjensä mukaan välttäen näin suoran kumoamisen. - loppupalvelu.
  • Vähennä järjestelmän kytkentää: Moduulien välillä ei ole suoria kutsuja, joten moduulien lisäämisellä tai muokkaamisella on vain vähän vaikutusta muihin moduuleihin.

Yrityssovellusskenaariot

  • Toteuta hajautettuja tapahtumia: Yksi hajautettujen tapahtumien ratkaisuista on MQ-tapahtumat, joita useimmat MQ:t tukevat.Tapahtumat sallivat tapahtumien suoratoistosovelluksetkuluttaa, prosessoida, tuottaaKoko viestiprosessi määritellään atomioperaatioksi.
  • Sekvenssitakuu: sopii skenaarioihin, joissa on tiukat vaatimukset datajärjestykseen, useimmat MQ:t tukevat.
  • Viive/ajoituskäsittely: Viestiä ei kuluteta heti sen lähettämisen jälkeen, vaan se kulutetaan tietyn ajan kuluttua.
  • Tietovirran käsittely: Hajautettujen järjestelmien luomille massiivisille tietovirroille, kuten yrityslokit, seurantatiedot, käyttäjien käyttäytyminen jne., viestijono voi kerätä nämä tiedot reaaliajassa tai erissä ja tuoda ne suureen tietojenkäsittelymoottoriin saavuttaa tehokas tietojenkäsittely Virranhallinta ja käsittely.

Mitä ongelmia viestijonojen käyttö tuo mukanaan?

Alennettu järjestelmän saatavuus: Järjestelmän saatavuus on jossain määrin heikentynyt. Miksi sanot tämän? Ennen MQ:lle liittymistä sinun ei tarvitse ajatella viestien katoamista tai MQ:n katkaisemista jne. MQ:n käyttöönoton jälkeen sinun on kuitenkin mietittävä sitä!

Lisääntynyt järjestelmän monimutkaisuus: MQ:lle liittymisen jälkeen sinun on varmistettava, että viestejä ei kuluteta toistuvasti, käsiteltävä viestien katoaminen, varmistettava viestien toimitusjärjestys ja muut asiat!

Johdonmukaisuusongelmat: Mainitsin edellä, että viestijonolla voidaan saavuttaa asynkroninen toteutus, ja viestijonon tuoma asynkroninen voi todellakin parantaa järjestelmän vastausnopeutta. Mutta entä jos viestin todellinen kuluttaja ei kuluttanut viestiä oikein? Tämä johtaa tietojen epäjohdonmukaisuuteen!

Yleiset viestijonot

Kafka

Kafka on avoimen lähdekoodin versio LinkedInistäHajautettu suoratoistoalusta, on tullut Apachen huipputason projektiksi. Sitä käytettiin alkuaikoina massiivisten lokien käsittelyyn, ja myöhemmin se kehittyi vähitellen täysin varustelluksi korkean suorituskyvyn viestijonoksi.

Suoratoistoalustalla on kolme avaintoimintoa:

  1. viestijono: Julkaise ja tilaa viestit Tämä toiminto on samanlainen kuin viestijono, minkä vuoksi Kafka luokitellaan myös viestijonoksi.
  2. Vikasietoinen jatkuva tallennus tietueviestivirtojen: Kafka säilyttää viestit levylle välttäen tehokkaasti viestien katoamisen riskin.
  3. Suoratoiston käsittelyalusta: Kafka tarjoaa täydellisen tiedonkäsittelykirjaston viestien käsittelemiseksi niiden julkaisuhetkellä.

RocketMQ

RocketMQ on pilvipohjainen "viestin, tapahtuman, streamin" reaaliaikainen tietojenkäsittelyalusta, jonka lähdekoodi on Alibaba. Se perustuu Kafkaan ja siitä on tullut huipputason Apache-projekti.

RocketMQ:n ydinominaisuudet (ote RocketMQ:n viralliselta verkkosivustolta):

  • Alkuperäinen pilvi: syntynyt pilven mukana, kasvanut pilven mukana, rajoittamaton joustava skaalaus, K8-ystävällinen
  • Suuri suorituskyky: biljoonan tason läpimenonopeus taattu, ja se täyttää sekä mikropalvelu- että big data -skenaariot.
  • Stream-käsittely: Tarjoaa kevyen, erittäin skaalautuvan, tehokkaan ja monipuolisen tietovirran laskentamoottorin.
  • Taloudellinen luokka: Vakaus, jota käytetään laajalti keskeisissä transaktioyhteyksissä.
  • Minimalistinen arkkitehtuuri: nolla ulkoista riippuvuutta, Shared-nothing-arkkitehtuuri.
  • Ympäristöystävällinen: yhdistyy saumattomasti ympäröiviin ekosysteemeihin, kuten mikropalveluihin, reaaliaikaiseen tietojenkäsittelyyn ja datajärviin.

RabbitMQ

RocketMQ on pilvipohjainen "viestin, tapahtuman, streamin" reaaliaikainen tietojenkäsittelyalusta, jonka lähdekoodi on Alibaba. Se perustuu Kafkaan ja siitä on tullut huipputason Apache-projekti.

RocketMQ:n ydinominaisuudet (ote RocketMQ:n viralliselta verkkosivustolta):

  • Alkuperäinen pilvi: syntynyt pilven mukana, kasvanut pilven mukana, rajoittamaton joustava skaalaus, K8-ystävällinen
  • Suuri suorituskyky: biljoonan tason läpimenonopeus taattu, ja se täyttää sekä mikropalvelu- että big data -skenaariot.
  • Stream-käsittely: Tarjoaa kevyen, erittäin skaalautuvan, tehokkaan ja monipuolisen tietovirran laskentamoottorin.
  • Taloudellinen luokka: Vakaus, jota käytetään laajalti keskeisissä transaktioyhteyksissä.
  • Minimalistinen arkkitehtuuri: nolla ulkoista riippuvuutta, Shared-nothing-arkkitehtuuri.
  • Ympäristöystävällinen: yhdistyy saumattomasti ympäröiviin ekosysteemeihin, kuten mikropalveluihin, reaaliaikaiseen tietojenkäsittelyyn ja datajärviin.

Pulsar

Pulsar on seuraavan sukupolven pilvipohjainen hajautettu viestinkulkualusta. Sen on alun perin kehittänyt Yahoo, ja siitä on tullut huipputason Apache-projekti.

Pulsar integroi viestintä-, tallennus- ja toiminnallisen tietojenkäsittelyn. Se käyttää tietojenkäsittely- ja tallennusarkkitehtuurin suunnittelua, joka tukee useiden vuokralaisten, jatkuvaa tallennusta ja usean konehuoneen välistä tietojen replikointia , ja korkean suorituskyvyn suoratoiston tiedontallennusominaisuuksia, kuten skaalautuvuutta, pidetään parhaana ratkaisuna reaaliaikaiseen viestien siirtoon, varastointiin ja tietojenkäsittelyyn pilvipalveluiden aikakaudella.

Pulsarin tärkeimmät ominaisuudet ovat seuraavat (otettu viralliselta verkkosivustolta):

  • Se on seuraavan sukupolven pilvipohjainen hajautettu viestinkulkualusta.
  • Yksi Pulsar-esiintymä tukee natiivisti useita klustereita ja voi suorittaa saumattomasti viestien replikoinnin klusterien välillä tietokonehuoneissa.
  • Erittäin alhainen julkaisuviive ja päästä päähän -latenssi.
  • Laajentuu saumattomasti yli miljoonaksi aiheeksi.
  • Yksinkertainen asiakassovellusliittymä, joka tukee Javaa, Goa, Pythonia ja C++:aa.
  • Useita tilaustiloja aiheille (yksinomainen, jaettu ja vikasietoinen).
  • Viestien toimittaminen taataan Apache BookKeeperin tarjoaman jatkuvan viestien tallennusmekanismin avulla.
  • Kevyt palvelimeton laskentakehys Pulsar Functions toteuttaa stream-natiivisen tiedonkäsittelyn.
  • Pulsar IO, Pulsar Functionsiin perustuva palvelimeton liitinkehys, helpottaa tietojen siirtämistä Apache Pulsariin ja sieltä pois.
  • Porrastettu tallennus voi siirtää tietoja kuumasta tallennustilasta kylmään/pitkäaikaiseen tallennustilaan (kuten S3, GCS), kun tiedot vanhenevat.

Yllä olevan MQ:n vertailu:

Kontrasti suuntayhteenveto
Läpäisykyky10 000 tason ActiveMQ:n ja RabbitMQ:n (ActiveMQ:lla on huonoin suorituskyky) suorituskyky on suuruusluokkaa pienempi kuin 100 000 tason tai jopa miljoonan tason RocketMQ ja Kafka.
Saatavuus Kaikki voivat saavuttaa korkean käytettävyyden. ActiveMQ ja RabbitMQ perustuvat molemmat master-slave-arkkitehtuuriin korkean käytettävyyden saavuttamiseksi. RocketMQ perustuu hajautettuun arkkitehtuuriin. Kafkaa jaetaan myös useilla kopioilla yhdestä tiedosta.
ajantasaisuusRabbitMQ on kehitetty Erlangin pohjalta, joten sillä on vahvat samanaikaisuusominaisuudet, erittäin hyvä suorituskyky, erittäin alhainen latenssi, saavuttaa mikrosekunnin tason ja muut ovat ms-tasolla.
Toiminnan tukiPulsarilla on kattavampia toimintoja ja se tukee useita vuokrausmalleja, useita kulutusmalleja ja pysyvyystiloja. Se on seuraavan sukupolven pilvipohjainen hajautettu viestinkulkualusta.
Viesti kadonnutActiveMQ:lla ja RabbitMQ:lla on erittäin pieni häviön mahdollisuus, ja Kafka, RocketMQ ja Pulsar voivat teoriassa saavuttaa 0 häviön.

Yhteenveto:

  • Vaikka RabbitMQ on suorituskyvyltään hieman huonompi kuin Kafka, RocketMQ ja Pulsar, koska se on kehitetty Erlangiin perustuen, sillä on vahvat samanaikaisuusominaisuudet, erittäin hyvä suorituskyky ja erittäin alhainen latenssi, joka saavuttaa mikrosekunnin tason. Koska RabbitMQ on kuitenkin kehitetty Erlangiin perustuen, harvalla kotimaisella yrityksellä on voimaa tehdä tutkimusta ja räätälöintiä Erlangin lähdekooditasolla. Jos liiketoimintaskenaariossa ei ole liian korkeita samanaikaisuusvaatimuksia (100 000 tai miljoona tasoa), RabbitMQ voi olla ensimmäinen valintasi näiden viestijonojen joukossa.
  • RocketMQ ja Pulsar tukevat vahvaa johdonmukaisuutta ja niitä voidaan käyttää skenaarioissa, joissa viestien johdonmukaisuusvaatimukset ovat korkeat.
  • RocketMQ:n on tuottanut Alibaba ja se on Java avoimen lähdekoodin projekti. Voimme lukea lähdekoodin suoraan ja sitten muokata oman yrityksemme MQ:ta on testattu Alibaban todellisissa liiketoimintaskenaarioissa.
  • Kafkan ominaisuudet ovat itse asiassa hyvin ilmeiset, eli se tarjoaa vain vähemmän ydintoimintoja, mutta tarjoaa erittäin korkean suorituskyvyn, ms-tason latenssin, erittäin korkean käytettävyyden ja luotettavuuden, ja jakelua voidaan mielivaltaisesti laajentaa. Samalla on parasta, että Kafka tukee pienempää määrää aiheita varmistaakseen sen erittäin korkean suorituskyvyn. Ainoa Kafkan haittapuoli on, että viestejä voidaan kuluttaa toistuvasti, mikä vaikuttaa hyvin vähän datan tarkkuuteen Big datan ja lokien keräämisen alalla tämä pieni vaikutus voidaan jättää huomiotta -ajan laskeminen ja lokien kerääminen. Jos kyseessä on reaaliaikainen laskenta, lokien kerääminen ja muut ison datan skenaariot, Kafkan käyttäminen on alan standardi, eikä siinä ole mitään ongelmaa se on lähes de facto standardi tällä alalla kaikkialla maailmassa.

Yksinkertainen kysely yritystason itsekehitetystä MQ:sta

Alibaba itse kehittämä: RocketMQ, RabbitMQ

Tencent itse kehittämä: TDMQ, CMQ

Baidu itsetutkimus: tutkittava

Tavun itsetutkimus: BMQ

Meituanin itse kehittämä: Mafma

Quanar.comin itse kehittämä: QMQ

JD.com itse kehittämä: JMQ

Muut on tutkittava. .