Topp 6 biðkerfi fyrir þróunaraðila stuðningsmanna

Ertu að leita að biðröðarkerfi? Eða ertu kannski að leita að betri? Hér eru allar upplýsingar sem þú þarft!


Biðkerfi eru best geymda leyndarmál þróunar stuðnings.

Án þess að prófa að skrifa ljóð til lofs fyrir biðröðarkerfi, myndi ég segja að ungur stuðningsmaður stuðningsmanna verði miðlægur stuðningsmaður verktaki eftir að hann lærir að samþætta biðraðir í kerfinu. Biðraðir bæta upplifun viðskiptavina (við munum sjá hvernig), draga úr flækjum og bæta áreiðanleika í kerfi.

Jú, fyrir mjög einföld vefforrit með næstum núllum umferðar- og bæklingavefjum, geta biðraðir verið í heildina (eða jafnvel ómögulegt að setja upp ef þú ert í dæmigerðu umhverfi fyrir samnýtt hýsingu), en forrit sem ekki eru léttvæg, munu öll hagnast á biðröð kerfum, og stór forrit eru ómöguleg án biðröð.

Áður en við byrjum, fyrirvari: Ef þú ert nú þegar sáttur við biðröðarkerfi og vilt bera saman ýmsa möguleika, munu næstu inngangskaflar vekja mikinn svefn. Feel Svo hika við að hoppa rétt á undan. Inngangskaflarnir eru ætlaðir þeim sem hafa aðeins dónalega hugmynd um biðkerfi eða bara heyrt nafnið í framhjáhlaupi.

Hvað er biðkerfi?

Við skulum byrja á því að skilja hvað biðröð er.

Biðröð er gagnagerð í tölvunarfræði sem líkir vel við, raunverulegu heimsins biðraðirnar sem við sjáum í kringum okkur. Ef þú fer til dæmis til miðasölu, þá tekuru eftir því að þú verður að standa við lok biðröðarinnar, á meðan viðkomandi í byrjun biðröðar mun fá miðann fyrst. Þetta er það sem við köllum líka „fyrstur, fyrstur fær“ fyrirbæri. Í tölvunarfræði er mögulegt að skrifa forrit sem geyma verkefni sín svona í biðröð og afgreiða þau eitt af öðru á sama fyrstur fær.

Athugið að biðröðin vinnur ekki sjálf. Það er bara tímabundin geymsla af tegundum þar sem verkefni bíða þar til þau verða sótt af einhverju. Ef þetta hljómar aðeins of abstrakt, ekki hafa áhyggjur. Þetta er abstrakt hugtak en við sjáum skýrar dæmi í næsta kafla. ��

Af hverju þarftu biðkerfi?

Án þess að komast í mjög langa lýsingu, myndi ég segja að meginþörfin fyrir biðröðarkerfi sé vegna bakgrunnsvinnslu, samhliða framkvæmd og bata frá bilun. Við skulum skoða þetta með dæmum:

Bakgrunnsvinnsla

Segjum sem svo að þú hafir keyrt markaðsherferð með e-verslun þar sem tíminn er kjarninn og að umsókn þín er byggð þannig að hún sleppi af staðfestingarpósti rétt áður en viðskiptavinurinn lýkur greiðslunni og sést „þakka þér“ síðunni. Ef póstþjónninn sem þú ert að tengjast er niðri mun vefsíðan deyja og eyðileggja upplifun notenda.

Ímyndaðu þér mikinn fjölda stuðningsbeiðna sem þú myndir fá! Í þessu tilfelli er betra að ýta þessu tölvupóstsenduverkefni yfir í vinnukröfur og sýna viðskiptavinum árangurssíðuna.

Samhliða framkvæmd

Margir verktaki, sérstaklega þeir sem aðallega kóða einfaldari forrit með litla umferð, eru í vana að nota cron störf við bakgrunnsvinnslu. Þetta er í lagi þar til stærð aðlagsins verður svo stór að ekki er hægt að hreinsa það. Gerðu til dæmis ráð fyrir að þú sért með Cron starf sem safnar saman greiningarskýrslum og sendi þeim tölvupóst til notenda og að kerfið þitt geti unnið 100 skýrslur á mínútu.

