Vra

in teenstelling met die skryf van jou eie biblioteek.

Ons werk op'n projek hier wat sal'n self-verdeling server swembad, as een afdeling groei te swaar, die bestuurder sou verdeel dit en sit dit op'n ander masjien as'n aparte proses.Dit sou ook waarskuwing almal verbind kliënte dit raak te koppel aan die nuwe bediener.

Ek is nuuskierig oor die gebruik van ZeroMQ vir die inter-bediener en inter-proses kommunikasie.My vennoot sou verkies om te rol sy eie.Ek is op soek na die gemeenskap om hierdie vraag te beantwoord.

Ek is'n redelik beginner programmeerder myself en net geleer het oor messaging toue.As ek googled en lees, dit lyk asof almal is met behulp van boodskappe toue vir alle vorme van die dinge, maar hoekom?Wat maak hulle beter as die skryf van jou eie biblioteek?Hoekom is hulle so algemeen en hoekom is daar so baie?

Was dit nuttig?

Oplossing

  

wat hulle beter as die skryf van jou eie biblioteek maak?

Wanneer die uitrol van die eerste weergawe van jou jeug, waarskynlik niks: jou behoeftes is goed gedefinieer en jy sal 'n boodskap-stelsel wat sal pas by jou behoeftes te ontwikkel. Klein funksie lys, klein bronkode ens

Die gereedskap is baie nuttig na die eerste release, wanneer jy eintlik moet jou aansoek te brei en voeg meer funksies om dit te. Kom ek gee jou 'n paar gebruik gevalle:

  • jou app sal 'n groot endian masjien (SPARC / PowerPC) te praat van 'n bietjie endian masjien (x86, intel / AMD). Jou boodskap-stelsel het 'n paar endian bestel aanname: gaan en dit reg te stel
  • jy jou program ontwerp en daarom is dit nie 'n binêre protokol / boodskap-stelsel en nou is dit baie stadig omdat jy die meeste van jou tyd spandeer ontleding van dit (die aantal boodskappe toegeneem en ontleding het 'n bottelnek): so pas dit dit kan vervoer binêre / vaste kodering
  • aan die begin jy 3 masjien het binne 'n lan, geen merkbare vertraging alles kry om elke masjien. jou kliënt / baas / pointy hare-duiwel-baas opdaag en jou vertel dat jy die app op WAN jy nie bestuur sal installeer - en dan begin jy met verband mislukkings, slegte latency ens wat jy nodig het om die boodskap te stoor en weer te probeer stuur hulle later op: gaan terug na die kode en prop dit goed in (en geniet)

  • boodskappe gestuur behoefte om antwoorde te hê, maar nie almal van hulle: jy 'n paar parameters in te stuur en verwag dat 'n sigblad as gevolg in plaas van net die stuur en erken, gaan terug na-kode en prop dit goed in (en geniet .)

  • 'n paar boodskappe is van kritieke belang en daar ontvangs / stuur behoeftes behoorlike rugsteun / volharding /. Hoekom vra jy ? ouditdoeleindes

En baie ander gebruik gevalle wat ek vergeet ...

Jy kan dit self implementeer, maar het nie veel tyd spandeer om dit te doen: jy sal waarskynlik later vervang dit op in elk geval

.

Ander wenke

Dit is baie soos om te vra:hoekom gebruik'n databasis wanneer jy kan skryf jou eie?

Die antwoord is dat die gebruik van'n instrument wat reeds vir'n rukkie en is goed verstaan word in baie van die ander gebruik gevalle, af te betaal meer en meer, met verloop van tyd en as jou vereistes te ontwikkel.Dit is veral waar as meer as een ontwikkelaar betrokke is in'n projek.Doen wat jy wil om ondersteuning personeel vir'n toustaan stelsel as jy verander na'n nuwe projek?Met behulp van'n instrument verhoed dat dit gebeur.Is dit iemand anders se probleem.

