JSON-RPC? Ħu REST delikat

JSON-RPC? Ħu REST delikat

Jiena ċert li t-titlu kkawża reazzjoni b'saħħitha - "tajjeb, reġa' beda..." Imma ħalluni niġbed l-attenzjoni tiegħek għal minuti 5-10, u nipprova ma niddiżappuntax l-aspettattivi tiegħek.

L-istruttura tal-artiklu se tkun kif ġej: tittieħed dikjarazzjoni sterjotipika u tiġi żvelata "in-natura" tal-emerġenza ta 'dan l-isterjotip. Nittama li dan jippermettilek tħares lejn l-għażla tal-paradigma tal-iskambju tad-dejta fil-proġetti tiegħek minn angolu ġdid.

Sabiex inkun ċar dwar x'inhu RPC, nipproponi li nikkunsidra l-istandard JSON-RPC 2.0. B'REST m'hemmx ċarezza. U m'għandux ikun. Dak kollu li għandek bżonn tkun taf dwar REST - huwa indistingwibbli minn HTTP.

It-talbiet RPC huma aktar mgħaġġla u aktar effiċjenti għaliex jippermettulek tagħmel talbiet tal-lott.

Il-punt hu li f'RPC tista' ċċempel diversi proċeduri f'daqqa f'talba waħda. Pereżempju, oħloq utent, żidu avatar u, fl-istess talba, abbonah għal xi suġġetti. Talba waħda biss, u kemm benefiċċju!

Tabilħaqq, jekk għandek nodu backend wieħed biss, jidher aktar mgħaġġel b'talba tal-lott. Minħabba li tliet talbiet REST se jeħtieġu tliet darbiet aktar riżorsi minn nodu wieħed biex jistabbilixxu konnessjonijiet.

JSON-RPC? Ħu REST delikat

Innota li l-ewwel talba fil-każ ta' REST trid tirritorna l-ID tal-utent sabiex isiru talbiet sussegwenti. Li jaffettwa wkoll b'mod negattiv ir-riżultat ġenerali.

Iżda infrastrutturi bħal dawn jistgħu jinstabu biss f'soluzzjonijiet interni u Enterprise. Bħala l-aħħar għażla, fi proġetti WEB żgħar. Iżda s-soluzzjonijiet WEB sħaħ, u anke dawk li jissejħu HighLoad, mhumiex ta' min jibnu. L-infrastruttura tagħhom trid tissodisfa l-kriterji ta’ disponibbiltà u tagħbija għolja. U l-istampa qed tinbidel.

JSON-RPC? Ħu REST delikat

Il-kanali tal-attività tal-infrastruttura taħt l-istess xenarju huma mmarkati bl-aħdar. Avviż kif RPC jaġixxi issa. It-talba tuża l-infrastruttura fuq sieq waħda biss mill-balancer sal-backend. Filwaqt li REST għadu jitlef fl-ewwel talba, jagħmel tajjeb għall-ħin mitluf bl-użu tal-infrastruttura kollha.

Huwa biżżejjed li tidħol fl-iskrittura mhux żewġ talbiet għal arrikkiment, iżda, ngħidu aħna, ħamsa jew għaxra... u t-tweġiba għall-mistoqsija "min jirbaħ issa?" isir mhux ċar.

Nipproponi li nagħti ħarsa saħansitra aktar wiesgħa lejn il-problema. Id-dijagramma turi kif jintużaw il-kanali tal-infrastruttura, iżda l-infrastruttura mhix limitata għall-kanali. Komponent importanti ta' infrastruttura ta' tagħbija għolja huwa l-caches. Ejja issa nikseb xi tip ta 'artifact utent. Ripetutament. Ejja ngħidu 32 darba.

JSON-RPC? Ħu REST delikat

