JSON-RPC? Tora chinonyengera REST

JSON-RPC? Tora chinonyengera REST

Ndine chokwadi chekuti musoro wenyaya wakakonzera kuita kune hutano - "zvakanaka, zvatanga zvakare ..." Asi rega nditore pfungwa dzako kwemaminetsi 5-10, uye ini ndichaedza kusaodza mwoyo zvaunotarisira.

Chimiro chechinyorwa chichave seizvi: chirevo chechimiro chinotorwa uye "chimiro" chekubuda kwechinyorwa ichi chinoratidzwa. Ndinovimba izvi zvichakubvumidza kuti utarise kusarudzwa kwedata rekuchinjana paradigm mumapurojekiti ako kubva kune imwe kona.

Kuti ndive pachena nezve izvo RPC, ini ndinofunga kufunga chiyero JSON-RPC 2.0. Ne REST hapana kujeka. Uye hazvifanirwe kudaro. Zvese zvaunoda kuziva nezve REST - hazvizivikanwe kubva HTTP.

Zvikumbiro zveRPC zvinokurumidza uye zvinoshanda zvakanyanya nekuti zvinokutendera kuti uite zvikumbiro zvebatch.

Iyo poindi ndeyekuti muRPC unogona kufonera akati wandei maitiro kamwechete muchikumbiro chimwe. Semuenzaniso, gadzira mushandisi, wedzera avatar kwaari uye, muchikumbiro chimwe chete, munyorere kune dzimwe misoro. Chikumbiro chimwe chete, uye kubatsirwa kwakadini!

Chokwadi, kana iwe uine imwe chete backend node, ichaita senge nekukurumidza nechikumbiro chebatch. Nekuti zvikumbiro zvitatu zveREST zvinoda zvakapetwa katatu zviwanikwa kubva kune imwe node kumisikidza kubatana.

JSON-RPC? Tora chinonyengera REST

Ziva kuti chikumbiro chekutanga panyaya yeREST chinofanirwa kudzosera ID yemushandisi kuitira kuti zvikumbiro zvinotevera zviitwe. Izvo zvinokanganisawo mugumisiro wakazara.

Asi zvivakwa zvakadaro zvinongowanikwa mune-mumba mhinduro uye Enterprise. Senzira yekupedzisira, mumapurojekiti madiki eWEB. Asi yakazara-yakazara WEB mhinduro, uye kunyangwe iyo inonzi HighLoad, haina kukodzera kuvaka. Zvivakwa zvavo zvinofanirwa kusangana nemaitiro ekuwanikwa kwepamusoro uye mutoro. Uye mufananidzo uri kuchinja.

JSON-RPC? Tora chinonyengera REST

Zviteshi zvezvivakwa zvezvivakwa pasi pemamiriro akafanana akaiswa mugirini. Cherechedza maitiro eRPC ikozvino. Chikumbiro chinoshandisa zvigadziriso pagumbo rimwe chete kubva kune balancer kuenda kubackend. Nepo REST ichiri kurasikirwa muchikumbiro chekutanga, inogadzira nguva yakarasika uchishandisa zvese zvivakwa.

Zvakakwana kupinda muscript kwete zvikumbiro zviviri zvekupfumisa, asi, taura, zvishanu kana gumi ... uye mhinduro kumubvunzo "ndiani anokunda zvino?" hazvina kujeka.

Ini ndinokurudzira kuti nditarise zvakanyanya kune dambudziko. Iyo dhizaini inoratidza mashandisirwo ezvivakwa zviteshi, asi zvivakwa hazvina kugumira kumatanho. Chinhu chakakosha chepamusoro-mutoro wezvivakwa ndeye cache. Ngatitorei ikozvino imwe mhando yemushandisi artifact. Kasingaperi. Ngatitii ka32.

JSON-RPC? Tora chinonyengera REST

Ona maitiro eRPC magadzirirwo akavandudza zvakanyanya kuti asangane nezvinodiwa zvemutoro wakakwira. Chinhu ndechekuti REST inoshandisa iyo yakazara simba reHTTP protocol, kusiyana neRPC. Mumufananidzo uri pamusoro, simba iri rinowanikwa kuburikidza nenzira yekukumbira - GET.

Nzira dzeHTTP, pakati pezvimwe zvinhu, dzine caching mazano. Unogona kuzviwana mune zvinyorwa pa HTTP. Kune RPC, zvikumbiro zvePOST zvinoshandiswa, izvo zvisingaonekwe sezvisina maturo, ndiko kuti, kudzokorora kudzokorora kwezvikumbiro zvakafanana zvePOST zvinogona kudzorera mhinduro dzakasiyana (semuenzaniso, mushure mekunge mhinduro yega yega yatumirwa, imwe kopi yeiyi mhinduro ichaonekwa) (tsime).

Nekuda kweizvozvo, RPC haikwanise kushandisa nemazvo macache ezvivakwa. Izvi zvinotungamira kune kudiwa kwe "import" software caches. Dhiagiramu inoratidza Redis mune iri basa. Iyo cache yesoftware, zvakare, inoda kuti mugadziri awedzere imwe kodhi yekodhi uye inooneka shanduko mukuvaka.

