JSON-RPC? Tengani REST yachinyengo

JSON-RPC? Tengani REST yachinyengo

Ndikukhulupirira kuti mutuwu udapangitsa kuti anthu azichita bwino - "chabwino, ayambiranso ..." Koma ndiroleni ndikukopeni kwa mphindi 5-10, ndipo ndiyesetsa kuti ndisakhumudwitse zomwe mukuyembekezera.

Mapangidwe a nkhaniyi adzakhala motere: mawu omveka amatengedwa ndipo "chirengedwe" cha kutuluka kwa chisokonezo ichi chikuwululidwa. Ndikukhulupirira kuti izi zikuthandizani kuti muyang'ane pa chisankho cha kusinthana kwa data pamapulojekiti anu kuchokera ku ngodya yatsopano.

Kuti ndimvetse bwino zomwe RPC ndi, ndikulingalira kuganizira muyezo JSON-RPC 2.0. Ndi REST palibe zomveka. Ndipo siziyenera kukhala. Chilichonse chomwe muyenera kudziwa za REST - sichidziwika HTTP.

Zopempha za RPC zimakhala zachangu komanso zogwira mtima chifukwa zimakulolani kuti mupange zopempha zamagulu.

Chowonadi ndichakuti mu RPC mutha kuyimba njira zingapo nthawi imodzi pakupempha kumodzi. Mwachitsanzo, pangani wogwiritsa ntchito, onjezani avatar kwa iye ndipo, popemphanso chimodzimodzi, mulembetse ku mitu ina. Pempho limodzi lokha, ndipo phindu lotani!

Zowonadi, ngati muli ndi node imodzi yokha yakumbuyo, idzawoneka mwachangu ndi pempho la batch. Chifukwa zopempha zitatu za REST zidzafuna zowonjezera katatu kuchokera kumalo amodzi kuti akhazikitse maulumikizidwe.

JSON-RPC? Tengani REST yachinyengo

Dziwani kuti pempho loyamba pankhani ya REST liyenera kubweza ID ya wogwiritsa ntchito kuti zopempha zotsatila zichitike. Zomwe zimasokonezanso zotsatira zake zonse.

Koma zomangira zotere zitha kupezeka mumayankho amkati ndi Enterprise. Monga chomaliza, mumapulojekiti ang'onoang'ono a WEB. Koma mayankho a WEB athunthu, komanso omwe amatchedwa HighLoad, sali oyenera kumanga. Zomangamanga zawo ziyenera kukwaniritsa zofunikira za kupezeka kwakukulu ndi katundu. Ndipo chithunzi chikusintha.

JSON-RPC? Tengani REST yachinyengo

Njira zogwirira ntchito pazachitukuko zofanana ndi zomwezo zimayikidwa zobiriwira. Zindikirani momwe RPC ikuchitira tsopano. Pempho limagwiritsa ntchito zomangamanga pa mwendo umodzi wokha kuchokera ku balancer kupita ku backend. Ngakhale kuti REST imatayikabe pempho loyamba, imapanga nthawi yotayika pogwiritsa ntchito zomangamanga zonse.

Ndikokwanira kulowa muzolemba osati zopempha ziwiri zolemeretsa, koma, titi, zisanu kapena khumi ... ndi yankho la funso lakuti "ndani amapambana tsopano?" sizikudziwika.

Ndikukupemphani kuti tiyang'ane mozama za vutoli. Chithunzichi chikuwonetsa momwe njira zogwirira ntchito zimagwiritsidwira ntchito, koma zomangamanga sizimangokhala panjira. Chigawo chofunikira cha zomangamanga zolemetsa kwambiri ndi ma cache. Tiyeni tsopano titengere mtundu wina wa ogwiritsa ntchito. Mobwerezabwereza. Tinene ka 32.

JSON-RPC? Tengani REST yachinyengo

Onani momwe zomangamanga za RPC zasinthiratu kuti zikwaniritse zofunikira za katundu wambiri. Chinthucho ndikuti REST imagwiritsa ntchito mphamvu zonse za HTTP protocol, mosiyana ndi RPC. Pachithunzi pamwambapa, mphamvu iyi imakwaniritsidwa kudzera munjira yopempha - GET.

Njira za HTTP, mwa zina, zili ndi njira zosungira. Mutha kuwapeza pazolembedwa pa HTTP. Kwa RPC, zopempha za POST zimagwiritsidwa ntchito, zomwe sizimaganiziridwa kuti ndizopanda pake, ndiko kuti, kubwereza mobwerezabwereza zopempha zofanana za POST kungabweretse zotsatira zosiyana (mwachitsanzo, ndemanga iliyonse ikatumizidwa, kopi ina ya ndemangayi idzawonekera) (gwero).

Chifukwa chake, RPC siyitha kugwiritsa ntchito bwino ma cache a zomangamanga. Izi zimabweretsa kufunikira kwa "kulowetsa" ma cache a mapulogalamu. Chithunzichi chikuwonetsa Redis mu gawoli. Cache ya pulogalamuyo, imafunanso kuti wopanga mapulogalamuwo awonjezere kachidindo kowonjezera komanso kusintha kowoneka bwino pamapangidwewo.

