I-JSON-RPC? Thatha i-REST ekhohlisayo

I-JSON-RPC? Thatha i-REST ekhohlisayo

Nginesiqiniseko sokuthi isihloko sesihloko sibangele ukusabela okunempilo - "kahle, kuphinde kwaqala..." Kodwa ake ngibambe ukunaka kwakho imizuzu engu-5-10, futhi ngizozama ukungaphoxi okulindele.

Isakhiwo se-athikili sizoba ngale ndlela elandelayo: isitatimende se-stereotypical sithathwa futhi "imvelo" yokuvela kwalesi sihloko senziwa. Ngethemba ukuthi lokhu kuzokuvumela ukuthi ubheke ukukhetha kwepharadigm yokushintshisana kwedatha kumaphrojekthi akho usuka kwelinye icala.

Ukuze kucace ukuthi iyini i-RPC, ngiphakamisa ukucabangela izinga I-JSON-RPC 2.0. Nge-REST akukho ukucaca. Futhi akufanele kube njalo. Konke odinga ukukwazi mayelana ne-REST - akwehlukaniseki kukho HTTP.

Izicelo ze-RPC ziyashesha futhi zisebenza kahle kakhulu ngoba zikuvumela ukuthi wenze izicelo zenqwaba.

Iphuzu liwukuthi ku-RPC ungabiza izinqubo ezimbalwa ngesikhathi esisodwa esicelweni esisodwa. Isibonelo, dala umsebenzisi, engeza i-avatar kuye futhi, esicelweni esifanayo, umbhalisele kwezinye izihloko. Isicelo esisodwa nje, futhi yeka inzuzo!

Ngempela, uma une-backend node eyodwa kuphela, izobonakala ishesha ngesicelo se-batch. Ngoba izicelo ezintathu ze-REST zizodinga izinsiza eziphindwe kathathu kusuka endaweni eyodwa ukuze kusungulwe ukuxhumana.

I-JSON-RPC? Thatha i-REST ekhohlisayo

Qaphela ukuthi isicelo sokuqala esimweni se-REST kufanele sibuyisele i-ID yomsebenzisi ukuze kwenziwe izicelo ezilandelayo. Okuphinde kube nomthelela omubi kumphumela jikelele.

Kodwa ingqalasizinda enjalo ingatholakala kuphela ezixazululweni zangaphakathi nezamabhizinisi. Njengendlela yokugcina, kumaphrojekthi amancane WE-WEB. Kodwa izixazululo ezigcwele zeWEB, kanye nalezo ezibizwa nge-HighLoad, azifanele ukwakhiwa. Ingqalasizinda yabo kufanele ihlangabezane nemibandela yokutholakala okuphezulu nomthwalo. Futhi isithombe siyashintsha.

I-JSON-RPC? Thatha i-REST ekhohlisayo

Amashaneli emisebenzi yengqalasizinda ngaphansi kwesimo esifanayo amakwe ngokuluhlaza. Qaphela ukuthi i-RPC iziphatha kanjani manje. Isicelo sisebenzisa ingqalasizinda emlenzeni owodwa kuphela ukusuka kobhalansi kuya ngasemuva. Ngenkathi i-REST isalahlekelwa esicelweni sokuqala, yenza isikhathi esilahlekile usebenzisa yonke ingqalasizinda.

Kwanele ukungena embhalweni hhayi izicelo ezimbili zokucebisa, kodwa, yithi, ezinhlanu noma eziyishumi ... kanye nempendulo yombuzo othi "ngubani ophumelelayo manje?" kuba nzima.

Ngiphakamisa ukuthi sibhekisise kabanzi inkinga. Umdwebo ukhombisa ukuthi imigudu yengqalasizinda isetshenziswa kanjani, kodwa ingqalasizinda ayigcini nje eziteshini. Ingxenye ebalulekile yengqalasizinda enomthwalo omkhulu ama-caches. Manje ake sithole uhlobo oluthile lwe-artifact yomsebenzisi. Ngokuphindaphindiwe. Ake sithi izikhathi ezingama-32.

