Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 12210|Vastaus: 0

Viestijonon väliohjelmiston tekninen valinta-analyysi

[Kopioi linkki]
Julkaistu 15.12.2016 10.52.40 | | | |
Viestiväliohjelmisto on väliohjelmistoteknologia, joka koostuu viestinsiirtomekanismista tai viestijonotilasta, ja joka käyttää tehokasta ja luotettavaa viestintämekanismia alustariippumattomaan tiedonvaihtoon sekä integroi hajautettuja järjestelmiä, jotka perustuvat tiedonsiirtoon. Tällä hetkellä alalla on monia MQ-tuotteita, kuten RabbitMQ, ActiveMQ, ZeroMQ jne., jotka ovat erinomaisia viestien välitysohjelmistoja, mutta kumman meidän tulisi valita projektiin? Tässä artikkelissa arvioidaan ja vertaillaan seuraavia viestijonotuotteita: RabbitMQ, ZeroMQ, ActiveMQ, MSMQ, Redis ja memcacheQ

Sivupolku: Tässä voimme ensin pohtia pientä kysymystä: "Miksi tarvitsemme viestijonopalveluita web-sovelluksissa?" ”
Esimerkiksi suuri määrä lisäys-, päivitys- ja muita pyyntöjä saapuu MySQL:ään samanaikaisesti, mikä johtaa suoraan lukemattomiin rivi- ja taulukkolukituksiin, ja jopa liian moniin pyyntöihin lopussa, mikä laukaisee liikaa yhteysvirheitä. Viestijonojen avulla voimme käsitellä pyyntöjä asynkronisesti, mikä helpottaa järjestelmän kuormitusta.

RabbitMQ
Se on avoimen lähdekoodin viestijono, joka on kirjoitettu Erlangilla ja tukee monia protokollia: AMQP, XMPP, SMTP, STOMP, mikä tekee siitä erittäin raskaan ja sopivamman yritystason kehitykseen. Se on johtava AMQP-protokollan toteutus, joka toteuttaa välittäjäarkkitehtuurin, mikä tarkoittaa, että viestit voidaan jonottaa keskitettyyn solmuun ennen kuin ne lähetetään asiakkaalle. Reititykseen, kuormantasaukseen tai datan pysyvyyteen on hyvä tuki. Tämä ominaisuus tekee RabbitMQ:sta helppokäyttöisen ja käyttöönotettavan, sopivan moniin tilanteisiin, kuten reititykseen, kuormantasapainotukseen tai viestin pysyvyyteen, ja sen voi tehdä vain muutamalla koodirivillä viestijonojen avulla. Tämä kuitenkin tekee siitä vähemmän skaalautuvan ja hitaamman, koska keskussolmu lisää viivettä ja on suurempi viestikapseloinnin jälkeen. RabbitMQ:n konfigurointiin sinun täytyy asentaa Erlang-ympäristö kohdekoneelle.
Klikkaa nähdäksesi tämän kuvan uudessa ikkunassa

? MQ(ZeroMQ)
Se tunnetaan nopeimpana viestijonotusjärjestelmänä, erityisesti suuren läpimenon kysyntätilanteissa. Se on erittäin kevyt viestintäjärjestelmä, joka on kehitetty erityisesti korkean läpimenon ja matalan viiveen tilanteisiin, ja sitä löytyy usein rahoitusalan sovelluksista. RabbitMQ:han verrattuna ZeroMQ tukee monia edistyneitä viestitilanteita, mutta ZeroMQ:n kehyksessä täytyy toteuttaa yksittäisiä lohkoja (kuten soketteja tai laitteita jne.).

? MQ (ZeroMQ) voi toteuttaa edistyneitä/monimutkaisia jonoja, joissa RabbitMQ ei ole hyvä, mutta kehittäjien täytyy yhdistää useita teknisiä kehyksiä yksinään, ja tekninen monimutkaisuus on haaste tämän MQ:n onnistuneelle soveltamiselle. ZeroMQ:lla on ainutlaatuinen ei-middleware-malli, jossa sinun ei tarvitse asentaa ja ajaa viestipalvelinta tai middlewarea, koska sovelluksesi toimii tässä palveluroolissa. Tarvitsee vain viitata ZeroMQ-kirjastoon, jonka voi asentaa NuGetin avulla, ja voit mielellään lähettää viestejä sovellusten välillä. ZeroMQ tarjoaa kuitenkin vain ei-pysyviä jonoja, mikä tarkoittaa, että jos kone menee rikki, data katoaa. Näistä Twitterin Storm käyttää ZeroMQ:ta datavirtojen siirtona. ZeroMQ on hyvin joustava, mutta sinun täytyy opetella sen 80-sivuinen käsikirja (jos kirjoitat hajautetusta järjestelmästä, muista lukea se).

