JSON-RPC? Yi hankali REST

JSON-RPC? Yi hankali REST

Na tabbata cewa kanun labarai ya haifar da amsa mai kyau - "da kyau, an sake farawa..." Amma bari in dauki hankalin ku na minti 5-10, kuma zan yi ƙoƙarin kada in kunyatar da tsammanin ku.

Tsarin labarin zai kasance kamar haka: an ɗauki bayanin stereotypical kuma an bayyana "yanayi" na bayyanar wannan stereotype. Ina fatan wannan zai ba ku damar kallon zaɓin tsarin musayar bayanai a cikin ayyukanku daga sabon kusurwa.

Don bayyana ainihin abin da RPC yake, Ina ba da shawarar yin la'akari da ma'auni JSON-RPC 2.0. Tare da REST babu haske. Kuma bai kamata ba. Duk abin da kuke buƙatar sani game da REST - ba shi da bambanci da shi HTTP.

Buƙatun RPC sun fi sauri da inganci saboda suna ba ku damar yin buƙatun tsari.

Ma'anar ita ce a cikin RPC zaka iya kiran hanyoyi da yawa lokaci guda a cikin buƙatu ɗaya. Misali, ƙirƙiri mai amfani, ƙara masa avatar kuma, a cikin buƙatun iri ɗaya, biyan kuɗi zuwa wasu batutuwa. Buƙata ɗaya kawai, kuma nawa fa'ida!

Lallai, idan kuna da kumburin baya ɗaya kawai, zai yi kama da sauri tare da buƙatun tsari. Saboda buƙatun REST guda uku zasu buƙaci ƙarin albarkatu sau uku daga kumburi ɗaya don kafa haɗin gwiwa.

JSON-RPC? Yi hankali REST

Lura cewa buƙatar farko game da REST dole ne ta dawo da ID ɗin mai amfani domin a yi buƙatun na gaba. Wanda kuma yayi mummunan tasiri ga sakamakon gaba ɗaya.

Amma ana iya samun irin waɗannan abubuwan more rayuwa a cikin mafita na cikin gida da Kasuwanci. A matsayin makoma ta ƙarshe, a cikin ƙananan ayyukan WEB. Amma cikakkun hanyoyin magance WEB, har ma da waɗanda ake kira HighLoad, ba su cancanci ginawa ba. Dole ne kayan aikin su su dace da ma'auni na babban samuwa da kaya. Kuma hoton yana canzawa.

JSON-RPC? Yi hankali REST

Tashoshin ayyukan ababen more rayuwa ƙarƙashin yanayi iri ɗaya ana yiwa alama a kore. Lura yadda RPC ke aiki yanzu. Buƙatar tana amfani da abubuwan more rayuwa akan ƙafa ɗaya kawai daga ma'auni zuwa baya. Yayin da har yanzu REST ke yin hasara a cikin buƙatun farko, yana daidaita lokacin ɓataccen lokaci ta amfani da dukkan kayan aikin.

Ya isa ya shiga cikin rubutun ba buƙatun biyu don wadata ba, amma, a ce, biyar ko goma ... da amsar tambayar "wanda ya ci nasara yanzu?" ya zama m.

Ina ba da shawarar a kalli matsalar. Hoton yana nuna yadda ake amfani da tashoshi na ababen more rayuwa, amma abubuwan more rayuwa ba su iyakance ga tashoshi ba. Wani muhimmin sashi na kayan aikin babban kaya shine caches. Yanzu bari mu sami wani nau'i na kayan aikin mai amfani. akai-akai. Bari mu ce sau 32.

JSON-RPC? Yi hankali REST

Dubi yadda kayan aikin RPC suka inganta sosai don biyan buƙatun babban kaya. Abun shine REST yana amfani da cikakken ikon ka'idar HTTP, sabanin RPC. A cikin zanen da ke sama, ana samun wannan ikon ta hanyar buƙatar - GET.

Hanyoyin HTTP, a tsakanin wasu abubuwa, suna da dabarun caching. Kuna iya samun su a cikin takaddun a HTTP. Don RPC, ana amfani da buƙatun POST, waɗanda ba a ɗauka su zama masu ƙarfi, wato, maimaita maimaita buƙatun POST ɗaya na iya dawo da sakamako daban-daban (misali, bayan an aika kowane sharhi, wani kwafin wannan sharhi zai bayyana) (source).

Sakamakon haka, RPC ba ta iya yin amfani da cache na kayan aiki yadda ya kamata. Wannan yana haifar da buƙatar "shigo da" caches software. Jadawalin yana nuna Redis a cikin wannan rawar. Ma'ajiyar software, bi da bi, tana buƙatar mai haɓakawa don ƙara ƙarin layin lamba da canje-canje masu ganuwa a cikin gine-gine.

