JSON-RPC? Nka REST e qhekellang

JSON-RPC? Nka REST e qhekellang

Ke na le bonnete ba hore sehlooho se ile sa baka karabelo e phetseng hantle - "hantle, e qalile hape ..." Empa e-re ke hape maikutlo a hau ka metsotso e 5-10, 'me ke tla leka ho se nyahamise litebello tsa hau.

Sebopeho sa sengoloa se tla ba ka tsela e latelang: polelo e ts'oanelang e nkuoa 'me ho senoloa "semelo" sa ho hlaha ha mokhoa ona. Ke tšepa hore sena se tla u lumella ho sheba khetho ea paradigm ea phapanyetsano ea data mererong ea hau ho tloha ka lehlakoreng le lecha.

E le ho hlakisa hore na RPC ke eng, ke etsa tlhahiso ea ho nahana ka maemo JSON-RPC 2.0. Ka REST ha ho na ho hlaka. 'Me ha ea lokela ho ba joalo. Ntho e ngoe le e ngoe eo u hlokang ho e tseba ka REST - ha e khethollehe ho tsoa ho eona http.

Likopo tsa RPC li potlakile ebile li sebetsa hantle hobane li u lumella ho etsa likopo tsa batch.

Taba ke hore ho RPC o ka letsetsa lits'ebetso tse 'maloa hang ka kopo e le' ngoe. Mohlala, theha mosebelisi, eketsa avatar ho eena, 'me ka kopo e tšoanang, mo ngolise ho lihlooho tse ling. Kopo e le ’ngoe feela, ’me molemo o mokaakang!

Ehlile, haeba u na le node e le 'ngoe feela ea backend, e tla bonahala e potlakile ka kopo ea batch. Hobane likopo tse tharo tsa REST li tla hloka lisebelisoa tse fetang makhetlo a mararo ho tloha node e le 'ngoe ho theha likhokahano.

JSON-RPC? Nka REST e qhekellang

Hlokomela hore kopo ea pele tabeng ea REST e tlameha ho khutlisa ID ea mosebelisi e le hore ho ka etsoa likopo tse latelang. E leng hape e amang phello e mpe ka kakaretso.

Empa lisebelisoa tse joalo li ka fumanoa feela ka litharollo tsa ka tlung le Enterprise. E le khetho ea ho qetela, mererong e menyenyane ea WEB. Empa litharollo tse felletseng tsa WEB, esita le tse bitsoang HighLoad, ha lia lokela ho ahoa. Meralo ea bona ea motheo e tlameha ho finyella litekanyetso tsa ho fumaneha ho phahameng le mojaro. 'Me setšoantšo sea fetoha.

JSON-RPC? Nka REST e qhekellang

Mecha ea ts'ebetso ea meaho tlasa boemo bo ts'oanang e tšoailoe ka botala. Hlokomela hore na RPC e sebetsa joang hona joale. Kopo e sebelisa lisebelisoa ka leoto le le leng feela ho tloha ho balancer ho ea ka morao. Le hoja REST e ntse e lahleheloa ke kopo ea pele, e lefella nako e lahlehileng e sebelisa lisebelisoa tsohle.

Ho lekane ho kena ka har'a script eseng likopo tse peli tsa ho rua, empa, ho re, tse hlano kapa tse leshome ... le karabo ea potso "ke mang ea hlōlang hona joale?" ha e hlaka.

Ke etsa tlhahiso ea ho shebisisa bothata bona haholoanyane. Sets'oants'o se bonts'a hore na likanale tsa litšebeletso tsa motheo li sebelisoa joang, empa lisebelisoa ha li felle feela likanaleng. Karolo ea bohlokoa ea thepa ea motheo e boima haholo ke li-cache. Ha re fumaneng mofuta oa lisebelisoa tsa mosebelisi. Khafetsa. Ha re bue makhetlo a 32.

JSON-RPC? Nka REST e qhekellang

Bona kamoo meaho ea RPC e ntlafalitseng haholo ho fihlela litlhoko tsa mojaro o phahameng. Taba ke hore REST e sebelisa matla a felletseng a protocol ea HTTP, ho fapana le RPC. Setšoantšong se ka holimo, matla ana a fumanoa ka mokhoa oa kopo - GET.

Mekhoa ea HTTP, har'a lintho tse ling, e na le maano a caching. U ka li fumana litokomaneng ho http. Bakeng sa RPC, likōpo tsa POST li sebelisoa, tse sa nkoang li se na thuso, ke hore, ho pheta-pheta likōpo tse tšoanang tsa POST ho ka khutlisa liphello tse fapaneng (mohlala, ka mor'a hore tlhaloso e 'ngoe le e' ngoe e romeloe, kopi e 'ngoe ea tlhaloso ena e tla hlaha) (mohloli).

Ka lebaka leo, RPC ha e khone ho sebelisa li-cache tsa litšebeletso ka nepo. Sena se lebisa tlhokong ea ho "inport" li-cache tsa software. Setšoantšo se bontša Redis karolong ena. Cache ea software, ka lehlakoreng le leng, e hloka hore moqapi a kenye karolo e eketsehileng ea khoutu le liphetoho tse hlokomelehang mohahong.

