See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 12210|Vastuse: 0

Sõnumijärjekorra vahendustarkvara tehnilise valiku analüüs

[Kopeeri link]
Postitatud 15.12.2016 10:52:40 | | | |
Sõnumite vahendustarkvara on vahendustarkvara tehnoloogia, mis koosneb sõnumite edastamise mehhanismist ehk sõnumijärjekorra režiimist, mis kasutab tõhusat ja usaldusväärset sõnumimehhanismi platvormist sõltumatuks andmevahetuseks ning integreerib hajutatud süsteeme, mis põhinevad andmesidel. Praegu on tööstuses palju MQ tooteid, nagu RabbitMQ, ActiveMQ, ZeroMQ jne, mis on suurepärased sõnumite vahendustarkvara, kuid millise peaksime projektis valima? See artikkel hindab ja võrdleb järgmisi sõnumijärjekorra tooteid: RabbitMQ, ZeroMQ, ActiveMQ, MSMQ, Redis ja memcacheQ

Kõrvalepõige: Siin võime esmalt mõelda väikesele küsimusele: "Miks vajame sõnumijärjekorra teenuseid veebirakendustes?" ”
Näiteks jõuab MySQL-i samaaegselt suur hulk lisamis-, uuendus- ja muid päringuid, mis toob kaasa lugematuid ridade ja tabeli lukustusi ning lõpuks isegi liiga palju päringuid, põhjustades liiga palju ühendusvigu. Sõnumijärjekordade abil saame päringuid asünkroonselt töödelda, vähendades süsteemi koormust.

RabbitMQ
See on avatud lähtekoodiga sõnumijärjekord, mis on kirjutatud Erlangis ja toetab mitmeid protokolle: AMQP, XMPP, SMTP, STOMP, mis teeb selle väga mahukaks ja sobivamaks ettevõtte tasemel arenduseks. See on juhtiv AMQP protokolli rakendus, mis rakendab vahendaja arhitektuuri, mis tähendab, et sõnumeid saab enne kliendile saatmist kesksõlmes järjekorda panna. On hea tugi marsruutimisele, koormuse tasakaalustamisele või andmete püsivusele. See funktsioon teeb RabbitMQ lihtsasti kasutatavaks ja juurutatavaks, sobivaks paljudeks olukordadeks nagu marsruutimine, koormuse tasakaalustamine või sõnumi püsivus ning seda saab teha vaid mõne koodireaga sõnumijärjekordadega. See muudab selle aga vähem skaleeritavaks ja aeglasemaks, kuna keskne sõlm suurendab latentsust ja on pärast sõnumi kapseldamist suurem. RabbitMQ seadistamiseks tuleb sihtmasinasse paigaldada Erlangi keskkond.
Klõpsa, et vaadata seda pilti uues aknas

? MQ(ZeroMQ)
See on tuntud kui kiireim sõnumite järjekorra süsteem, eriti suure läbilaskevõimega nõudluse stsenaariumite puhul. See on väga kerge sõnumisüsteem, mis on loodud spetsiaalselt kõrge läbilaskevõime/madala latentsusega olukordade jaoks ning mida sageli leidub finantsmaailma rakendustes. Võrreldes RabbitMQ-ga toetab ZeroMQ paljusid keerukaid sõnumistsenaariume, kuid ZeroMQ raamistikus tuleb rakendada üksikuid plokke (näiteks pesad või seadmed jne).

? MQ (ZeroMQ) suudab rakendada keerukaid/keerukaid järjekordi, milles RabbitMQ ei ole hea, kuid arendajad peavad ise ühendama mitu tehnilist raamistikku ning tehniline keerukus on selle MQ edukaks rakendamiseks väljakutseks. ZeroMQ-l on ainulaadne mitte-middleware'i mudel, kus sa ei pea paigaldama ega käivitama sõnumiserverit või vahendustarkvara, sest sinu rakendus täidab seda teenuse rolli. Kõik, mida pead tegema, on viidata ZeroMQ teekile, mida saab paigaldada NuGeti abil, ja saad rõõmuga sõnumeid rakenduste vahel saata. Kuid ZeroMQ pakub ainult mittepüsivaid järjekordi, mis tähendab, et kui masin läheb rivist välja, kaovad andmed. Nende hulgas kasutab Twitteri Storm andmevoogude edastamiseks ZeroMQ-d. ZeroMQ on väga paindlik, kuid pead õppima selle 80-leheküljelist käsiraamatut (kui kirjutad hajutatud süsteemist, loe seda kindlasti).