Bari yanzu mu ƙidaya buƙatun nawa REST da RPC suka “haihu” a cikin abubuwan more rayuwa da ake la’akari?

Bukatu
akwatin sažo mai shiga
da baya
ku DBMS
zuwa cache mai laushi (Redis)
TOTAL

sauran
1 / 32 *
1
1
0
3 / 35

CPR
32
32
1
31
96

[*] a cikin mafi kyawun yanayin (idan ana amfani da cache na gida) buƙatun 1 (ɗaya!), A cikin mafi munin buƙatun masu shigowa 32.

Idan aka kwatanta da makirci na farko, bambancin yana da ban mamaki. Yanzu amfanin REST ya bayyana. Amma ina ba da shawarar kada a tsaya a nan. Abubuwan da aka haɓaka sun haɗa da CDN. Sau da yawa kuma yana magance batun magance hare-haren DDoS da DoS. Mun samu:

JSON-RPC? Yi hankali REST

Wannan shine inda abubuwa ke yin mummunan rauni ga RPC. RPC kawai ba ta da ikon ƙaddamar da aikin zuwa CDN. Za mu iya dogara ga tsarin kawai don magance hare-hare.

Shin zai yiwu a ƙare a nan? Kuma kuma, a'a. Hanyoyin HTTP, kamar yadda aka ambata a sama, suna da nasu "sihiri". Kuma ba tare da dalili ba ne ake amfani da hanyar GET sosai akan Intanet. Yi la'akari da cewa wannan hanyar tana iya samun dama ga guntun abun ciki, tana iya saita yanayin da abubuwan abubuwan more rayuwa zasu iya fassarawa kafin a canja wurin sarrafawa zuwa lambar ku, da sauransu. Duk wannan yana ba ku damar ƙirƙirar sassauƙa, kayan aikin sarrafawa waɗanda za su iya ɗaukar manyan buƙatun buƙatun gaske. Amma a cikin RPC wannan hanyar ... an yi watsi da ita.

Don haka me yasa labarin cewa buƙatun buƙatun (RPC) ya fi sauri da tsayi? Da kaina, ga alama a gare ni cewa yawancin ayyukan ba su isa matakin ci gaba ba inda REST ke iya nuna ƙarfinsa. Bugu da ƙari, a cikin ƙananan ayyuka, ya fi son nuna rauninsa.

Zaɓin REST ko RPC ba zaɓin son rai ba ne na mutum a cikin aikin. Dole ne wannan zaɓi ya dace da bukatun aikin. Idan aikin zai iya matse duk abin da gaske zai iya daga REST, kuma yana buƙatar shi da gaske, to REST zai zama kyakkyawan zaɓi.

Amma idan, don samun duk fa'idodin REST, kuna buƙatar hayar ƙwararrun ƙwararrun ƙwararrun aikin don haɓaka abubuwan more rayuwa da sauri, masu gudanarwa don sarrafa abubuwan more rayuwa, ƙirar ƙira don tsara duk matakan sabis na WEB… da aikin. , a lokaci guda, yana sayar da fakiti uku na margarine a rana ... Zan tsaya tare da RPC, saboda ... wannan yarjejeniya ta fi amfani. Ba zai buƙaci zurfin sanin yadda caches da kayan aikin ke aiki ba, amma zai mai da hankali ga mai haɓakawa akan kira mai sauƙi da fahimta ga hanyoyin da yake buƙata. Kasuwanci zai yi farin ciki.

Buƙatun RPC sun fi dogaro saboda suna iya aiwatar da buƙatun buƙatun a cikin ma'amala guda ɗaya

Wannan dukiya ta RPC tabbataccen fa'ida ce, saboda Yana da sauƙi don kiyaye bayanan daidaitattun bayanai. Amma tare da REST yana ƙara rikitarwa. Buƙatun na iya zuwa ba daidai ba zuwa nodes na baya daban-daban.

Wannan "rashin" na REST shine juzu'in fa'idarsa da aka bayyana a sama - ikon yin amfani da duk albarkatun ababen more rayuwa yadda ya kamata. Idan ba a tsara kayan aikin da kyau ba, har ma fiye da haka idan gine-ginen aikin da kuma bayanan musamman ba a tsara su ba, to wannan hakika babban ciwo ne.

Amma buƙatun buƙatun abin dogaro ne kamar yadda suke gani? Bari mu kalli shari'ar: muna ƙirƙira mai amfani, haɓaka bayanan martaba tare da wasu kwatance kuma aika masa SMS tare da sirri don kammala rajista. Wadancan. kira uku a buqata guda daya.

JSON-RPC? Yi hankali REST