Um leið og appið þitt stækkar og byrjar að fá meira en 100 beiðnir á mínútu að meðaltali byrjar það að falla meira og meira eftir og mun aldrei geta unnið öll störf.

Í biðröðarkerfi er hægt að komast hjá þessum aðstæðum með því að setja upp marga starfsmenn, sem hver og einn getur valið sér starf (sem inniheldur 100 skýrslur sem þarf að gera hvor) og unnið samhliða til að klára verkefnið miklu, miklu fyrr.

Bata vegna bilunar

Okkur er yfirleitt ekki hugsað um bilun sem vefur verktaki. Við tökum það sem sjálfsögðum hlut að netþjónarnir okkar og forritaskilin sem við notum munu alltaf vera á netinu. En raunveruleikinn er annar – straumleysi í netkerfinu er alltof algengt og hin frábæru forritaskil sem þú treystir á geta verið niðri vegna innviða (áður en þú segir „ekki ég!“, Gleymdu ekki gegnheill Amazon S3 outage). Svo að fara aftur í skýrslugerðardæmið, ef hluti skýrslugerðarinnar krefst þess að þú tengist við API greiðslna og þessi tenging er niðri í 2 mínútur, hvað verður um 200 skýrslurnar sem mistókust?

Kyrrkerfi fela þó í sér talsverða kostnað. Námsferillinn er nokkuð brattur þar sem þú ert að stíga inn í allt nýtt lén, flækjustig umsóknar þinnar og dreifing eykst og ekki er alltaf hægt að stjórna störfum í biðröð með 100% nákvæmni. Sem sagt, það eru aðstæður þegar bygging forrits án biðraða er bara ekki möguleg.

Með það úr vegi, skulum líta á nokkra af algengu valkostunum meðal stuðningsmanna / kerfa í biðröð í dag.

Redis

Redis er þekkt sem verslun með lykilgildi sem geymir, uppfærir og sækir strengi gagna án þekkingar á uppbyggingu gagna. Þó að þetta gæti hafa verið rétt fyrr, þá hefur Redis í dag skilvirkt og gagnlegt gagnafyrirtæki eins og lista, flokkað sett og jafnvel Pub-Sub kerfi, sem gerir það mjög eftirsóknarvert fyrir útfærslur í biðröð.

Kostir Redis eru:

  • Alveg í minni gagnagrunninum, sem leiðir til hraðari lestrar / skrifa.
  • Mjög duglegur: Getur auðveldlega stutt meira en 100.000 lestur / skrifaðgerðir á sekúndu.
  • Mjög sveigjanlegt þrautseigjukerfi. Þú getur annað hvort farið í hámarksárangur á kostnað mögulegs gagnataps ef um bilanir er að ræða eða stillt upp í fullkomlega íhaldssamri stillingu til að fórna árangri fyrir samræmi.
  • Klasar studdu utan kassans

Vinsamlegast hafðu í huga að Redis er ekki með neitt ágrip af skilaboðum / biðröð / bata, svo þú þarft annað hvort að nota pakka eða smíða létt kerfi sjálfur. Dæmi um það er að Redis er sjálfgefið biðröð fyrir Laravel PHP ramma, þar sem tímaáætlun hefur verið útfærð af rammahöfundum.

Að læra Redis er auðvelt.

RabbitMQ

Það eru nokkur lúmskur munur á Redis og RabbitMQ, svo við skulum koma þeim úr vegi fyrst.

Í fyrsta lagi hefur RabbitMQ sérhæfðara, vel skilgreint hlutverk og því byggði það til að endurspegla það – skilaboð. Með öðrum orðum, sætleikur þess er að vera milliliður milli tveggja kerfa, en það er ekki tilfellið hjá Redis, sem virkar sem gagnagrunnur. Fyrir vikið veitir RabbitMQ nokkrar aðstöðu í viðbót sem vantar í Redis: skilaboðaleiðbeiningar, reynir aftur, dreifingu álags osfrv..