ZeroMQ:lla ei ole väliohjelmistoarkkitehtuuria eikä se vaadi palveluprosesseja tai suorituksia. Itse asiassa sovelluksesi päätepiste toimii tässä palveluroolissa. Tämä tekee sen käyttöönotosta hyvin helppoa, mutta huolena on, ettei sinulla ole paikkaa katsoa, jos siinä menee jotain pieleen. Tietojemme mukaan ZeroMQ tarjoaa vain ei-pysyviä jonoja. Voit toteuttaa omat auditointi- ja tietojen palautuskyvyt siellä, missä niitä tarvitset.
Klikkaa nähdäksesi tämän kuvan uudessa ikkunassa

MSMQ
Tämä on ainoa asia Microsoftin tuotteessa, jota pidetään arvokkaana. Jos MSMQ pystyy osoittamaan pystyvänsä hoitamaan tämänkaltaisen tehtävän, he valitsevat käyttää sitä. Pointti on, että tämä asia ei ole monimutkainen, pelkkää vastaanottamista ja lähettämistä; Siinä on joitakin tiukkoja rajoituksia, kuten viestin maksimikoko 4MB. Kuitenkin se voi ratkaista nämä ongelmat yhdistämällä ohjelmistoihin kuten MassTransit tai NServiceBus.
Klikkaa nähdäksesi tämän kuvan uudessa ikkunassa

Jafka/Kafka
Kafka (joka jakaa viestejä eri solmujen kesken) on hajautettu MQ-järjestelmä, jonka LinkedIn kehitti ja avoimesti lähdekoodina joulukuussa 2010. Se on nyt Apache-järjestelmän, korkean suorituskyvyn monikielisen hajautetun Publish/Subscribe -viestijonojärjestelmän, inkubaatioprojekti, ja Jafka on inkuboitu Kafkan päälle, joka on päivitetty versio Kafkasta. Sillä on seuraavat ominaisuudet: nopea pysyvyys, joka voi jatkaa viestejä järjestelmän O(1)-ylikuormituksen alaisena; Korkea läpäisykyky, joka voi saavuttaa 10 W/s nopeuden tavallisella palvelimella; Täysin hajautettu järjestelmä, välittäjä, tuottaja ja kuluttaja tukevat kaikki natiivisti hajautettua ja saavuttavat automaattisesti monimutkaisen tasapainon. Tukee Hadoop-datan rinnakkaista latausta, mikä on toimiva ratkaisu lokidatalle ja offline-analyysijärjestelmille, kuten Hadoopille, mutta reaaliaikaisen käsittelyn rajoituksin. Kafka yhdistää online- ja offline-viestinkäsittelyn Hadoopin rinnakkaislatausmekanismin avulla, mikä on myös tärkeää tässä aiheessa tutkittavalle järjestelmälle. Apache Kafka on erittäin kevyt viestijärjestelmä verrattuna ActiveMQ:hon, ja hyvän suorituskyvyn lisäksi se on myös hajautettu järjestelmä, joka toimii hyvin.
Klikkaa nähdäksesi tämän kuvan uudessa ikkunassa

Apache ActiveMQ
ActiveMQ sijoittuu jonnekin näiden kahden (RabbitMQ ja ZeroMQ) välimaastoon, samankaltainen kuin ZemoMQ, ja sitä voidaan ottaa käyttöön sekä välitys- että P2P-tilassa. Samoin kuin RabbitMQ:ssa, on helppo toteuttaa edistyneitä skenaarioita ja vaatii vähän kulutusta.
ActiveMQ tunnetaan Java-maailman selkärankana. Sillä on pitkä historia ja sitä käytetään laajasti. Se on myös monialustainen, tarjoten luonnollisen integraatioyhteyden tuotteille, joita ei ole Microsoftin alustalla. Kuitenkin sitä voidaan ottaa huomioon vain, jos se on suoritettu MSMQ:n yli. ActiveMQ:n konfigurointiin sinun täytyy asentaa Java-ympäristö kohdekoneelle.
Klikkaa nähdäksesi tämän kuvan uudessa ikkunassa
On tärkeää huomata, että ActiveMQ:n seuraavan sukupolven tuote on Apollo, joka perustuu ActiveMQ-prototyyppiin ja on nopeampi, luotettavampi ja helpommin ylläpidettävä viestinvälitystyökalu. Apache kutsuu Apolloa nopeimmaksi ja kestävimmäksi STOMP-palvelimeksi (Streaming Text Orientated Message Protocol).
Apollon ominaisuudet ovat seuraavat:
Stomp 1.0 ja Stomp 1.1 -protokollat ovat tuettuja
Aiheet ja jonot
Jonoselain
Teeman pysyvät tilaukset
Peilijono
Luotettava viestintä
Viestin vanheneminen ja vaihto
Viestinpoimija
JAAS vahvistettu
ACL-pohjainen valtuutus
Tue SSL/TLS:ää ja sertifikaattien validointia
REST Management API
Klikkaa nähdäksesi tämän kuvan uudessa ikkunassa