Tiyeni tsopano tiwerengere zopempha zingati za REST ndi RPC "zinabereka" pazomwe zikuganiziridwa?

Zopempha
Makalata Obwera
ku backend
ku DBMS
ku cache yofewa (Redis)
TOTAL

Bwerani
1 / 32 *
1
1
0
3 / 35

CPR
32
32
1
31
96

[*] muzochitika zabwino kwambiri (ngati cache yakomweko ikugwiritsidwa ntchito) pempho la 1 (limodzi!), Poyipa kwambiri 32 zopempha zomwe zikubwera.

Poyerekeza ndi chiwembu choyamba, kusiyana kuli kodabwitsa. Tsopano phindu la REST likuwonekera. Koma ndikupempha kuti ndisayime pamenepo. Zomangamanga zomwe zapangidwa zikuphatikizapo CDN. Nthawi zambiri imathetsanso nkhani yolimbana ndi DDoS ndi DoS. Timapeza:

JSON-RPC? Tengani REST yachinyengo

Apa ndipamene zinthu zimakhala zoyipa kwambiri kwa RPC. RPC sikutha kupereka ntchito ku CDN. Titha kungodalira machitidwe kuti tithane ndi ziwopsezo.

Ndizotheka kutha apa? Ndipo kachiwiri, ayi. Njira za HTTP, monga tafotokozera pamwambapa, zili ndi "matsenga" awo. Ndipo sizopanda chifukwa kuti njira ya GET imagwiritsidwa ntchito kwambiri pa intaneti. Zindikirani kuti njirayi imatha kupeza gawo lachindunji, imatha kukhazikitsa zinthu zomwe zida zogwirira ntchito zimatha kutanthauzira zisanayambe kuwongolera ku code yanu, ndi zina zotero. Zonsezi zimakupatsani mwayi wopanga zida zosinthika, zosinthika zomwe zimatha kuthana ndi zopempha zambiri. Koma mu RPC njira iyi ... imanyalanyazidwa.

Nanga bwanji nthano yoti zopempha za batch (RPC) ndizofulumira kwambiri? Inemwini, zikuwoneka kwa ine kuti ma projekiti ambiri samafika pamlingo wa chitukuko pomwe REST imatha kuwonetsa mphamvu zake. Komanso, m'mapulojekiti ang'onoang'ono, amakhala wokonzeka kusonyeza zofooka zake.

Kusankha kwa REST kapena RPC sikungosankha mwakufuna kwa munthu mu polojekiti. Chisankhochi chiyenera kukwaniritsa zofunikira za polojekitiyi. Ngati polojekiti imatha kufinya chilichonse chomwe ingathe kuchokera mu REST, ndipo ikufunikadi, ndiye kuti REST idzakhala chisankho chabwino kwambiri.

Koma ngati, kuti mupeze zabwino zonse za REST, muyenera kulemba ganyu akatswiri a devops kuti polojekitiyi ikulitsidwe mwachangu, oyang'anira kuti aziyang'anira zomangamanga, womanga kuti apange zigawo zonse za ntchito ya WEB ... , panthawi yomweyi, amagulitsa mapaketi atatu a margarine patsiku ... protocol iyi ndiyothandiza kwambiri. Sizidzafunika kudziwa mozama momwe ma cache ndi zomangamanga zimagwirira ntchito, koma zidzangoyang'ana wopanga mafoni osavuta komanso omveka kunjira zomwe akufuna. Bizinesi idzakhala yosangalala.

Zopempha za RPC ndizodalirika chifukwa zimatha kupereka zopempha zamagulu mkati mwakuchitako kamodzi

Katunduyu wa RPC ndi mwayi wotsimikizika, chifukwa Ndikosavuta kusunga nkhokwe mosasinthasintha. Koma ndi REST zimakhala zovuta kwambiri. Zopempha zimatha kufika mosagwirizana ndi ma node osiyanasiyana akumbuyo.

"Zoyipa" izi za REST ndiye mbali yakutsogolo yaubwino wake womwe wafotokozedwa pamwambapa - kuthekera kogwiritsa ntchito bwino zida zonse zogwirira ntchito. Ngati zomangamanga sizinapangidwe bwino, ndipo makamaka ngati mapangidwe a polojekitiyo ndi database makamaka sizinapangidwe bwino, ndiye kuti izi ndi zowawa kwambiri.

Koma kodi zopempha zamagulu ndizodalirika monga zikuwonekera? Tiyeni tiwone mlandu: timapanga wogwiritsa ntchito, kukulitsa mbiri yake ndi mafotokozedwe ena ndikumutumizira SMS yokhala ndi chinsinsi kuti amalize kulembetsa. Iwo. mafoni atatu mu pempho limodzi la batch.

JSON-RPC? Tengani REST yachinyengo