Ngativerengei kuti zvingani zvikumbiro REST uye RPC "yakazvara" mune zvivakwa zviri kutariswa?

Zvikumbiro
inbox
to backend
ΠΊ Π‘Π£Π‘Π”
kune nyoro cache (Redis)
TOTAL

REST
1/32 *
1
1
0
3 / 35

RPC
32
32
1
31
96

[*] muchiitiko chakanakisa (kana iyo cache yemunharaunda yakashandiswa) 1 chikumbiro (chimwe!), Muchiitiko chakaipisisa 32 zvikumbiro zvinouya.

Kuenzaniswa nechirongwa chekutanga, musiyano unoshamisa. Ikozvino bhenefiti yeREST inova pachena. Asi ndinokurudzira kusamira ipapo. Zvivakwa zvakagadziridzwa zvinosanganisira CDN. Kazhinji inogadzirisawo nyaya yekuverengera DDoS uye DoS kurwiswa. Tinowana:

JSON-RPC? Tora chinonyengera REST

Apa ndipo apo zvinhu zvinonyanya kushata kuRPC. RPC haingokwanisi kugovera basa kune CDN. Tinogona chete kuvimba nemasisitimu kurwisa kurwiswa.

Zvinoita here kuperera pano? Uye zvakare, kwete. Nzira dzeHTTP, sezvataurwa pamusoro, dzine "mashiripiti" avo. Uye hazvisi pasina chikonzero kuti nzira yeGET inoshandiswa zvakanyanya paInternet. Ziva kuti nzira iyi inokwanisa kuwana chidimbu chemukati, inokwanisa kuseta mamiriro ayo zvinhu zvezvivakwa zvinogona kududzira pamberi pekutonga kuendeswa kune yako kodhi, zvichingodaro. Zvese izvi zvinokutendera iwe kuti ugadzire inoshanduka, inogoneka zvivakwa zvinokwanisa kubata hombe kuyerera kwezvikumbiro. Asi muRPC iyi nzira ... haina kufuratirwa.

Saka nei ngano yekuti batch zvikumbiro (RPC) zvinokurumidza kuramba zvakadaro? Ini pachangu, zvinoratidzika kwandiri kuti mapurojekiti mazhinji haasvike padanho rekusimudzira uko REST inokwanisa kuratidza simba rayo. Uyezve, mumapurojekiti madiki, anonyanya kuda kuratidza utera hwake.

Sarudzo yeREST kana RPC haisi sarudzo yekuzvidira yemunhu mupurojekiti. Sarudzo iyi inofanirwa kusangana nezvinodiwa zveprojekiti. Kana purojekiti ichikwanisa kusvina zvese zvazvinogona kubva muREST, uye ichinyatsoida, saka REST ichave sarudzo yakanaka.

Asi kana, kuti uwane mabhenefiti ese eREST, iwe unofanirwa kuhaya ma devops nyanzvi kuti purojekiti ikurumidze kuyera zvivakwa, manejimendi ekugadzirisa zvivakwa, mugadziri wekugadzira dhizaini yese yewebhu sevhisi ... uye chirongwa. , panguva imwe chete, inotengesa mapepa matatu emajarini pazuva ... Ini ndaizonamatira neRPC, nokuti ... iyi protocol inonyanya kushandiswa. Izvo hazvizode ruzivo rwakadzama rwekuti cache uye zvivakwa zvinoshanda sei, asi zvinotarisa mugadziri pane akareruka uye anonzwisisika mafoni kune maitiro aanoda. Bhizinesi richafara.

Zvikumbiro zveRPC zvakanyanya kuvimbika nekuti vanogona kuita zvikumbiro zvebatch mukati mekutengesa kumwe chete

Iyi pfuma yeRPC ndeyechokwadi mukana, nekuti Zviri nyore kuchengetedza dhatabhesi inowirirana. Asi neREST zvinowedzera uye zvakanyanya kuoma. Zvikumbiro zvinogona kusvika zvisingaenderane kune akasiyana backend node.

Izvi "zvisina kunaka" zveREST ndiyo flip side yemukana watsanangurwa pamusoro - kugona kushandisa nemazvo zviwanikwa zvese zvezvivakwa. Kana zvivakwa zvisina kugadzirwa zvakanaka, uye zvakatonyanya kana mavakirwo epurojekiti uye dhatabhesi zvakanyanya zvisina kugadzirwa zvakanaka, saka izvi zvinorwadza chaizvo.

Asi zvikumbiro zvebatch zvakavimbika sezvazvinoita here? Ngatitarisei nyaya: isu tinogadzira mushandisi, kupfumisa mbiri yake neimwe tsananguro uye kumutumira SMS ine chakavanzika chekupedzisa kunyoresa. Avo. mafoni matatu mune imwe batch chikumbiro.

JSON-RPC? Tora chinonyengera REST