Ef þú hugsar um það, þá er einnig hægt að hugsa um verkefna biðröð sem skilaboðakerfi, þar sem hægt er að hugsa um tímaáætlunina, starfsmennina og „innsendendur“ starfsins um aðila sem taka þátt í skilaboðum..

RabbitMQ hefur eftirfarandi kosti:

  • Betri ágrip til að koma skilaboðum til skila, draga úr vinnu á umsóknarstigi ef skilaboð sem berast eru það sem þú þarft.
  • Seiglari við rafmagnsleysi og bilanir (en Redis, að minnsta kosti sjálfgefið).
  • Stuðningur klasa og sambandsríkja fyrir dreifða dreifingu.
  • Gagnleg tæki til að stjórna og hafa eftirlit með dreifingunni þinni.
  • Stuðningur við nánast öll forritunarmál sem ekki eru léttvæg.
  • Dreifing með tækinu þínu að eigin vali (Docker, kokkur, brúða osfrv.).

Hvenær á að nota RabbitMQ? Ég myndi segja að það sé frábært val þegar þú veist að þú þarft að nota ósamstilltur skilaboð sem eru send en eru ekki tilbúin til að takast á við hina fornu flækju sumra annarra biðröðarkosta á þessum lista (sjá hér að neðan).

ActiveMQ

Ef þú ert inn í fyrirtækjarýmið (eða byggir útbreitt og stórfellt app), og þú vilt ekki að þurfa að finna upp hjólið allan tímann (og gera mistök á leiðinni), ActiveMQ er þess virði að skoða.

Hér er ActiveMQ framúrskarandi:

  • Það er útfært í Java og hefur virkilega snyrtilega Java-samþættingu (fylgir JMS staðlinum).
  • Margfeldar samskiptareglur studdar: AMQP, MQTT, STOMP, OpenWire osfrv.
  • Meðhöndlar öryggi, vegvísun, fyrningu skilaboða, greiningar osfrv.
  • Bakaður stuðningur við vinsæl dreifð skilaboðamynstur sem sparar þér tíma og kostnaðarsöm mistök.

Það er ekki þar með sagt að ActiveMQ sé aðeins í boði fyrir Java. Það hefur viðskiptavini fyrir Python, C / C ++, hnút,. Net og önnur vistkerfi, þannig að það ætti ekki að hafa áhyggjur af hugsanlegu hruni í framtíðinni. Að auki er ActiveMQ byggt á fullkomlega opnum stöðlum og það ætti að vera auðvelt að byggja upp þína léttu viðskiptavini.

Allt sem sagt og gert, vinsamlegast hafðu það í huga að ActiveMQ er bara miðlari og inniheldur ekki stuðning. Þú verður samt að nota einn af stuðningsmönnum stuðningsmanna til að geyma skilaboðin. Ég tók það með hér vegna þess að það er ekki bundið við ákveðið forritunarmál (eins og aðrar vinsælar lausnir eins og Sellerí, Sidekiq osfrv.)

Amazon MQ

Amazon MQ á skilið skjótan en mikilvæga umtal hér. Ef þú heldur að ActiveMQ sé kjörin lausn fyrir þarfir þínar en vilt ekki takast á við byggingu og viðhalda sjálfum innviðunum, þá býður Amazon MQ stýrða þjónustu til að gera það. Það styður allar samskiptareglur sem ActiveMQ gerir – það er enginn munur á eiginleikum – þar sem það notar ActiveMQ sjálft undir yfirborðinu.

Kosturinn er að þetta er stýrð þjónusta, svo þú þarft ekki að hafa áhyggjur af neinu öðru en að nota hana. Það er enn skynsamlegra fyrir þær dreifingar sem eru á AWS, þar sem þú getur nýtt þér aðra þjónustu og þjónustu beint innan þíns dreifingar (til dæmis hraðari gagnaflutningar).