ZeroMQ-l puudub vahendustarkvara arhitektuur ning see ei nõua teenuseprotsesse ega käivitusi. Tegelikult täidab sinu rakenduse lõpp-punkt seda teenuse rolli. See teeb juurutamise väga lihtsaks, kuid mure on selles, et sul pole kuskil jälgida, kui midagi valesti läheb. Nii palju kui me teame, pakub ZeroMQ ainult mittepüsivaid järjekordi. Saad rakendada oma auditi ja andmete taastamise võimalusi seal, kus neid vaja on.
Klõpsa, et vaadata seda pilti uues aknas

MSMQ
See on ainus asi, mida Microsofti tootes peetakse väärtuslikuks. Kui MSMQ suudab tõestada, et suudab sellist ülesannet täita, valib ta selle kasutamise. Oluline on, et see asi ei ole keeruline, ainult vastuvõtmine ja saatmine; Sellel on mõned kindlad piirangud, näiteks maksimaalne sõnumi suurus on 4MB. Siiski saab ta neid probleeme lahendada, ühendudes mõne tarkvaraga nagu MassTransit või NServiceBus.
Klõpsa, et vaadata seda pilti uues aknas

Jafka/Kafka
Kafka (mis jagab sõnumeid erinevate sõlmede vahel) on hajutatud MQ süsteem, mille arendas ja avatud lähtekoodiga LinkedIn 2010. aasta detsembris ning mis on nüüd Apache inkubatsiooniprojekt, mis on kõrge jõudlusega keeledeülene hajutatud Publish/Subscribe sõnumite järjekorra süsteem, ning Jafka inkubeeritakse Kafka peal, mis on Kafka uuendatud versioon. Sellel on järgmised omadused: kiire püsivus, mis suudab sõnumeid hoida O(1) süsteemi koormuse all; Kõrge läbilaskevõime, mis võib tavalisel serveril saavutada 10W/s läbilaskevõime; Täielikult hajutatud süsteem, maakler, tootja ja tarbija toetavad kõik natiivselt hajutatud ja saavutavad automaatselt keeruka tasakaalu. Toetab Hadoopi andmete paralleelset laadimist, mis on elujõuline lahendus logiandmete ja võrguühenduseta analüüsisüsteemide nagu Hadoop jaoks, kuid reaalajas töötlemise piirangutega. Kafka ühendab veebipõhise ja offline-sõnumite töötlemise Hadoopi paralleelse laadimismehhanismi kaudu, mis on oluline ka selles valdkonnas uuritava süsteemi jaoks. Apache Kafka on ActiveMQ-ga võrreldes väga kerge sõnumisüsteem ning lisaks heale jõudlusele on see ka hästi toimiv hajutatud süsteem.
Klõpsa, et vaadata seda pilti uues aknas

Apache ActiveMQ
ActiveMQ asub kuskil nende kahe (RabbitMQ ja ZeroMQ) vahel, sarnaselt ZemoMQ-le, ning seda saab juurutada nii proxy- kui ka P2P režiimis. Sarnaselt RabbitMQ-le on lihtne rakendada keerukaid stsenaariume ja nõuab madalat tarbimist.
ActiveMQ on tuntud kui Java maailma selgroog. Sellel on pikk ajalugu ja seda kasutatakse laialdaselt. See on ka platvormideülene, pakkudes loomulikku integratsioonipõhist ligipääsupunkti toodetele, mis Microsofti platvormil ei ole. Kuid seda saab arvestada ainult siis, kui see on läbinud MSMQ-st. ActiveMQ seadistamiseks tuleb paigaldada Java keskkond sihtmasinasse.
Klõpsa, et vaadata seda pilti uues aknas
Oluline on märkida, et ActiveMQ järgmise põlvkonna toode on Apollo, mis põhineb ActiveMQ prototüübil ning on kiirem, usaldusväärsem ja lihtsamini hooldatav sõnumivahend. Apache nimetab Apollot kõige kiiremaks ja vastupidavamaks STOMP (Streaming Text Orientated Message Protocol) serveriks.
Apolloni omadused on järgmised:
Toetatud on Stomp 1.0 ja Stomp 1.1 protokollid
Teemad ja järjekorrad
Järjekorra brauser
Teema püsivad tellimused
Peeglijärjekord
Usaldusväärne sõnum
Sõnumi aegumine ja vahetus
Sõnumivalija
JAAS kinnitatud
ACL-põhine autoriseerimine
Toeta SSL/TLS-i ja sertifikaadi valideerimist
REST halduse API
Klõpsa, et vaadata seda pilti uues aknas