Ara kif l-infrastruttura RPC tjiebet b'mod sinifikanti biex tissodisfa t-talbiet ta 'tagħbija għolja. Il-ħaġa hija li REST juża l-qawwa sħiħa tal-protokoll HTTP, b'differenza RPC. Fid-dijagramma ta 'hawn fuq, din is-setgħa hija realizzata permezz tal-metodu tat-talba - GET.

Il-metodi HTTP, fost affarijiet oħra, għandhom strateġiji ta 'caching. Tista’ ssibhom fid-dokumentazzjoni fuq HTTP. Għal RPC, jintużaw talbiet POST, li mhumiex ikkunsidrati idempotenti, jiġifieri, ripetizzjonijiet ripetuti tal-istess talbiet POST jistgħu jirritornaw riżultati differenti (pereżempju, wara li jintbagħat kull kumment, se tidher kopja oħra ta' dan il-kumment) (sors).

Konsegwentement, RPC ma jistax juża b'mod effettiv il-caches tal-infrastruttura. Dan iwassal għall-ħtieġa li "importazzjoni" caches tas-softwer. Id-dijagramma turi lil Redis f'dan ir-rwol. Il-cache artab, imbagħad, jeħtieġ li l-iżviluppatur iżid saff addizzjonali ta 'kodiċi u bidliet notevoli fl-arkitettura.

Ejja issa ngħoddu kemm talbiet REST u RPC “welled” fl-infrastruttura li qed tiġi kkunsidrata?

Talbiet
inbox
biex backend
għad-DBMS
għal soft cache (Redis)
TOTAL

SERĦAN
1 / 32 *
1
1
0
3 / 35

CPR
32
32
1
31
96

[*] fl-aħjar każ (jekk tintuża l-cache lokali) talba waħda (waħda!), fl-agħar każ 1 talba deħlin.

Meta mqabbel mal-ewwel skema, id-differenza hija impressjonanti. Issa l-benefiċċju tal-REST isir ċar. Imma nissuġġerixxi li ma nieqafx hemm. L-infrastruttura żviluppata tinkludi CDN. Ħafna drabi ssolvi wkoll il-kwistjoni tal-ġlieda kontra l-attakki DDoS u DoS. Nirċievu:

JSON-RPC? Ħu REST delikat

Dan huwa fejn l-affarijiet isiru verament ħżiena għall-RPC. RPC sempliċement mhux kapaċi jiddelega l-ammont ta' xogħol lil CDN. Nistgħu niddependu biss fuq sistemi biex nikkumbattu l-attakki.

Huwa possibbli li tispiċċa hawn? U għal darb'oħra, le. Il-metodi HTTP, kif imsemmi hawn fuq, għandhom il-"maġija" tagħhom stess. U mhux bla raġuni li l-metodu GET jintuża ħafna fuq l-Internet. Innota li dan il-metodu huwa kapaċi jaċċessa biċċa kontenut, huwa kapaċi jistabbilixxi kundizzjonijiet li l-elementi tal-infrastruttura jistgħu jinterpretaw qabel ma l-kontroll jiġi trasferit għall-kodiċi tiegħek, eċċ. Dan kollu jippermettilek toħloq infrastrutturi flessibbli u maniġġabbli li jistgħu jimmaniġġjaw flussi ta’ talbiet tassew kbar. Iżda fl-RPC dan il-metodu... huwa injorat.

Allura għaliex il-ħrafa li t-talbiet tal-lott (RPC) huma aktar mgħaġġla tant persistenti? Personalment, jidhirli li l-biċċa l-kbira tal-proġetti sempliċement ma jilħqux livell ta 'żvilupp fejn REST kapaċi juri s-saħħa tiegħu. Barra minn hekk, fi proġetti żgħar, huwa aktar lest li juri d-dgħufijiet tiegħu.

L-għażla ta' REST jew RPC mhijiex għażla volontarja ta' individwu fi proġett. Din l-għażla trid tissodisfa r-rekwiżiti tal-proġett. Jekk proġett huwa kapaċi jagħfas dak kollu li verament jista 'mill-REST, u verament jeħtieġlu, allura REST tkun għażla eċċellenti.