Ngatitarisei dhayagiramu. Inopa infrastructure ine zvinhu zvekuwanikwa zvakanyanya. Kune maviri akazvimirira ekutaurirana nzira ane SMS magedhi. Asi ... chii chatinoona? Pakutumira SMS, kukanganisa 503 kunoitika - sevhisi haisipo kwenguva pfupi. Nokuti Kutumira kweSMS kunopetwa muchikumbiro chebatch, ipapo chikumbiro chose chinofanira kudzoserwa kumashure. Zviito muDBMS zvakadzimwa. Mutengi anogamuchira kukanganisa.

Kuedza kunotevera irotari. Zvichida chikumbiro chinorova node imwechete zvakare uye zvakare kudzorera kukanganisa, kana iwe uchava nerombo uye ichaitwa. Asi chinhu chikuru ndechekuti kamwechete kamwechete zvivakwa zvedu zvakatoshanda pasina. Paiva nemutoro, asi pasina purofiti.

Zvakanaka, ngatifungei kuti isu takazvinetsa (!) uye takafunga kuburikidza nesarudzo apo chikumbiro chinogona kupedzwa nekubudirira. Uye isu tichaedza kupedzisa zvakasara zvakare mushure meimwe nguva yenguva (Ndeipi? Iyo yekumberi inosarudza?). Asi rotari yakaramba yakafanana. Chikumbiro chekutumira SMS chine mukana we50/50 wekutadza zvakare.

Bvumiranai, kubva kudivi revatengi, sevhisi haina kuita seyakavimbika sezvatinoda ... ko nezve REST?

JSON-RPC? Tora chinonyengera REST

REST inoshandisa mashiripiti eHTTP zvakare, asi ikozvino nemakodhi emhinduro. Kana kukanganisa 503 kukaitika pagedhi reSMS, iyo yekumashure inotepfenyura kukanganisa uku kune balancer. Iyo balancer inogamuchira chikanganiso ichi uye pasina kutyora kubatana nemutengi, inotumira chikumbiro kune imwe node, iyo inobudirira kugadzirisa chikumbiro. Avo. mutengi anogamuchira mhedzisiro inotarisirwa, uye zvivakwa zvinosimbisa zita rayo repamusoro re "yakanyanya kuwanikwa". Mushandisi anofara.

Uye zvakare handizvo zvese. Muenzanisi haana kungogamuchira kodhi yekupindura ye 503. Paunenge uchipindura, maererano nechiyero, zvinokurudzirwa kupa iyi code ne "Retry-After" musoro. Musoro unoita kuti zvive pachena kune mubharari kuti hazvina kukodzera kukanganisa iyi node munzira iyi kwenguva yakatarwa. Uye zvikumbiro zvinotevera zvekutumira SMS zvichatumirwa zvakananga kune node isina matambudziko negedhi reSMS.

Sezvatinoona, kuvimbika kweJSON-RPC kwakawedzera. Zvechokwadi, zviri nyore kuronga kuwirirana mu database. Asi chibayiro, munyaya iyi, chichava kuvimbika kwehurongwa hwose.

Mhedziso inonyanya kufanana neyakapfuura. Kana zvivakwa zviri nyore, kujeka kweJSON-RPC ndeyekuwedzera. Kana iyo purojekiti inosanganisira kuwanikwa kwepamusoro nemutoro wakakwira, REST inoratidzika seyakanyanya kurongeka, kunyangwe yakaoma, mhinduro.

Kupinda pa REST kwadzikira

Ini ndinofunga kuti ongororo iri pamusoro, debunking yakasimbiswa stereotypes nezve RPC, yakaratidza zvakajeka kuti chikumbaridzo chekupinda muREST pasina mubvunzo chakakwira kupfuura muRPC. Izvi zvinokonzerwa nekudikanwa kwekunzwisisa kwakadzama kwekuti HTTP inoshanda sei, pamwe nekudikanwa kwekuve neruzivo rwakakwana pamusoro pezvinhu zviripo zvezvivakwa zvinogona uye zvinofanirwa kushandiswa mumapurojekiti eWEB.

Saka nei vanhu vazhinji vachifunga kuti REST ichave nyore? Maonero angu ega ndeokuti izvi zviri nyore zvinouya kubva kuREST inozviratidza. Avo. REST haisi protocol asi pfungwa ... REST haina chiyero, pane mamwe mazano ... REST haisi yakaoma kupfuura HTTP. Rusununguko runooneka uye mhirizhonga inokwezva "vakasununguka artists".

Ehe, REST haina kuomesesa kupfuura HTTP. Asi HTTP pachayo iprotocol yakanyatsogadzirwa yakaratidza kukosha kwayo kwemakumi emakore. Kana pasina kunzwisisa kwakadzama kweHTTP pachayo, saka REST haigone kutongwa.

Asi nezve RPC - unogona. Zvakakwana kutora tsanangudzo yayo. Saka unoda here benzi JSON-RPC? Kana kuti ichiri kunetsa REST? Iwe sarudza.

Ndinovimba kuti handina kutambisa nguva yenyu.

Source: www.habr.com

Voeg