Redis
See on Key-Value NoSQL andmebaas, mida arendatakse aktiivselt ja hooldatakse, kuigi tegemist on Key-Value andmebaasi salvestussüsteemiga, toetab see MQ funktsioone, mistõttu saab seda kasutada kerge järjekorra teenusena. RabbitMQ ja Redis'i sisseelamis- ja väljasõidu operatsioonide puhul kumbki 1 miljon korda ning täitmisaeg registreeritakse iga 100 000 korra järel. Testiandmed on jagatud neljaks erinevaks suuruseks: 128 baiti, 512 baiti, 1 K ja 10 baiti. Katsed näitavad, et meeskonnaga liitudes on Redis'i sooritus kõrgem kui RabbitMQ-l, kui andmete võrdlus on väike, ja kui andmete suurus ületab 10K, on Redis talumatult aeglane. Meeskonnast lahkudes näitas Redis väga head sooritust sõltumata andmete suurusest, samas kui RabbitMQ sooritus oli palju madalam kui Redis'il.

MemcacheQ
Püsiv sõnumijärjekord Memcacheq (lühidalt MCQ) on kerge sõnumijärjekord, MemcacheQ funktsioonid:
1 Lihtne ja mugav kasutada
2 Kiire töötlemine
3 Mitmekordne järjekord
4 Hea samaaegsuse jõudlus
5 Ühilduv Memcache protokolliga. See tähendab, et lihtsalt paigalda memcache laiendus, lisapluginaid pole vaja.
6 Seda on mugav kasutada ka zend-raamistikus.

Lõppkokkuvõttes on need tooted:
1. Mõlemal on oma kliendi API-d või nad toetavad mitut programmeerimiskeelt;
2. Dokumentatsiooni on palju;
3. Pakuti positiivset toetust.
4. ActiveMQ, RabbitMQ, MSMQ, Redis peavad kõik alustama teenuseprotsesse, mida saab jälgida ja seadistada, ning teised on probleemsed
5. Kõik pakuvad suhteliselt head usaldusväärsust (järjepidevust), skaleeritavust ja koormuse tasakaalustamist ning loomulikult ka jõudlust

Ma ei hakka siin rumalusi rääkima, allpool on lisatud internetist pealtkuulatud testitulemused. Kuvatakse saadetud ja vastu võetud sõnumite arv sekundis. Kogu protsess genereeris kokku 1 miljon 1K sõnumit. Test viidi läbi Windows Vista iseseisval masinal.


Nagu näha, ei ole ZeroMQ tase nagu miski teine. Selle jõudlus on üllatavalt kõrge. Sellest hoolimata ei taga see toode sõnumite püsivust, ei suuda lihtsalt salvestada ja jälgida vaheprotsesse ning vajab eneseauditeerimist ja andmete taastamist, mistõttu ei ole see kasutusmugavuse ega HA poolest rahuldav. Järeldus on selge: kui soovid, et rakendus saadaks sõnumeid võimalikult kiiresti, valid ZeroMQ. See on väärtuslikum, kui sa ei hooli liiga palju juhuslikust sõnumite kaotamisest.

Selle artikli blogija loodab (ja ei looda eriti) kasutada Rabbitit, Rabbitmq-l on sisseehitatud haha, kui moodustad klastri, pole vaja muretseda koormuse tasakaalustamise pärast ning saad seadistada järjekorra peegli. Aga selline asi on see, et testimist peaks olema rohkem ja lõpuks saad lemmiku, ning kõik, mida olen Rabbitist kuulnud ja lugenud, paneb mind tundma, et see peaks olema parim valik.





Eelmine:c#/.net loeb torrenttorrenti räsi lähtekoodi
Järgmine:WiFi peavõtme liidese WiFi paroolipäring
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com