Geval in punt:volharding.Die skryf van'n instrument te slaan een boodskap op die skyf is maklik.Skryf'n persistor dat die skale en presteer goed en stabiel, in baie verskillende gevalle gebruik, en is hanteerbaar, en goedkoop te ondersteun, is moeilik.As jy wil om te sien iemand kla oor hoe moeilik dit is dan kyk na hierdie: http://www.lshift.net/blog/2009/12/07/rabbitmq-at-the-skills-matter-functional-programming-exchange

In elk geval, ek hoop dit help.Deur al beteken skryf jou eie instrument.Baie baie mense het so gedoen.Wat ook al jou probleem oplos nie, is goed.

Ek is die oorweging van die gebruik van ZeroMQ myself - vandaar het ek gestruikel oor hierdie vraag.

Kom ons veronderstel vir die oomblik dat jy het die vermoë om te implementeer'n boodskap toustaan stelsel wat voldoen aan al jou vereistes voldoen.Hoekom sou jy neem ZeroMQ (of ander derde party biblioteek) oor die rol-jou-eie benadering?Eenvoudig - koste.

Kom ons aanvaar vir'n oomblik dat ZeroMQ reeds voldoen aan al jou vereistes voldoen.Al wat gedoen moet word is integreer dit in jou bou, lees'n paar doco en dan begin dit te gebruik.Wat het om te veel minder moeite as die rol van jou eie.Plus, die instandhouding las is verskuif na'n ander maatskappy.Sedert ZeroMQ is gratis, dit is soos jy het net gegroei jou ontwikkeling span in te sluit (deel van) die ZeroMQ span.

As jy het'n Sagteware-Ontwikkeling besigheid, dan dink ek dat jy sal die balans van die koste/risiko van die gebruik van'n derde party biblioteke teen die rol van jou eie, en in hierdie geval, met behulp van ZeroMQ sou wen loshande.

Miskien is jy (of eerder, jou vennoot) ly, soos so baie ontwikkelaars doen, van die "Nie Hier Uitgevind" - sindroom?As dit so is, pas jou houding en herevalueer die gebruik van ZeroMQ.Persoonlik, ek het baie verkies om die voordele van Trots Elders Gevind houding.Ek hoop ek kan trots van die vind van ZeroMQ...die tyd sal leer.

EDIT:Ek het gekom oor hierdie video van die ZeroMQ ontwikkelaars wat praat oor hoekom jy moet gebruik ZeroMQ.

wat maak hulle beter as die skryf van jou eie biblioteek?

Boodskap toustaan stelsels is transaksionele, wat konseptueel maklik om te gebruik as'n kliënt, maar moeilik om reg te kry as'n implementor, veral die oorweging van aanhoudende toue.Jy mag dalk dink jy kan wegkom met die skryf van'n vinnige messaging biblioteek, maar sonder transaksies en volharding, jy wil nie die volle voordele van'n boodskap-stelsel.

Volharding in hierdie konteks beteken dat die boodskappe middleware hou ongehanteerde boodskappe in permanente stoor (op die skyf) in die geval van die bediener gaan af;na'n reboot, die boodskappe kan hanteer word en nie weer te stuur nie, is nodig (die sender nie eens geweet daar was'n probleem).Transaksionele beteken dat jy kan lees boodskappe van verskillende toue en skryf boodskappe aan verskillende toue in'n transaksionele wyse, wat beteken dat óf al die lees en skryf slaag of (indien een of meer nie) niemand slaag.Dit is regtig nie veel verskil van die transactionality bekend van skakeling met databasisse en het dieselfde voordele (dit vergemaklik fout hantering;sonder transaksies, jy sou hê om te verseker dat elke individu lees/skryf slaag, en indien een of meer nie, jy het om terug te rol die veranderinge wat nie daarin slaag).

Voor die skryf van jou eie biblioteek, lees die 0MQ Guide hier: http://zguide.zeromq.org/ bladsy: al

Die kanse is goed dat jy sal óf besluit om RabbitMQ installeer, of anders sal jy jou biblioteek maak op die top van ZeroMQ aangesien hulle reeds al die harde dele gedoen.

As jy 'n bietjie tyd te gee dit 'n probeer en uitrol jou eie implementering! Die geleer van hierdie oefening sal jy oortuig oor die wysheid van die gebruik van 'n reeds getoets biblioteek.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top