I-JSON-RPC? Thatha i-REST ekhohlisayo

Bona ukuthi ingqalasizinda ye-RPC ithuthuke kanjani kakhulu ukuze ihlangabezane nezidingo zomthwalo omkhulu. Into ukuthi i-REST isebenzisa amandla aphelele wephrothokholi ye-HTTP, ngokungafani ne-RPC. Kumdwebo ongenhla, la mandla atholakala ngendlela yokucela - GET.

Izindlela ze-HTTP, phakathi kwezinye izinto, zinamasu okulondoloza isikhashana. Ungawathola embhalweni othi HTTP. Ku-RPC, kusetshenziswa izicelo ze-POST, ezingabhekwa njengezingelutho, okungukuthi, ukuphindaphinda kwezicelo ezifanayo ze-POST kungase kubuyisele imiphumela ehlukene (ngokwesibonelo, ngemva kokuthunyelwa kwamazwana ngamunye, kuzovela enye ikhophi yala mazwana) (umthombo).

Ngenxa yalokho, i-RPC ayikwazi ukusebenzisa kahle inqolobane yengqalasizinda. Lokhu kuholela esidingweni "sokungenisa" izilondolozi zesofthiwe. Umdwebo ukhombisa uRedis kule ndima. Inqolobane yesofthiwe, nayo, idinga ukuthi umthuthukisi angeze isendlalelo esengeziwe sekhodi kanye nezinguquko eziphawulekayo ekwakhiweni kwezakhiwo.

Manje ake sibale ukuthi zingaki izicelo ze-REST kanye ne-RPC β€œezale” kwingqalasizinda ecutshungulwayo?

Izicelo
ibhokisi lokungenayo
ukuhlehla
ku-DBMS
kunqolobane ethambile (Redis)
TOTAL

I-REST
1 / 32 *
1
1
0
3 / 35

I-RPC
32
32
1
31
96

[*] esimweni esihle kakhulu (uma i-cache yendawo isetshenziswa) isicelo esingu-1 (esisodwa!), esimweni esibi kakhulu izicelo ezingu-32 ezingenayo.

Uma kuqhathaniswa nohlelo lokuqala, umehluko uyamangalisa. Manje inzuzo ye-REST iyacaca. Kodwa ngiphakamisa ukuthi ngingayeki lapho. Ingqalasizinda ethuthukisiwe ihlanganisa i-CDN. Ngokuvamile futhi ixazulula inkinga yokubala ukuhlaselwa kwe-DDoS ne-DoS. Sithola:

I-JSON-RPC? Thatha i-REST ekhohlisayo

Yilapho izinto ziba zimbi kakhulu ku-RPC. I-RPC imane nje ingakwazi ukuthumela umthwalo womsebenzi ku-CDN. Singathembela kuphela kumasistimu ukulwa nokuhlaselwa.

Kungenzeka yini ukuphelela lapha? Futhi futhi, cha. Izindlela ze-HTTP, njengoba kushiwo ngenhla, zine "umlingo" wazo. Futhi asikho ngaphandle kwesizathu ukuthi indlela ye-GET isetshenziswa kabanzi ku-inthanethi. Qaphela ukuthi le ndlela iyakwazi ukufinyelela ucezu lokuqukethwe, iyakwazi ukubeka izimo izakhi zengqalasizinda ezingahumusha ngaphambi kokuba ukulawula kudluliselwe kukhodi yakho, njalonjalo. Konke lokhu kukuvumela ukuthi udale izingqalasizinda eziguquguqukayo, ezilawulekayo ezikwazi ukubhekana nokugeleza okukhulu kwezicelo. Kodwa ku-RPC le ndlela... ayinakwa.

Ngakho-ke kungani inganekwane yokuthi izicelo ze-batch (RPC) zishesha ukuphikelela? Ngokwami, kubonakala kimi ukuthi amaphrojekthi amaningi awafinyeleli ezingeni lentuthuko lapho i-REST ikwazi ukukhombisa amandla ayo. Ngaphezu kwalokho, kumaphrojekthi amancane, uzimisele kakhulu ukukhombisa ubuthakathaka bakhe.

