Uhlaselo kwiisistim zangaphambili-ngasemva-zomva ezisivumela ukuba singene kwizicelo zomntu wesithathu

Ityhiliwe iinkcukacha zohlaselo olutsha kwiisayithi ezisebenzisa imodeli ye-front-end-back-end, njengalezo zisebenza ngothungelwano lokuhanjiswa komxholo, i-balancers yomthwalo okanye i-proxies. Uhlaselo luvumela, ngokuthumela izicelo ezithile, ukuba zingene kwimixholo yezinye izicelo eziqhutywe kumsonto omnye phakathi kwe-frontend kunye ne-backend. Indlela ecetywayo isetyenziswe ngempumelelo ukuququzelela uhlaselo olwenze ukuba kuthintelwe iiparamitha zokuqinisekisa zabasebenzisi benkonzo ye-PayPal, eyahlawula abaphandi malunga ne-40 lamawaka eedola njengenxalenye yenkqubo yokwazisa malunga nobukho bobuthathaka obungabhalwanga. Uhlaselo lukwasebenza nakwiindawo zisebenzisa inethiwekhi yokuhanjiswa komxholo we-Akamai.

I-crux yengxaki kukuba i-frontends kunye ne-backends zihlala zibonelela ngamanqanaba ahlukeneyo enkxaso yeprotocol ye-HTTP, kodwa ngexesha elifanayo lifake izicelo ezivela kubasebenzisi abahlukeneyo kwitshaneli eqhelekileyo. Ukudibanisa izicelo zokufumana i-frontend kunye nezicelo ze-backend processing, uxhulumaniso oluhlala ixesha elide lwe-TCP lusekwe, apho izicelo zomsebenzisi zithunyelwa khona, zihanjiswe kunye nekhonkco emva komnye, zihlukaniswe ngendlela ye-HTTP protocol. Ukwahlula izicelo, iiheader "Content-Length" (imisela ubungakanani bedatha kwisicelo) kunye "Ugqithiselo-Uguqulelo lweKhowudi: inqunyulwe"(ikuvumela ukuba udlulise idatha kumacandelo, ucacise iibhloko zobukhulu obahlukeneyo kwifomathi "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").

Ingxaki ivela ukuba i-frontend ixhasa kuphela "Ubude boMxholo" kodwa iyayihoxisa "Ukudluliselwa-Ukufakwa kweekhowudi: i-chunked" (umzekelo, i-Akamai CDN yenze oku) okanye ngokuchaseneyo. Ukuba i-Transfer-Encoding: i-chunked ixhaswa kumacala omabini, iimpawu zokuphunyezwa kwe-HTTP yokwahlulahlula okubhalwe ngasentla ingasetyenziselwa uhlaselo (umzekelo, xa isiphelo sangaphambili singayihoyi imigca efana ne- “Transfer-Encoding: xchunked”, “Transfer-Encoding: chunked ”, “Uguqulelo-UFakelo lweKhowudi” :[ithebhu] icutshiwe", "X: X[\n]Ugqithiselo-Uguqulelo lweKhowudi: chunked", "Uguqulelo-UFakelo lweeKhowudi[\n]: lunqunyulwe" okanye "Ugqithiso-UFakelo lweekhowudi : lunqunyulwe", kunye i-backend iqhubekeke ngempumelelo).

Kulo mzekelo, umhlaseli angathumela isicelo esiqulathe zombini "Ubude boMxholo" kunye ne "Transfer-Encoding: chunked" headers, kodwa ubungakanani obuku "Content-Length" abuhambelani nobukhulu betsheyini elidityanisiweyo. incinci kunexabiso lokwenyani. Ukuba i-frontend iqhubekisa phambili kwaye idlulisele isicelo ngokwe-"Content-Length" kunye ne-backend ilinda ukuba ibhloko igqitywe ngokusekelwe ku-"Transfer-Encoding: chunked", ngoko ke isiphelo sedatha esekelwe ku-"Transfer-Encoding: chunked" kumiselwa kwangaphambili kwaye umsila oseleyo wesicelo umhlaseli uya kuba ekuqaleni kwesicelo esilandelayo, okt. umhlaseli uya kukwazi ukuncamathelisa idatha engafanelekanga ekuqaleni kwesicelo somnye umntu esithunyelwe ngokulandelayo.

Uhlaselo kwiisistim zangaphambili-ngasemva-zomva ezisivumela ukuba singene kwizicelo zomntu wesithathu

Ukumisela ingxaki kwindibaniselwano esetyenzisiweyo ye-frontend-backend, ungathumela isicelo esinje nge-frontend:

POST / malunga ne-HTTP/1.1
Umamkeli: example.com
Ugqithiselo-Uguqulelo lweKhowudi: inqunyulwe
Umxholo-Ubude: 4

1
Z
Q

Ingxaki ikhona ukuba i-backend ayiqhubeki ngokukhawuleza isicelo kwaye ilinde ukufika kwebloko yokugqibela ye-zero yedatha ehlutshiweyo. Ukufumana ukujonga okupheleleyo ilungisiwe into eluncedo ekhethekileyo ekwavavanya iindlela ezinokwenzeka zokufihla i-"Transfer-Encoding: chunked" header ukusuka kumphambili.

Ukwenza uhlaselo lokwenyani kuxhomekeke kubuchule besiza esihlaselweyo, umzekelo, xa uhlasela isicelo sewebhu seTrello, unokutshintsha indawo yokuqala yesicelo (idatha ebambeleyo njenge “PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake”) kwaye uthumele umyalezo oquka isicelo sokuqala somsebenzisi wesithathu kunye neCookie yokuqinisekisa echazwe kuyo. Kuhlaselo kwi-saas-app.com, kuye kwabonakala ukuba kunokwenzeka ukufaka endaweni yekhowudi yeJavaScript kwimpendulo ngokuyifaka kwenye yeeparamitha zesicelo. Kuhlaselo lwe-redhat.com, umphathi wangaphakathi wasetyenziselwa ukuqondisa kwakhona kwiwebhusayithi yomhlaseli (isicelo sefom "POST /search?dest=../assets/idx?redir=//[imeyile ikhuselwe]/ HTTP/1.1").

Ukusebenzisa indlela yothungelwano lonikezelo lomxholo kwenze ukuba kube lula ukubuyisela indawo yesayithi eceliweyo ngokufaka endaweni yesihloko esithi “Inginginya:”. Uhlaselo lunokusetyenziselwa ukutyhefa imixholo yenkqubo ye-caching yomxholo kunye nokukhupha idatha eyimfihlo efihliweyo. Incopho yendlela yayiyintlangano yokuhlaselwa kwe-PayPal, eyenza kube lula ukuthintela amagama agqithisiweyo athunyelwe ngabasebenzisi ngexesha lokuqinisekisa (isicelo se-iframe salungiswa ukwenza iJavaScript kumxholo wekhasi le-paypal.com/us/gifts, kuba apho i-CSP (uMgaqo-nkqubo woKhuseleko lwesiqulatho) ayizange isetyenziswe).

Okubangela umdla kukuba, ngo-2005 kwakukho ecetywayo indlela esisiseko efana neyobuqhetseba ekuvumela ukuba uchithe idatha kwi-caching proxies (iTomcat, squid, mod_proxy) okanye udlule ukuvalwa komlilo ngokuchaza izicelo ezininzi ze-"GET" okanye "POST" ngaphakathi kweseshoni enye ye-HTTP.

umthombo: opennet.ru

Yongeza izimvo