Bari mu dubi zane. Yana gabatar da ababen more rayuwa tare da manyan abubuwan samuwa. Akwai tashoshi biyu masu zaman kansu tare da ƙofofin SMS. Amma... me muke gani? Lokacin aika SMS, kuskure 503 yana faruwa - babu sabis na ɗan lokaci. Domin Ana tattara aika aika SMS a cikin buƙatun buƙatun, sannan duk buƙatar dole ne a mayar da ita. An soke ayyuka a cikin DBMS. Abokin ciniki yana karɓar kuskure.

Gwaji na gaba shine irin caca. Ko dai buƙatar za ta sake buga wannan kumburi kuma ta sake dawo da kuskure, ko kuma za ku yi sa'a kuma za a aiwatar da shi. Amma babban abu shine aƙalla sau ɗaya kayan aikinmu sun riga sun yi aiki a banza. Akwai kaya, amma babu riba.

To, bari mu yi tunanin cewa mun takura kanmu (!) kuma mun yi tunanin zaɓin lokacin da za a iya kammala buƙatun cikin nasara. Kuma za mu yi ƙoƙari mu sake kammala sauran bayan ɗan lokaci (wanne? Shin gaba ya yanke shawara?). Amma irin caca ya kasance iri ɗaya. Buƙatun aika SMS yana da damar 50/50 na sake gazawa.

Yarda, daga bangaren abokin ciniki, sabis ɗin ba ze zama abin dogaro ba kamar yadda muke so… menene game da REST?

JSON-RPC? Yi hankali REST

REST yana sake amfani da sihirin HTTP, amma yanzu tare da lambobin amsawa. Lokacin da kuskure 503 ya faru akan ƙofar SMS, ƙarshen baya yana watsa wannan kuskuren zuwa ma'auni. Mai daidaitawa yana karɓar wannan kuskure kuma ba tare da karya haɗin gwiwa tare da abokin ciniki ba, aika buƙatar zuwa wani kumburi, wanda ya yi nasarar aiwatar da buƙatar. Wadancan. abokin ciniki yana karɓar sakamakon da ake sa ran, kuma kayan aikin sun tabbatar da babban lakabin "mai isa sosai". Mai amfani yana farin ciki.

Kuma ba haka ba ne kawai. Mai daidaitawa ba kawai karɓar lambar amsawa ta 503. Lokacin amsawa, bisa ga ma'auni, yana da kyau a samar da wannan lambar tare da taken "Sake gwadawa-Bayan". Kan kai yana bayyana wa ma'auni cewa bai dace da damun wannan kumburin akan wannan hanya na wani ƙayyadadden lokaci ba. Kuma buƙatun na gaba don aika SMS za a aika kai tsaye zuwa kumburin da ba shi da matsala tare da ƙofar SMS.

Kamar yadda muke iya gani, amincin JSON-RPC ya wuce gona da iri. Lalle ne, yana da sauƙi don tsara daidaito a cikin bayanai. Amma sadaukarwa, a cikin wannan yanayin, zai zama amincin tsarin gaba ɗaya.

Ƙarshen yana kama da na baya. Lokacin da kayan aikin ke da sauƙi, bayyanannen JSON-RPC tabbas ƙari ne. Idan aikin ya ƙunshi babban samuwa tare da babban nauyi, REST yayi kama da mafi daidai, kodayake mafi rikitarwa, bayani.

Matsakaicin shigarwa zuwa REST ya ragu

Ina tsammanin cewa binciken da aka yi a sama, yana lalata ƙa'idodin da aka kafa game da RPC, ya nuna a fili cewa ƙofar shiga REST babu shakka ya fi RPC. Wannan ya faru ne saboda buƙatar zurfin fahimtar yadda HTTP ke aiki, da kuma buƙatar samun isasshen ilimi game da abubuwan abubuwan more rayuwa waɗanda za su iya kuma ya kamata a yi amfani da su a cikin ayyukan WEB.

Don haka me yasa mutane da yawa suke tunanin cewa REST zai zama mafi sauƙi? Ra'ayina na sirri shine wannan bayyanannen sauƙi ya fito daga REST yana bayyana kansu. Wadancan. REST ba yarjejeniya ba ce amma ra'ayi ... REST bashi da ma'auni, akwai wasu jagororin ... REST bai fi HTTP rikitarwa ba. 'Yanci na bayyane da rashin zaman lafiya suna jawo "masu fasaha masu kyauta".

Tabbas, REST bai fi HTTP rikitarwa ba. Amma HTTP ita kanta ƙa'idar tsari ce mai kyau wacce ta tabbatar da ƙimarta tsawon shekaru da yawa. Idan babu zurfin fahimtar HTTP kanta, to REST ba za a iya yanke hukunci ba.

Amma game da RPC - zaka iya. Ya isa ya ɗauki ƙayyadaddun sa. Don haka kuna buƙata wawa JSON-RPC? Ko har yanzu yana da wahala REST? Ka yanke shawara.

Da gaske nake fatan ban bata lokacinku ba.

source: www.habr.com

Add a comment