Ukukhethwa kwe-REST noma i-RPC akuyona inketho yomuntu ngamunye kuphrojekthi. Lokhu kukhetha kufanele kuhlangabezane nezidingo zephrojekthi. Uma iphrojekthi ikwazi ukuminyanisa yonke into engakwazi ngempela ukuphuma ku-REST, futhi iyidinga ngempela, khona-ke i-REST izoba ukukhetha okuhle kakhulu.

Kodwa uma, ukuze uthole zonke izinzuzo ze-REST, udinga ukuqasha ochwepheshe be-devops ukuze iphrojekthi ilinganise ngokushesha ingqalasizinda, abalawuli baphathe ingqalasizinda, umakhi wokuklama zonke izendlalelo zesevisi ye-WEB... kanye nephrojekthi , ngesikhathi esifanayo, uthengisa amaphakethe amathathu emajarini ngosuku... Ngingathanda ukunamathela ku-RPC, ngoba... le protocol iwusizo kakhulu. Ngeke kudinge ulwazi olujulile lokuthi izinqolobane kanye nengqalasizinda zisebenza kanjani, kodwa kuzogxilisa umthuthukisi kuzingcingo ezilula neziqondakalayo ezinqubweni azidingayo. Ibhizinisi lizojabula.

Izicelo ze-RPC zithembeke kakhulu ngoba zingenza izicelo zenqwaba ngaphakathi kokwenziwe okukodwa

Le mpahla ye-RPC iyinzuzo eqinisekile, ngoba Kulula ukugcina isizindalwazi sihambisana. Kodwa nge-REST kuba nzima nakakhulu. Izicelo zingase zifike ngokungahambisani kumanodi angemuva ahlukene.

Lokhu β€œkubi” kwe-REST kuwuhlangothi olungaphenduki lwenzuzo yayo echazwe ngenhla - ikhono lokusebenzisa kahle zonke izinsiza zengqalasizinda. Uma ingqalasizinda iklanywe kabi, futhi ngisho nangaphezulu uma ukwakheka kwephrojekthi kanye nesizindalwazi ikakhulukazi kuklanywe kabi, khona-ke lokhu kuwubuhlungu obukhulu ngempela.

Kodwa ingabe izicelo ze-batch zithembekile njengoba zibonakala? Ake sibheke icala: sakha umsebenzisi, sicebisa iphrofayela yakhe ngencazelo ethile futhi simthumele i-SMS enemfihlo yokuqedela ukubhalisa. Labo. izingcingo ezintathu esicelweni seqoqo elilodwa.

I-JSON-RPC? Thatha i-REST ekhohlisayo

Ake sibheke umdwebo. Iveza ingqalasizinda enezinto ezitholakalayo eziphezulu. Kuneziteshi ezimbili ezizimele zokuxhumana ezinamasango e-SMS. Kodwa... sibonani? Lapho uthumela i-SMS, kwenzeka iphutha 503 - isevisi ayitholakali okwesikhashana. Ngoba Ukuthumela i-SMS kupakishwa ngenqwaba yesicelo, bese sonke isicelo sibuyiselwe emuva. Izenzo ku-DBMS zikhanseliwe. Iklayenti ithola iphutha.

I-try elandelayo ilotho. Kungenzeka ukuthi isicelo sizoshaya inodi efanayo ngokuphindaphindiwe sibuyisele iphutha, noma uzoba nenhlanhla futhi sizokwenziwa. Kodwa okubalulekile ukuthi okungenani kanye ingqalasizinda yethu isisebenzele ize. Bekunomthwalo, kodwa kungekho nzuzo.

Kulungile, ake sicabange ukuthi sizikhandle (!) futhi sacabanga ngale nketho lapho isicelo singaqedwa ngempumelelo. Futhi sizozama ukuqedela okunye futhi ngemva kwesikhathi esithile (Iyiphi? Ingabe ingaphambili linquma?). Kodwa ilotho ayizange ishintshe. Isicelo sokuthumela i-SMS sinethuba elingu-50/50 lokuhluleka futhi.