Imma jekk, sabiex tikseb il-benefiċċji kollha tal-REST, għandek bżonn timpjega speċjalisti devops għall-proġett biex iskala malajr l-infrastruttura, amministraturi biex jimmaniġġjaw l-infrastruttura, perit biex jiddisinja s-saffi kollha tas-servizz WEB... u l-proġett , fl-istess ħin, tbigħ tlett pakketti ta’ marġerina kuljum... Jien inżomm ma’ RPC, għax... dan il-protokoll huwa aktar utilitarju. Mhux se teħtieġ għarfien profond ta 'kif jaħdmu l-caches u l-infrastruttura, iżda se tiffoka lill-iżviluppatur fuq sejħiet sempliċi u li jinftiehmu għall-proċeduri li jeħtieġ. In-negozju se jkun kuntent.

It-talbiet RPC huma aktar affidabbli minħabba li jistgħu jesegwixxu talbiet tal-lott fi tranżazzjoni waħda

Din il-proprjetà ta 'RPC hija vantaġġ definit, għaliex Huwa faċli li żżomm id-database konsistenti. Imma bil-REĦAD isir aktar u aktar ikkumplikat. It-talbiet jistgħu jaslu b'mod inkonsistenti għal nodi backend differenti.

Dan l-"iżvantaġġ" ta' REST huwa l-inverżjoni tal-vantaġġ tiegħu deskritt hawn fuq - il-kapaċità li tuża b'mod effiċjenti r-riżorsi kollha tal-infrastruttura. Jekk l-infrastruttura hija ddisinjata ħażin, u aktar u aktar jekk l-arkitettura tal-proġett u d-database b'mod partikolari huma ddisinjati ħażin, allura dan huwa verament uġigħ kbir.

Imma t-talbiet tal-lott huma affidabbli daqs kemm jidhru? Ejja nħarsu lejn każ: noħolqu utent, jarrikkixxu l-profil tiegħu b'xi deskrizzjoni u nibagħtulu SMS b'sigriet biex tlesti r-reġistrazzjoni. Dawk. tliet sejħiet f'talba ta' lott wieħed.

JSON-RPC? Ħu REST delikat

Ejja nħarsu lejn id-dijagramma. Jippreżenta infrastruttura b'elementi ta' disponibbiltà għolja. Hemm żewġ kanali ta 'komunikazzjoni indipendenti b'bibien SMS. Imma... x'naraw? Meta tibgħat SMS, iseħħ żball 503 - is-servizz temporanjament mhux disponibbli. Għax It-trażmissjoni ta 'SMS hija ppakkjata f'talba ta' lott, allura t-talba kollha trid tiġi rritornata. L-azzjonijiet fid-DBMS huma kkanċellati. Il-klijent jirċievi żball.

Il-prova li jmiss hija l-lotterija. Jew it-talba se tolqot l-istess node għal darb'oħra u terġa 'lura żball, jew tkun xortik tajba u se tiġi esegwita. Iżda l-ħaġa prinċipali hija li mill-inqas darba l-infrastruttura tagħna diġà ħadmet għalxejn. Kien hemm tagħbija, iżda l-ebda profitt.

Tajjeb, ejja nimmaġinaw li ħsibna lilna nfusna (!) u ħsibna fl-għażla meta t-talba tkun tista' titlesta parzjalment b'suċċess. U se nippruvaw nerġgħu nlestu l-bqija wara xi intervall ta’ ħin (Liema wieħed? Jiddeċiedi l-faċċata?). Iżda l-lotterija baqgħet l-istess. It-talba biex jintbagħat SMS għandha ċans ta' 50/50 li terġa' tfalli.

Naqbel, min-naħa tal-klijent, is-servizz ma jidhirx affidabbli daqs kemm nixtiequ... xi ngħidu dwar REST?

JSON-RPC? Ħu REST delikat