Redis
Se on Key-Value NoSQL-tietokanta, jota kehitetään ja ylläpidetään, vaikka se onkin Key-Value-tietokantatallennusjärjestelmä, mutta se tukee MQ-toimintoja, joten sitä voidaan käyttää kevyenä jonopalveluna. RabbitMQ:n ja Redisin käyttöönotto- ja ulkojonottotoiminnoissa kumpikin miljoona kertaa, ja suoritusaika kirjataan joka 100 000 kerta. Testidata on jaettu neljään eri kokoon: 128Bytes, 512Bytes, 1K ja 10K. Kokeet osoittavat, että tiimiin liittyessä Redisin suorituskyky on korkeampi kuin RabbitMQ:n, kun datan vertailu on pieni, ja jos datakoko ylittää 10K, Redis on sietämättömän hidas. Lähdettyään tiimistä Redis osoitti erittäin hyvää suoritusta datan koosta riippumatta, kun taas RabbitMQ:n suorituskyky oli paljon heikompi kuin Redisin.

MemcacheQ
Pysyvä viestijono Memcacheq (lyhennettynä MCQ) on kevyt viestijono, jossa MemcacheQ:n ominaisuudet ovat seuraavat:
1 Yksinkertainen ja helppokäyttöinen
2 Nopea prosessointi
3 Useat jonot
4 Hyvä rinnakkaiskäyttö
5 Yhteensopiva Memcache-protokollan kanssa. Tämä tarkoittaa, että sinun tarvitsee vain asentaa memcache-laajennus, eikä lisäosia tarvita.
6 Sen käyttö zend-kehyksessä on myös kätevää.

Lopulta nämä tuotteet:
1. Molemmilla on omat asiakasrajapinnat tai ne tukevat useita ohjelmointikieliä;
2. Dokumentaatiota on paljon;
3. Positiivista tukea annettiin.
4. ActiveMQ:n, RabbitMQ:n, MSMQ:n, Redis kaikki tarvitsevat palveluprosesseja, joita voidaan seurata ja konfiguroida, ja muut ovat ongelmallisia
5. Kaikki tarjoavat suhteellisen hyvän luotettavuuden (johdonmukaisuuden), skaalautuvuuden ja kuormantasapainotuksen sekä tietenkin suorituskyvyn

En aio puhua hölynpölyä, alla on liitteenä joukko testituloksia, jotka on siepattu internetistä. Näytetään lähetettyjen ja vastaanotettujen viestien määrä sekunnissa. Koko prosessi tuotti yhteensä miljoona 1K-viestiä. Testi suoritettiin Windows Vistan itsenäisellä koneella.


Kuten näet, ZeroMQ ei ole taso kuten mikään muu. Sen suorituskyky on yllättävän korkea. Tästä huolimatta tämä tuote ei tarjoa viestin pysyvyyttä, ei pysty helposti tallentamaan ja valvomaan väliprosesseja, ja vaatii itseauditointia sekä tietojen palautusta, joten se ei ole tyydyttävä helppokäyttöisyyden ja HA:n kannalta. Johtopäätös on selvä: jos haluat sovelluksen lähettävän viestejä mahdollisimman nopeasti, valitset ZeroMQ:n. Se on arvokkaampaa, kun et välitä liikaa tiettyjen viestien menettämisestä sattumalta.

Tämän artikkelin bloggaaja toivoo (ja ei toivo kovin paljon) käyttävänsä Rabbitia, Rabbitmq:ssa on sisäänrakennettu haha, jos muodostat klusterin, ei tarvitse huolehtia kuormantasapainotuksesta, ja voit ottaa käyttöön jonopeilin. Mutta tämänkaltaisessa tilanteessa testauksia pitäisi tehdä enemmän, ja lopulta saat suosikkini, ja kaikki kuulemani ja lukemani asiat Rabbitista saavat minut tuntemaan, että sen pitäisi olla paras valinta.





Edellinen:c#/.NET lukee torrent-torrentin hajautustiedon lähdekoodin
Seuraava:WiFi-pääavainliitännän wifi-salasanakysely
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com