Ha re bale hore na ke likopo tse kae tse REST le RPC e "tsoetseng" lits'ebetsong tse ntseng li nahanoa?

Likopo
inbox
to backend
ho DBMS
ho cache e bonolo (Redis)
TOTAL

LULA
1 / 32 *
1
1
0
3 / 35

RPC
32
32
1
31
96

[*] maemong a matle (haeba ho sebelisoa cache ea lehae) kopo e le 1 (e le 'ngoe!), Boemong bo bobe ka ho fetisisa likopo tse 32 tse tlang.

Ha ho bapisoa le morero oa pele, phapang e hlolla. Joale molemo oa REST oa hlaka. Empa ke etsa tlhahiso ea hore ke se ke ka emisa moo. Lisebelisoa tse ntlafalitsoeng li kenyelletsa CDN. Hangata e boetse e rarolla taba ea ho loantša litlhaselo tsa DDoS le DoS. Re fumana:

JSON-RPC? Nka REST e qhekellang

Mona ke moo lintho li mpefalang haholo bakeng sa RPC. RPC ha e khone ho fana ka mojaro oa mosebetsi ho CDN. Re ka itšetleha feela ka litsamaiso ho loantša litlhaselo.

Na hoa khoneha ho fella moo? Mme hape, che. Mekhoa ea HTTP, joalokaha ho boletsoe ka holimo, e na le "boselamose" ba bona. 'Me ha ho na lebaka la hore mokhoa oa GET o sebelisoe haholo Marang-rang. Hlokomela hore mokhoa ona o khona ho fihlella sengoathoana sa dikahare, o khona ho beha maemo ao likarolo tsa motheo li ka li hlalosang pele taolo e fetisetsoa khoutu ea hau, joalo-joalo. Sena sohle se u fa monyetla oa ho theha lisebelisoa tse bonolo, tse laolehang tse ka sebetsanang le likopo tse ngata haholo. Empa ho RPC mokhoa ona ... o hlokomolohuoa.

Joale ke hobane'ng ha tšōmo ea hore likopo tsa batch (RPC) li potlakile hakaale? Ka bonna, ho 'na ho bonahala eka merero e mengata ha e fihle boemong ba tsoelo-pele moo REST e khonang ho bontša matla a eona. Ho feta moo, mererong e menyenyane, o ikemiselitse ho bontša mefokolo ea hae.

Khetho ea REST kapa RPC ha se khetho ea boithatelo ea motho morerong. Khetho ena e tlameha ho finyella litlhoko tsa morero. Haeba projeke e khona ho pepeta ntho e 'ngoe le e' ngoe eo e ka e khonang ho tsoa ho REST, 'me e hlile ea e hloka, joale REST e tla ba khetho e ntle haholo.

Empa haeba, e le hore u fumane melemo eohle ea REST, u hloka ho hira litsebi tsa devops bakeng sa morero hore o potlakele ho lekanya meralo ea motheo, batsamaisi ho laola meralo ea motheo, setsebi sa meralo ea ho rala likarolo tsohle tsa tšebeletso ea WEB ... le morero. , ka nako e ts'oanang, e rekisa lipakete tse tharo tsa margarine ka letsatsi ... Ke ne ke tla khomarela RPC, hobane ... protocol ena e na le thuso ho feta. E ke ke ea hloka tsebo e tebileng ea hore na li-cache le lisebelisoa tsa motheo li sebetsa joang, empa e tla tsepamisa mohopolo ho mohlahlami mehalang e bonolo le e utloisisoang ea lits'ebetso tseo a li hlokang. Khoebo e tla thaba.

Likopo tsa RPC li tšepahala ho feta hobane li ka etsa likopo tsa batch ka har'a transaction e le 'ngoe

Thepa ena ea RPC ke monyetla o hlakileng, hobane Ho bonolo ho boloka database e tsitsitse. Empa ka REST e ntse e rarahana le ho feta. Likopo li ka fihla ka mokhoa o sa tsitsang ho li-backend node tse fapaneng.

"Tlhaloso" ena ea REST ke lehlakore le leng la molemo o hlalositsoeng ka holimo - bokhoni ba ho sebelisa lisebelisoa tsohle tsa motheo ka katleho. Haeba thepa ea motheo e sa etsoa hantle, 'me le ho feta haeba mohaho oa morero le database ka ho khetheha li entsoe hampe, joale sena ke bohloko bo boholo.

Empa na likopo tsa batch li ka tšeptjoa joalokaha li bonahala? Ha re shebeng nyeoe: re theha mosebelisi, re ntlafatsa boemo ba hae ka tlhaloso e itseng ebe re mo romella SMS e nang le lekunutu la ho phethela ngoliso. Tseo. mehala e meraro ka kopo ea batch e le 'ngoe.

JSON-RPC? Nka REST e qhekellang

Ha re shebeng setšoantšo. E fana ka lisebelisoa tsa motheo tse nang le likarolo tse phahameng tse fumanehang. Ho na le likanale tse peli tse ikemetseng tsa puisano tse nang le liheke tsa SMS. Empa ... re bona eng? Ha u romela SMS, phoso 503 e etsahala - tšebeletso ha e fumanehe ka nakoana. Hobane Ho romelloa ha SMS ho phuthetsoe ka kopo ea batch, ebe kopo eohle e tlameha ho khutlisoa. Liketso tsa DBMS li hlakotsoe. Moreki o fumana phoso.

Teko e latelang ke lotho. Mohlomong kopo e tla otla node e le 'ngoe khafetsa e khutlisa phoso, kapa u tla ba lehlohonolo' me e tla etsoa. Empa taba e kholo ke hore bonyane hang ha meaho ea rona e se e sebelitse lefeela. Ho ne ho e-na le mojaro, empa ho se phaello.

Ho lokile, ha re nahane hore re itšohlobile (!) 'me re nahanne ka khetho ha kopo e ka phethoa ka katleho. 'Me re tla leka ho tlatsa tse ling hape ka mor'a nako e itseng (Ke efe? Na ea pele e etsa qeto?). Empa lotho e ile ea lula e tšoana. Kopo ea ho romella SMS e na le monyetla oa 50/50 oa ​​ho hloleha hape.

Lumellana, ho tloha lehlakoreng la bareki, tšebeletso ha e bonahale e ka tšeptjoa joalokaha re ka rata ... ho thoe'ng ka REST?

JSON-RPC? Nka REST e qhekellang

REST e sebelisa boloi ba HTTP hape, empa joale e na le likhoutu tsa karabelo. Ha phoso 503 e etsahala hekeng ea SMS, backend e phatlalatsa phoso ena ho balancer. Mohlahlobi o fumana phoso ena mme ntle le ho senya kamano le mofani, o romela kopo ho node e 'ngoe, e sebetsang ka katleho kopo. Tseo. mofani o fumana sephetho se lebeletsoeng, 'me lisebelisoa tsa motheo li tiisa sehlooho sa eona se phahameng sa "ho fihlella haholo". Mosebedisi o thabile.

Mme hape ha se phetho. Motho ea leka-lekaneng ha aa ka a fumana feela khoutu ea karabo ea 503. Ha u arabela, ho ea ka mokhoa o tloaelehileng, ho eletsoa ho fana ka khoutu ena ka sehlooho sa "Ret-After". Sehlooho se hlakisa ho leka-lekana hore ha hoa lokela ho senya node ena tseleng ena ka nako e itseng. 'Me likōpo tse latelang tsa ho romela SMS li tla romelloa ka ho toba ho node e se nang mathata le heke ea SMS.

Joalokaha re bona, ho ts'epahala ha JSON-RPC ho fetelletse. Ka 'nete, ho bonolo ho hlophisa ho lumellana ho database. Empa sehlabelo, tabeng ena, e tla ba ho tšepahala ha tsamaiso ka kakaretso.

Sephetho se tšoana haholo le se fetileng. Ha lisebelisoa tsa motheo li le bonolo, ho hlaka ha JSON-RPC ehlile ke tlatsetso. Haeba morero o kenyelletsa ho fumaneha ho phahameng ka mojaro o phahameng, REST e shebahala e le tharollo e nepahetseng haholoanyane, le hoja e rarahane haholoanyane.

Moeli oa ho kena ho REST o tlase

Ke nahana hore tlhahlobo e ka holimo, e hlalosang maikutlo a tsitsitseng mabapi le RPC, e bontšitse ka ho hlaka hore monyako oa ho kena ho REST ha ho pelaelo hore o phahame ho feta ho RPC. Sena se bakoa ke tlhokahalo ea kutloisiso e tebileng ea hore na HTTP e sebetsa joang, hammoho le tlhokahalo ea ho ba le tsebo e lekaneng mabapi le likarolo tse teng tsa mekhoa ea motheo tse ka sebelisoang le tse lokelang ho sebelisoa mererong ea WEB.

Joale ke hobane'ng ha batho ba bangata ba nahana hore REST e tla ba bonolo haholoanyane? Maikutlo a ka ke hore bonolo bona bo bonahalang bo tsoa ho REST e iponahatsa. Tseo. REST ha se protocol empa ke mohopolo ... REST ha e na maemo, ho na le tataiso e itseng ... REST ha e thata ho feta HTTP. Tokoloho e bonahalang le moferefere li hohela "litšoantšo tsa mahala".

Ehlile, REST ha e thata ho feta HTTP. Empa HTTP ka boeona ke protocol e hlophisitsoeng hantle e bonts'itseng bohlokoa ba eona ka lilemo tse mashome. Haeba ho se na kutloisiso e tebileng ea HTTP ka boeona, joale REST e ke ke ea ahloloa.

Empa ka RPC - u ka khona. Ho lekane ho nka tlhaloso ea eona. Le uena u hloka sethoto JSON-RPC? Kapa e ntse e le bolotsana REST? U etsa qeto.

Ke tšepa ka tieo hore ha kea u senyetsa nako.

Source: www.habr.com

Eketsa ka tlhaloso