REST jerġa' juża l-maġija ta' HTTP, iżda issa b'kodiċi ta' rispons. Meta jseħħ żball 503 fuq il-portal tal-SMS, il-backend ixandar dan l-iżball lill-balancer. Il-balancer jirċievi dan l-iżball u mingħajr ma jkisser il-konnessjoni mal-klijent, jibgħat it-talba lil nodu ieħor, li jipproċessa t-talba b'suċċess. Dawk. il-klijent jirċievi r-riżultat mistenni, u l-infrastruttura tikkonferma t-titlu għoli tagħha ta '"aċċessibbli ħafna". L-utent huwa kuntent.

U għal darb'oħra dan mhux kollox. Il-balancer ma rċievax biss kodiċi ta 'rispons ta' 503. Meta jwieġeb, skont l-istandard, huwa rakkomandabbli li jipprovdi dan il-kodiċi bl-header "Retry-After". L-header jagħmilha ċara lill-balancer li m'għandux jiddisturba dan in-node f'din ir-rotta għal żmien speċifikat. U t-talbiet li jmiss biex jintbagħtu SMS jintbagħtu direttament lil node li m'għandux problemi bil-portal tal-SMS.

Kif nistgħu naraw, l-affidabbiltà ta 'JSON-RPC hija overrated. Tabilħaqq, huwa aktar faċli li torganizza l-konsistenza fid-database. Iżda s-sagrifiċċju, f'dan il-każ, se jkun l-affidabbiltà tas-sistema kollha kemm hi.

Il-konklużjoni hija fil-biċċa l-kbira simili għal dik preċedenti. Meta l-infrastruttura hija sempliċi, l-ovvja ta 'JSON-RPC hija definittivament plus. Jekk il-proġett jinvolvi disponibbiltà għolja b'tagħbija għolja, REST tidher qisha soluzzjoni aktar korretta, għalkemm aktar kumplessa.

Il-limitu tad-dħul għal REST huwa aktar baxx

Naħseb li l-analiżi ta 'hawn fuq, li tiċħad l-isterjotipi stabbiliti dwar l-RPC, uriet b'mod ċar li l-limitu għad-dħul f'REST huwa bla dubju ogħla milli f'RPC. Dan huwa dovut għall-ħtieġa ta 'fehim profond ta' kif jaħdem HTTP, kif ukoll il-ħtieġa li jkun hemm biżżejjed għarfien dwar elementi tal-infrastruttura eżistenti li jistgħu u għandhom jintużaw fi proġetti WEB.

Allura għaliex ħafna nies jaħsbu li l-mistrieħ se jkun aktar sempliċi? L-opinjoni personali tiegħi hija li din is-sempliċità apparenti ġejja mill-manifesti REST infushom. Dawk. REST mhuwiex protokoll iżda kunċett... REST m'għandux standard, hemm xi linji gwida... REST mhuwiex aktar ikkumplikat minn HTTP. Il-libertà apparenti u l-anarkija jattiraw "artisti ħielsa".

Naturalment, REST mhuwiex aktar ikkumplikat minn HTTP. Iżda HTTP innifsu huwa protokoll iddisinjat tajjeb li wera l-valur tiegħu matul għexieren ta 'snin. Jekk ma jkunx hemm fehim profond ta 'HTTP innifsu, allura REST ma jistax jiġi ġġudikat.

Imma dwar RPC - tista '. Huwa biżżejjed li tieħu l-ispeċifikazzjoni tagħha. Allura għandek bżonn stupid JSON-RPC? Jew għadu delikat REST? Inti tiddeċiedi.

Sinċerament nittama li ma ħeliex il-ħin tiegħek.

Sors: www.habr.com

Ixtri hosting affidabbli għal siti bi protezzjoni DDoS, servers VPS VDS 🔥 Ixtri hosting ta' websajts affidabbli bi protezzjoni DDoS, servers VPS VDS | ProHoster