Tiyeni tiwone chithunzicho. Imapereka maziko okhala ndi zinthu zambiri zopezeka. Pali njira ziwiri zoyankhulirana zodziyimira pawokha zokhala ndi zipata za SMS. Koma... tikuwona chiyani? Mukatumiza SMS, cholakwika 503 chimachitika - ntchitoyo siyikupezeka kwakanthawi. Chifukwa Kutumiza kwa SMS kumayikidwa mu pempho la batch, ndiye pempho lonse liyenera kubwezeredwa. Zochita mu DBMS zathetsedwa. Wofuna chithandizo amalandira cholakwika.

Kuyesera kotsatira ndi lotale. Mwina pempho lidzakhudzanso mfundo yomweyi mobwerezabwereza kubwezera zolakwika, kapena mudzakhala ndi mwayi ndipo idzachitidwa. Koma chinthu chachikulu ndi chakuti kamodzi kokha zomangamanga zathu zakhala zikugwira ntchito pachabe. Panali katundu, koma palibe phindu.

Chabwino, tiyerekeze kuti tadzipusitsa tokha (!) ndikuganizira njirayo pomwe pempho litha kumalizidwa bwino. Ndipo tidzayesanso kutsiriza zina zonse pakapita nthawi (Iti? Kodi kutsogolo kumasankha?). Koma lotaleyo sinasinthebe. Pempho lotumiza SMS lili ndi mwayi wa 50/50 wolepheranso.

Gwirizanani, kuchokera kumbali ya kasitomala, ntchitoyo sikuwoneka ngati yodalirika monga momwe tingafunira ... nanga bwanji REST?

JSON-RPC? Tengani REST yachinyengo

REST imagwiritsanso ntchito matsenga a HTTP, koma tsopano ndi ma code oyankha. Pamene cholakwika 503 chikachitika pachipata cha SMS, kumbuyo kumawulutsa cholakwika ichi kwa balancer. Wolinganiza amalandira cholakwika ichi ndipo popanda kuswa kulumikizana ndi kasitomala, amatumiza pempho ku node ina, yomwe imayendetsa bwino pempholo. Iwo. kasitomala amalandira zotsatira zomwe zikuyembekezeredwa, ndipo zowonongeka zimatsimikizira mutu wake wapamwamba wa "kufikika kwambiri". Wogwiritsa ntchito ndi wokondwa.

Ndipo si zokhazo ayi. Balancer sanangolandira nambala yoyankhira ya 503. Poyankha, malinga ndi muyezo, ndi bwino kupereka code iyi ndi mutu wa "Retry-After". Mutuwu umamveketsa bwino kwa balancer kuti sikoyenera kusokoneza node iyi panjirayi kwa nthawi yodziwika. Ndipo zopempha zotsatila zotumiza SMS zidzatumizidwa mwachindunji ku node yomwe ilibe vuto ndi chipata cha SMS.

Monga tikuonera, kudalirika kwa JSON-RPC ndikokwanira. Zowonadi, ndikosavuta kulinganiza kusasinthika mu database. Koma nsembeyo, pamenepa, idzakhala yodalirika ya dongosolo lonse.

Mapeto ake ndi ofanana kwambiri ndi am'mbuyomu. Zomangamanga zikakhala zosavuta, kuwonekera kwa JSON-RPC ndikokwanira. Ngati polojekitiyi ikuphatikizapo kupezeka kwakukulu ndi katundu wambiri, REST imawoneka ngati yolondola kwambiri, ngakhale yovuta kwambiri, yankho.

Malo olowera ku REST ndiwotsika

Ndikuganiza kuti kusanthula pamwambapa, kutsutsa zomwe zakhazikitsidwa pa RPC, zikuwonetsa momveka bwino kuti malo olowera mu REST mosakayikira ndi apamwamba kuposa RPC. Izi ndichifukwa chofuna kumvetsetsa mozama momwe HTTP imagwirira ntchito, komanso kufunikira kokhala ndi chidziwitso chokwanira pazinthu zomwe zilipo kale zomwe zingagwiritsidwe ntchito ndi zomwe ziyenera kugwiritsidwa ntchito mu WEB.

Nanga ndichifukwa chiyani anthu ambiri amaganiza kuti REST ikhala yosavuta? Lingaliro langa ndikuti kuphweka kumeneku kumachokera ku REST imadziwonetsera. Iwo. REST si protocol koma lingaliro ... REST ilibe muyezo, pali malangizo ena ... REST ndizovuta kuposa HTTP. Ufulu wowonekera ndi chisokonezo zimakopa "ojambula aulere".

Zachidziwikire, REST siyovuta kuposa HTTP. Koma HTTP yokha ndi protocol yopangidwa bwino yomwe yatsimikizira kufunika kwake kwazaka zambiri. Ngati palibe kumvetsetsa kwakuya kwa HTTP palokha, ndiye kuti REST sitingaweruzidwe.

Koma za RPC - mutha. Ndikokwanira kutenga ndondomeko yake. Momwemonso muyenera wopusa JSON-RPC? Kapena ikadali yachinyengo REST? Mwasankha.

Ndikukhulupirira kuti sindinataye nthawi yanu.

Source: www.habr.com

Kuwonjezera ndemanga