SQS hjá Amazon

Við getum ekki búist við því að Amazon sitji hljóðlega þegar kemur að mikilvægum innviðum, getum við það? ��

Og svo höfum við gert SQS hjá Amazon, sem er fullkomlega farfuglaheimili, einföld biðröð þjónustu (alveg bókstaflega) af hinum þekkta risa AWS. Enn og aftur er lúmskur munur mikilvægur, svo vinsamlegast hafðu í huga að SQS hefur ekki hugmyndina um skilaboð sem berast. Eins og Redis, þá er það einfalt stuðningur til að taka við og dreifa störfum í biðröðum.

Svo hvenær myndir þú vilja nota Amazon SQS? Hér eru nokkrar ástæður:

  • Þú ert AWS aðdáandi og munt ekki snerta neitt annað (heiðarlega, það eru margir þarna úti og ég held að það sé ekkert athugavert við það).
  • Þú þarft lausna fyrir farfuglaheimili svo vertu viss um að bilunarhlutfallið sé núll og að engin störf glatist.
  • Þú vilt ekki byggja upp þyrpingu og þurfa að fylgjast með því sjálfur. Eða verra, verður að smíða eftirlitstæki þegar þú gætir notað þann tíma til að þróa framleiðslu.
  • Þú ert nú þegar með verulegar fjárfestingar í AWS vettvangi og að vera lokaður inni er viðskiptalegt.
  • Þú vilt hafa einbeitt, einfalt biðröð án þess að eitthvað af lóinu tengist skilaboðum sem berast, samskiptareglur og hvað ekki.

Þegar öllu er á botninn hvolft er Amazon SQS traustur kostur fyrir þá sem vilja fella starfskröfur í kerfið sitt og þurfa ekki að hafa áhyggjur af því að setja upp / fylgjast með hlutunum sjálfum.

Beanstalkd

Beanstalkd hefur verið lengi og er bardagaprófaður, fljótur og auðveldur stuðningur fyrir biðröð í starfi. Það eru nokkur einkenni Beanstalkd sem gera það að verkum að það munar talsvert frá Redis:

  • Þetta er stranglega biðlaunakerfi og ekkert annað. Þú ýtir störfum við það sem vinnufólk vinnur að síðar. Svo ef umsókn þín hefur jafnvel örlitla þörf fyrir skilaboð sem þú færð, myndir þú vilja forðast Beanstalkd.
  • Það eru engin háþróuð gagnaskipulag eins og sett, forgangskröfur osfrv.
  • Beanstalkd er það sem kallast FIFO (biðröð) í fyrstu. Það er engin leið að raða störfum eftir forgangi.
  • Það eru engir möguleikar til þyrpingar.

Allt þetta sagði Beanstalkd fyrir klók og fljótleg biðröð fyrir einföld verkefni sem búa á einum netþjóni. Fyrir marga er það hraðari og stöðugri en Redis. Svo ef þú ert með vandamál með Redis að þú getur bara ekki virst leysa hvað sem er, og þarfir þínar eru einfaldar, Beanstalkd er þess virði að prófa.

Niðurstaða

Ef þú hefur lesið hingað til (eða náð hingað skimlestri ��), þá eru nokkuð góðar líkur á að þú hafir áhuga á biðröðarkerfi eða þurfi eitt. Ef svo er mun listinn á þessari síðu þjóna þér vel nema þú sért að leita að tungumál / rammasértæku biðröðarkerfi.

Ég vildi óska ​​þess að ég gæti sagt þér að biðröð er einföld og 100% áreiðanleg, en það er það ekki. Það er sóðalegt og þar sem það er allt í bakgrunni og gerist mjög hratt (mistök geta farið óséður og orðið mjög kostnaðarsöm). Samt eru biðraðir mjög nauðsynlegar út fyrir tímann og þú munt komast að því að þeir eru öflugt vopn (kannski jafnvel það öflugasta) í vopnabúrinu þínu. Gangi þér vel! ��

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map