Vumelana, ohlangothini lweklayenti, isevisi ayibonakali ithembekile njengoba singathanda... kuthiwani nge-REST?

I-JSON-RPC? Thatha i-REST ekhohlisayo

I-REST isebenzisa umlingo we-HTTP futhi, kodwa manje ngamakhodi okuphendula. Uma kwenzeka iphutha elithi 503 esangweni le-SMS, indawo engemuva isakaza leli phutha kusilinganisi. I-balancer ithola leli phutha futhi ngaphandle kokuphula uxhumano neklayenti, ithumela isicelo kwenye i-node, ecubungula isicelo ngempumelelo. Labo. iklayenti ithola umphumela olindelekile, futhi ingqalasizinda iqinisekisa isihloko sayo esiphezulu sokuthi "kufinyeleleka kakhulu". Umsebenzisi ujabule.

Futhi futhi akukhona lokho kuphela. Ibhalansi ayigcinanga nje ngokuthola ikhodi yokuphendula engu-503. Uma uphendula, ngokwezinga, kuhle ukuthi unikeze le khodi ngesihloko esithi β€œPhinda uzame Ngemva”. Unhlokweni wenza kucace ku-balancer ukuthi akufanelekile ukuphazamisa le nodi kulo mzila isikhathi esithile. Futhi izicelo ezilandelayo zokuthumela i-SMS zizothunyelwa ngqo ku-node engenazo izinkinga ngesango le-SMS.

Njengoba singabona, ukwethembeka kwe-JSON-RPC kungaphezu kwamandla. Ngempela, kulula ukuhlela ukuvumelana kusizindalwazi. Kodwa umhlatshelo, kulokhu, kuyoba ukwethembeka kohlelo lonke.

Isiphetho siyefana kakhulu nesedlule. Uma ingqalasizinda ilula, ukuba sobala kwe-JSON-RPC ngokuqinisekile kuyinhlanganisela. Uma iphrojekthi ihilela ukutholakala okuphezulu ngomthwalo ophezulu, i-REST ibukeka njengesisombululo esilungile, nakuba siyinkimbinkimbi kakhulu.

Umkhawulo wokungena ku-REST uphansi

Ngicabanga ukuthi ukuhlaziya okungenhla, ukuphikisa inkolelo-mbono emisiwe mayelana ne-RPC, kubonise ngokusobala ukuthi umkhawulo wokungena ku-REST ngokungangabazeki uphakeme kune-RPC. Lokhu kungenxa yesidingo sokuqonda okujulile kokuthi i-HTTP isebenza kanjani, kanye nesidingo sokuba nolwazi olwanele mayelana nezinto ezikhona zengqalasizinda ezingasetshenziswa futhi okufanele zisetshenziswe kumaphrojekthi we-WEB.

Pho kungani abantu abaningi becabanga ukuthi i-REST izoba lula? Umbono wami siqu ukuthi lokhu kulula okubonakalayo kuvela ku-REST kuzibonakalisa. Labo. I-REST ayiyona iphrothokholi kodwa iwumqondo... I-REST ayinayo indinganiso, kuneziqondiso ezithile... I-REST ayinzima kune-HTTP. Inkululeko esobala nesiyaluyalu kuheha β€œabaculi abakhululekile”.

Kunjalo, i-REST ayiyona inkimbinkimbi kune-HTTP. Kodwa i-HTTP ngokwayo iyiphrothokholi eklanywe kahle efakazele ukubaluleka kwayo emashumini eminyaka. Uma kungekho ukuqonda okujulile kwe-HTTP ngokwayo, i-REST ayikwazi ukuhlulelwa.

Kodwa mayelana ne-RPC - ungakwazi. Kwanele ukuthatha ukucaciswa kwayo. Ngakho udinga JSON-RPC oyisiphukuphuku? Noma ingabe kuseyi-REST ekhohlisayo? Uyanquma.

Ngethemba ukuthi angizange ngikuchithele isikhathi.

Source: www.habr.com

Engeza amazwana