Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Warbixintiisa, Andrey Borodin wuxuu kuu sheegi doonaa sida ay u tixgeliyeen waayo-aragnimada miisaanka PgBouncer marka ay naqshadeynayaan isku xirka isku xirka Odyssey, sida ay ugu rogeen wax soo saarka. Intaa waxaa dheer, waxaan ka wada hadli doonaa waxa hawlaha jiidiyaha aan jeclaan lahayn in aan ku aragno in versions cusub: waxaa muhiim noo ma aha oo kaliya in ay daboolaan baahidayada, laakiin si ay u horumariyaan bulshada isticmaala. Odyssey.

Video:

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Salaamu calaykum! Magacaygu waa Andrew.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Yandex, waxaan horumariyaa kaydka xogta il furan. Maantana waxaan haynaa mowduuc ku saabsan isku xirka isku xirka pooler.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Haddii aad taqaano sida loogu waco isku xirka pooler ee Ruushka, markaas ii sheeg. Runtii waxaan rabaa in aan helo erey farsamo oo wanaagsan oo ay tahay in lagu dhiso suugaanta farsamada.

Mawduuca waa mid aad u adag, sababtoo ah xog ururin badan oo isku xidhka isku xidhka ayaa ku dhex jira oo xataa uma baahnid inaad wax ka ogaato. Dabcan, waxaa jira meelo meel kasta ah, laakiin Postgres kuma shaqeyso habkaas. Oo is barbar socda (at HighLoad++ 2019) waxaa jira warbixin uu qoray Nikolai Samokhvalov oo ku saabsan dejinta su'aalaha Postgres. Oo sida aan u fahmay, dadka ayaa halkan yimid kuwaas oo mar horeba u habeeyey su'aalahooda si fiican, kuwanu waa dadka ay la kulmaan dhibaatooyin naadirka nidaamka ah ee la xidhiidha shabakada iyo ka faa'iidaysiga kheyraadka. Meelaha qaarkoodna waxa laga yaabaa inay aad u adag tahay macnaha in aanay dhibaatadu muuqan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Yandex wuxuu leeyahay Postgres. Adeegyo badan oo Yandex ah ayaa ku nool Yandex.Cloud. Waxaan haynaa dhowr petabytes oo xog ah oo soo saarta ugu yaraan hal milyan oo codsi ilbiriqsi kasta gudaha Postgres.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Oo waxaan ku siin koox si caddaalad ah caadiga ah adeegyada oo dhan - kani waa udubka aasaasiga ah ee ugu weyn ee noode, labada nuqul ee caadiga ah (synchronous iyo asynchronous), gurmad, cabirida codsiyada reading on nuqul ka.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Koox kastaa waa Postgres, kaas oo, marka lagu daro Postgres iyo nidaamyada la socodka, isku xidhka isku xidhka ayaa sidoo kale lagu rakibay. Isku xirka isku xirka waxaa loo isticmaalaa deyrka iyo ujeedadiisa ugu weyn.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waa maxay ujeedada ugu weyn ee isku xirka pooler?

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Postgres waxay qabataa qaabka habka marka ay la shaqaynayso kaydka xogta. Tani waxay ka dhigan tahay in hal xiriir uu yahay hal nidaam, hal Postgres backend. Oo dhabarkan dambe waxa ku jira khasnado badan oo kala duwan, kuwaas oo aad qaali u ah in lagu sameeyo xidhiidho kala duwan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Intaa waxaa dheer, koodka Postgres wuxuu leeyahay array loo yaqaan procArray. Waxay ka kooban tahay xogta aasaasiga ah ee ku saabsan isku xirka shabakada. Iyo ku dhawaad ​​​​dhammaan algorithms-ka farsamaynta procArray waxay leeyihiin kakanaanta toosan; waxay dulmaraan dhammaan isku xidhka shabakadaha. Waa meerto degdeg ah oo qurux badan, laakiin xidhiidho shabakadeed oo badan oo soo gala arrimuhu waxay helayaan xoogaa qaali ah. Markay arrimuhu aad qaali u noqdaan, waxaad ku dhamayn kartaa inaad bixiso qiimo aad u sarreeya isku xirka shabakadaha badan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaa jira 3 hab oo suurtagal ah:

  • Dhinaca codsiga.
  • Dhinaca database-ka.
  • Iyo inta u dhaxaysa, taas oo ah, dhammaan noocyada isku-dhafka.

Nasiib darro, barkadaha la dhisay ayaa hadda ku socda horumar. Saaxiibadayada PostgreSQL Professional ayaa tan inta badan sameeya. Marka ay soo bixi doonto way adag tahay in la saadaaliyo. Dhab ahaantiina, waxaan haynaa laba xal oo naqshadeeyaha uu ka dooran karo. Kuwani waa barkad dhinaca codsiga ah iyo barkadda wakiillada.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Barkadda dhinaca codsiga waa habka ugu fudud. Iyo ku dhawaad ​​​​dhammaan darawalada macmiilku waxay ku siinayaan hab: ku soo bandhig malaayiin xidhiidhadaada koodka ah sida dhawr iyo toban xidhiidh oo xogta kaydinta ah.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Dhibaatada soo baxda ayaa ah in mar gaar ah aad rabto inaad cabbirto dhabarka dambe, waxaad dooneysaa inaad u geyso mashiinno badan oo farshaxan ah.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Markaa waxaad ogaanaysaa inaad haysato dhawr aag oo kale oo laga heli karo, xarumo xogeed oo badan. Iyo habka isu geynta dhinaca macmiilka ayaa horseedaya tirooyin badan. Kuwa waaweyni waa ilaa 10 oo isku xidhid. Tani waa cidhifka si caadi ah u shaqayn kara.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Haddii aan ka hadalno proxy poolers, ka dibna waxaa jira laba poolers kuwaas oo samayn kara waxyaabo badan. Ma aha oo kaliya kuwa isku dubaridka ah. Waxay yihiin poolers + shaqeyn aad u qabow. Tani Pgpool и Crunchy-Proxy.

Laakiin, nasiib daro, qof walba uma baahna shaqadan dheeraadka ah. Waxayna keenaysaa xaqiiqda ah in koox-kooxayaashu ay taageeraan isku-darka fadhiga, tusaale ahaan hal macmiil oo soo galaya, hal macmiil oo baxaysa xogta xogta.

Tani maaha mid aad ugu haboon ujeedooyinkayaga, markaa waxaanu isticmaalnaa PgBouncer, kaas oo fulisa isku-darka macaamil ganacsi, i.e. xidhiidhada server-ka waxay ku habboon yihiin xidhiidhada macmiilka kaliya inta lagu jiro macaamilka.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Iyo culayska shaqadayada, tani waa run. Laakiin waxaa jira dhibaatooyin yar.Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Dhibaatooyinku waxay bilaabmaan markaad rabto inaad ogaato kalfadhi, sababtoo ah dhammaan xidhiidhada soo galayaa waa deegaanka. Qof kastaa wuxuu la yimid dib-u-celin, si uun bay u adkaanaysaa in la raadiyo fadhiga.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Dabcan waxaad isticmaali kartaa application_name_add_host. Tani waa hab dhanka Bouncer ah oo loogu daro ciwaanka IP-ga application_name. Laakin Application_name waxaa dejiyay xiriir dheeri ah.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Garaafkan, halka khadka jaalaha ahi yahay codsiyo dhab ah, iyo halka khadka buluuga ah uu yahay codsiyada u duulaya kaydka xogta. Farqigani waa si sax ah rakibidda app_name, kaas oo loo baahan yahay oo kaliya raadinta, laakiin ma aha bilaash.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Intaa waxaa dheer, gudaha Bouncer ma xaddidi kartid hal barkad, tusaale ahaan tirada isku xirka xogta ee isticmaale gaar ah, xog gaar ah.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Maxay tani keenaysaa? Waxaad haysataa adeeg la raray oo ku qoran C++ iyo meel u dhow adeeg yar oo ku yaal budada kaas oo aan ku samayn wax xun xogta xogta, laakiin darawalkiisu wuu waalan yahay. Waxay furaysaa 20 oo xiriir ah wax kasta oo kale ayaa sugi doona. Xitaa koodkaagu waa caadi.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan, dabcan, u qornay balastar yar oo loogu talagalay Bouncer oo ku daray goobtan, ie. xaddidida macaamiisha barkadda.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxa suurtogal ah in tan lagu sameeyo dhinaca Postgres, tusaale ahaan, xaddid doorarka kaydka tirada isku xidhka.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Laakin markaas waxaad luminaysaa awoodda aad ku fahmi karto sababta aadan wax xiriir ah ula lahayn server-ka. PgBouncer ma tuurto khalad isku xidhka, had iyo jeer waxay soo celisaa macluumaad isku mid ah. Mana fahmi kartid: waxaa laga yaabaa in eraygaaga sirta ah uu isbedelay, laga yaabee in database-ka uu hadda lumay, laga yaabee in wax khaldan yihiin. Laakiin ma jiro wax cudur ah. Haddii kalfadhi aan la dhisi karin, ma ogaan doontid sababta loo aasaasi waayay.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Meel cayiman, waxaad eegtaa garaafyada codsiga oo waxaad arkaysaa in codsigu aanu shaqaynayn.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Eeg xagga sare oo arag in Bouncer uu yahay hal xadhig. Tani waa isbeddel nolosha adeegga. Waxaad ogaatay in aad isku diyaarinaysay in aad cabirto kaydka xogta hal sano iyo badh gudaheed, oo aad u baahantahay in aad cabirto barkadaha.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan gaadhnay gabagabada inaan u baahanahay PgBouncers badan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

https://lwn.net/Articles/542629/

Bouncer wax yar baa la dhajiyay.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxayna u sameeyeen si dhowr Bouncers loo kiciyo iyadoo dib loo isticmaalayo dekedda TCP. Nidaamka qalliinka ayaa si toos ah u wareejinaya isku xirka TCP ee u dhexeeya iyaga oo isticmaalaya wareega-wareega.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Tani waxay u furan tahay macaamiisha, taasoo la macno ah inay u egtahay inaad leedahay hal Bouncer, laakiin waxaad leedahay kala go'a xiriirrada aan shaqayn ee u dhexeeya socodsiinta Bouncers.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaana laga yaabaa in wakhti cayiman aad ogaato in 3-dan Bouncers mid walba uu 100% ka cuno xudunta ubucda. Waxaad u baahan tahay wax yar oo Bouncers ah. Waa maxay sababtu?

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Sababtoo ah waxaad leedahay TLS. Waxaad leedahay xiriir qarsoodi ah Oo haddii aad ku calaamadiso Postgres TLS iyo la'aanteed, waxaad ogaan doontaa in tirada isku xirnaanta la aasaasay ay hoos u dhacayso ku dhawaad ​​​​laba amar oo baaxad leh oo sir ah oo karti leh, sababtoo ah gacan-qaadka TLS wuxuu cunaa ilaha CPU.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Xagga sarena waxaad ku arki kartaa dhowr hawlood oo cryptographic kuwaas oo la fuliyo marka ay jiraan mowjado xiriiro soo galaya. Maaddaama our aasaasiga ah ay u kala beddeli karaan aagagga la heli karo, mowjadaha isku xirka soo galaya waa xaalad caadi ah. Taasi waa, sabab qaar ka mid ah asaasiga hore ayaa la heli waayay, dhammaan culeyska waxaa loo diray xarun kale oo xog ah. Dhammaantood waxay u iman doonaan inay salaamaan TLS isku mar.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Tiro badan oo gacan-qaadka TLS ah ayaa laga yaabaa inaysan ku salaamin Bouncer, laakiin waxay tuujin doontaa cunaha. Wakhtiga go'a awgeed, mowjadaha isku xidhka soo gala waxa laga yaabaa inay noqdaan kuwo aan go'in. Haddii aad dib isugu daydo saldhigga iyada oo aan jibbaaran dib-u-dhac lahayn, kuma soo noqnoqon doonaan mawjad isku xidhan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Halkan waxaa ah tusaale 16 PgBouncers ah oo ku raran 16 kore 100%.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan nimid cascade PgBouncer. Tani waa qaabka ugu fiican ee lagu gaari karo culeyskeena Bouncer. Bouncers-kayaga dibadda waxaa loo isticmaalaa is-gacan-qaadka TCP, Bouncers-ka gudaha waxaa loo isticmaalaa isu-geyn dhab ah, si aysan u kala jajabin xiriirrada dibadda aad u badan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Qaabayntan, dib u bilaabasho siman ayaa suurtogal ah. Waxaad dib u bilaabi kartaa dhammaan kuwan 18 Bouncers mid mid. Laakin ilaalinta qaabeynta noocaas ah waa arrin adag. Sysadmins, DevOps, iyo dadka dhab ahaantii mas'uulka ka ah serfarkan aad uguma farxi doonaan habaynkan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxay u egtahay in dhammaan horumarinteena loo dallaci karo il furan, laakiin Bouncer si fiican looma taageero. Tusaale ahaan, awoodda lagu socodsiiyo dhowr PgBouncers hal deked ayaa la go'aamiyay bil ka hor. Waxa jiray codsi jiidasho leh sifadan dhawr sano ka hor.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

https://www.postgresql.org/docs/current/libpq-cancel.html

https://github.com/pgbouncer/pgbouncer/pull/79

Ama hal tusaale oo kale. Gudaha Postgres, waxaad burin kartaa codsiga socda adiga oo u diraya sirta xiriir ka duwan iyada oo aan loo baahnayn cadeyn. Laakiin macaamiisha qaar ayaa si fudud u soo dira dib u habeynta TCP, ie. waxay jebiyaan isku xirka shabakada. Muxuu samayn doonaa Bouncer? Waxba ma yeeli doono. Way sii wadi doontaa fulinta codsiga Haddii aad heshay tiro badan oo xiriiro ah kuwaas oo abuuray xog ururin leh codsiyo yaryar, ka dibna si fudud u gooynta xidhiidhka Bouncer kuma filna; waxaad sidoo kale u baahan tahay inaad buuxiso codsiyada ku socda kaydka.

Tan waa la dhajiyay oo dhibaatadan weli laguma biirin Bouncer's korka socodka.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Oo sidaas daraaddeed waxaan ku soo gunaanaday in aan u baahannahay isku xidhka noo gaar ah, kaas oo la horumarin doono, la dhejin doona, taas oo dhibaatooyinka si degdeg ah loo sixi karo oo, dabcan, ay tahay in ay noqdaan kuwo badan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan u dhignay multithreading sida hawsha ugu weyn. Waxaan u baahanahay inaan si fiican u maareyno mowjadaha isku xirka TLS ee soo socda.

Si tan loo sameeyo, waxay ahayd inaan horumarino maktabad gaar ah oo la yiraahdo Machinarium, taas oo loogu talagalay in lagu qeexo xaaladaha mishiinka ee isku xirka shabakada sida kood isku xiga. Haddii aad eegto koodhka isha libpq, waxaad arki doontaa wicitaano aad u adag oo ku soo celin kara natiijada oo ku odhan karta, "Hadhow i soo wac. Hadda waxaan haystaa IO hadda, laakiin marka IO-gu baxo waxaan yeelan doonaa culeys ku saabsan processor-ka. Tanina waa nidaam heerar badan ah. Isgaadhsiinta shabakada waxaa badanaa lagu sifeeyaa mishiinka dawladda. Sharciyo badan sida "Haddii aan hore u helay madaxa baakidh ee cabbirka N, hadda waxaan sugayaa N bytes," "Haddii aan soo diray xirmo SYNC ah, hadda waxaan sugayaa baakidh ay ku jiraan xogta badan ee natiijada." Natiijadu waa kood aad u adag, oo ka soo horjeeda, sida haddii majaajilada loo beddelay sawir-qaadis. Waxaan u samaynay si halkii mashiinka gobolka, barnaamijiyuhu wuxuu qeexayaa jidka ugu muhiimsan ee isdhexgalka ee qaabka koodka caadiga ah ee muhiimka ah. Kaliya waa in koodhkan lama huraanka ah aad u baahan tahay inaad geliso meelaha ay isku xigxiga fulinta u baahan tahay in la joojiyo adoo sugaya xogta shabakada, u gudbinta macnaha fulinta ee coroutine kale (dufan cagaaran). Habkani wuxuu la mid yahay in aan qorno dariiqa la filayo ee maze ee isku xigta, ka dibna ku darso laamo.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Natiijo ahaan, waxaan haynaa hal dun oo TCP aqbasho oo wareega wareega u gudbisa xiriirka TPC shaqaale badan.

Xaaladdan oo kale, xiriir kasta oo macmiil ah ayaa had iyo jeer ku shaqeeya hal processor. Tani waxay kuu ogolaaneysaa inaad ka dhigto mid saaxiibtinimo leh.

Intaa waxaa dheer, waxaan wax yar hagaajinnay ururinta baakadaha yaryar ee hal baakidh weyn si aan u nafiso xirmada nidaamka TCP.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Intaa waxaa dheer, waxaan wanaajinay isu-ururinta macaamilka iyadoo la tixraacayo in Odyssey, marka la habeeyo, ay soo diri karto CANCEL iyo ROLLBACK haddii ay dhacdo isku xirka shabakadu guuldareysto, tusaale ahaan haddii qofna uusan sugin codsi, Odyssey waxay u sheegi doontaa database-ka inuusan isku dayin inuu isku dayo inuu sameeyo. buuxi codsiga laga yaabo in ay ku khasaariyaan kheyraadka qaaliga ah.

Mar kasta oo ay suurtogal tahay, waxaanu ilaalinaa isku xidhka isla macmiilka. Tani waxay ka fogaanaysaa in dib loo rakibo application_name_add_host. Haddii ay taasi suurtogal tahay, markaa ma aha inaan dib u dajinno cabbirrada loo baahan yahay ogaanshaha.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan ka shaqeynaa danaha Yandex.Cloud. Oo haddii aad isticmaasho PostgreSQL oo la maareeyey oo aad ku rakiban tahay iskuxiraha isku xirka, waxaad abuuri kartaa dib u habeyn macquul ah oo dibadda ah, tusaale ahaan, naga tag, haddii aad rabto, adoo isticmaalaya ku celcelin macquul ah. Bouncer ma sii deyn doono qulqulka taranka macquulka ah ee dibadda.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Tani waa tusaale dejinta ku celcelinta macquulka ah.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Intaa waxa dheer, waxaanu taageero u haysanaa dibeda u taranka jidhka. Daruuraha, dabcan, tani waa wax aan macquul aheyn, sababtoo ah markaa kooxdu waxay ku siin doontaa macluumaad badan oo ku saabsan nafteeda. Laakin rakibaadaada, haddii aad u baahan tahay ku celcelinta jirka iyada oo loo marayo isku xirka isku xirka Odyssey, tani waa suurtagal.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Odyssey waxay si buuxda ula socotaa PgBouncer. Waxaan haynaa console isku mid ah oo ku shaqeeya ku dhawaad ​​dhammaan amarrada isku midka ah. Haddii ay wax maqan yihiin, soo dir codsi jiid, ama ugu yaraan arrin ku saabsan GitHub, waxaanan dhamaystiri doonaa amarrada lagama maarmaanka ah. Laakiin waxaan horeyba u haysanay shaqada ugu weyn ee PgBouncer console.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Iyo, dabcan, waxaan leenahay khalad gudbinta. Waxaan soo celin doonaa qaladka uu sheegay xog-ururinta Waxaad heli doontaa macluumaad ku saabsan sababta aan lagugu darin kaydka xogta, oo ma aha oo kaliya inaan lagu darin.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Habkani waa naafo haddii aad u baahato 100% ku habboon PgBouncer. Waxaan u dhaqmi karnaa si la mid ah Bouncer, kaliya si aan u joogno dhinaca nabdoon.

Horumarinta

Dhowr eray oo ku saabsan koodhka isha Odyssey.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/66

Tusaale ahaan, waxaa jira amarro "Hakis/Resume". Caadi ahaan waxaa loo isticmaalaa in lagu cusboonaysiiyo xogta xogta. Haddii aad u baahan tahay inaad cusboonaysiiso Postgres, markaa waxaad ku joojin kartaa isku xidhka isku xidhka, samee pg_upgrade, ka dib dib u bilow. Oo dhinaca macmiilka waxa ay u ekaan doontaa in xog ururintu si fudud u gaabinayso. Shaqadan waxaa noo keenay dad ka tirsan bulshada. Wali lama barafaysan, laakiin dhawaan wax walba way ahaan doonaan. (Horta waa barafoobay)

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - mar hore barafoobay

Intaa waxaa dheer, mid ka mid ah sifooyinka cusub ee PgBouncer waa taageerada SCRAM Authentication, kaas oo sidoo kale noo keenay qof aan ka shaqeynin Yandex.Cloud. Labaduba waa hawlkarnimo adag oo muhiim ah.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Sidaa darteed, waxaan jeclaan lahaa inaan kuu sheego waxa Odyssey ka samaysan yahay, haddii aad rabto inaad hadda qorto kood yar.

Waxaad haysataa saldhigga isha Odyssey, kaas oo ku tiirsan laba maktabadood oo waaweyn. Maktabadda Kiwi waa hirgelinta nidaamka fariinta Postgres. Taasi waa, proto hooyo 3 ee Postgres waa farriimaha caadiga ah ee darafyada hore iyo kuwa dambe ay is dhaafsan karaan. Waxaa laga hirgeliyaa maktabadda Kiwi.

Maktabadda Machinarium waa maktabad hirgelinta dunta. Qayb yar oo ka mid ah Machinarium-kan ayaa ku qoran luqadda kulanka. Laakiin ha ka welwelin, waxaa jira 15 sadar oo keliya.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Dhismaha Odyssey. Waxaa jira mishiin weyn oo coroutines ay ku shaqeeyaan. Mashiinkani waxa uu fuliyaa aqbalaadda isku xidhka TCP ee soo socda oo u qaybiya shaqaalaha.

Maamule dhowr macaamiil ah ayaa ka dhex shaqayn kara hal shaqaale. Dunta ugu weyn waxay sidoo kale waddaa konsole iyo habaynta hawlaha crone si loo tirtiro isku xirka aan hadda looga baahnayn barkadda.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Odyssey waxa lagu tijaabiyaa iyada oo la isticmaalayo suunka imtixaanka Postgres ee caadiga ah. Waxaan kaliya ku socodsiineynaa hubinta rakibaadda iyada oo loo marayo Bouncer iyo iyada oo loo marayo Odyssey, waxaan helnaa div null ah. Waxaa jira dhowr imtixaan oo la xiriira qaabeynta taariikhda oo aan si sax ah ugu gudbin Bouncer iyo Odyssey.

Intaa waxaa dheer, waxaa jira darawallo badan oo leh imtixaan u gaar ah. Oo waxaan u isticmaalnaa imtixaanadooda si aan u tijaabino Odyssey.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Intaa waxaa dheer, sababtoo ah qaabeynta cascade, waa inaan tijaabinaa xirmo kala duwan: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey si loo hubiyo in haddii Odyssey ay ku dhammaatay mid ka mid ah qaybaha cascade, waxay sidoo kale weli shaqeyneysaa. sidaan filayno.

Rake

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan u isticmaalnaa Odyssey xagga wax soo saarka. Caddaaladna ma ahaan lahayd haddii aan idhaahdo wax walba way shaqeeyaan. Maya, taasi waa, haa, laakiin had iyo jeer maaha. Tusaale ahaan, wax soo saarka wax kasta oo kaliya ayaa shaqeeyay, ka dib saaxiibadayada PostgreSQL Professional ayaa yimi oo waxay sheegeen in aanu helnay qulqulka xusuusta. Runtii waxay ahaayeen, waanu saxnay. Laakiin way fududayd.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Markaa waxaanu ogaanay in isku xidhaha isku xidhka uu leeyahay xidhidhyada TLS ee soo socda iyo xidhiidhada TLS ee baxaya. Xidhiidhku wuxuu u baahan yahay shahaadooyin macmiilka iyo shahaadooyin server-ka.

Shahaadooyinka server-ka Bouncer iyo Odyssey waxaa dib u akhriya kombuyuutarkooda, laakiin shahaadooyinka macmiilku uma baahna in dib looga akhriyo pcache, sababtoo ah Odyssey-kayaga la cabbiri karo ayaa ugu dambeyntii bilaabaya waxqabadka nidaamka akhrinta shahaadadan. Tani waxay nagu noqotay lama filaan, sababtoo ah waqti dheer kuma qaadan inuu iska caabiyo. Markii hore si toos ah ayay u miisaamaysay, laakiin 20 oo xidhiidh isku mar ah ka dib dhibaatadani way is muujisay.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Habka Xaqiijinta Pluggable waa awoodda lagu xaqiijin karo iyada oo la adeegsanayo qalabka Lunux ee ku dhex jira. Gudaha PgBouncer waxaa loo hirgeliyay si ay u jirto dun gaar ah oo laga sugayo jawaabta PAM waxaana jira dunta ugu weyn ee PgBouncer kaas oo u adeega xidhiidhka hadda jira oo waydiisan kara inay ku noolaadaan dunta PAM.

Tan uma aan hirgelin hal sabab oo fudud. Waxaan leenahay dun badan. Maxaynu tan ugu baahanahay?

Tani waxay ugu dambeyntii abuuri kartaa dhibaatooyin taas oo ah haddii aad haysato aqoonsiga PAM iyo aqoonsiga aan-PAM, markaa mowjadaha weyn ee aqoonsiga PAM ayaa si weyn dib u dhigi kara aqoonsiga aan PAM ahayn. Tani waa mid ka mid ah waxyaabaha aynaan hagaajin. Laakiin haddii aad rabto inaad hagaajiso, waad samayn kartaa tan.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Qaadasho kale ayaa ahayd in aan haysano hal dun oo aqbala dhammaan xidhiidhada soo galaya. Kadibna waxaa loo wareejiyaa barkada shaqaalaha, halkaas oo gacan qaadka TLS uu ka dhici doono.

Gunta hoose, haddii aad leedahay mowjad isku xidhan oo ah 20 oo xidhiidho shabakadeed, dhammaantood waa la aqbali doonaa. Iyo dhinaca macmiilka libpq wuxuu bilaabi doonaa ka warbixinta waqtiyada. Sida caadiga ah waxay u muuqataa inay tahay 000 ilbiriqsi.

Haddii dhammaantood aysan isku mar geli karin kaydka xogta, markaa ma geli karaan kaydka xogta, sababtoo ah waxaas oo dhan waxaa dabooli kara isku-dayga aan jibbaarada ahayn.

Waxaan gaadhnay gabagabada in aan ka koobiyaynay nidaamka PgBouncer halkan iyadoo xaqiiqda ah in aanu xakameynay tirada isku xirka TCP ee aan aqbalnay.

Haddii aan aragno inaan aqbaleyno isku xirka, laakiin ugu dambeyntii ma haystaan ​​waqti ay ku gacan qaadaan, waxaan gelineynaa saf si aysan u khasaarin ilaha CPU. Tani waxay keenaysaa xaqiiqda ah in gacan-qaadka isku mar aan la samayn karin dhammaan xidhiidhada yimid. Laakiin ugu yaraan qof ayaa geli doona kaydka xogta, xitaa haddii culaysku aad u culus yahay.

Roadmap

Maxaad jeclaan lahayd inaad mustaqbalka ku aragto Odyssey? Maxaan diyaar u nahay inaan horumarino nafteena maxaan ka fileynaa bulshada?

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Laga bilaabo Ogosto 2019.

Tani waa sida uu u ekaa khariidadda waddada Odyssey bishii Agoosto:

  • Waxaan rabnay xaqiijinta SCRAM iyo PAM.
  • Waxaan rabnay inaan u gudbinno codsiyada akhriska ee heeganka.
  • Waxaan jeclaan lahaa in online dib loo bilaabo
  • Iyo kartida uu ku hakiyo server-ka.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Khariidaddan kala badh ka mid ah waa la dhammaystiray, annagu nama dhammaystirin. Tanina way wanaagsan tahay. Markaa wixii dhiman aan ka tashano oo wax badan ku darno.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Ku saabsan su'aalaha akhris-kaliya ee hore u socda ee heeganka? Waxaan haynaa nuqulo si fudud u kululayn doona hawada iyada oo aan la fulin codsiyada. Waxaan u baahanahay inay bixiyaan guuldarreysiga iyo beddelka. Haddii ay dhacdo dhibaatooyin mid ka mid ah xarumaha xogta, waxaan jeclaan lahaa in aan ku mashquulo qaar ka mid ah shaqo waxtar leh. Sababtoo ah ma habayn karno isla processor-yada dhexe, isla xusuusta si ka duwan, sababtoo ah haddii kale ku celcelintu ma shaqeyn doonto.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Mabda 'ahaan, Postgres, laga bilaabo 10, waxaa suurtagal ah in la qeexo session_attrs marka la isku xirayo. Waxaad ku qori kartaa dhammaan martigeliyaha kaydka xogta ee xidhiidhka oo waxaad odhan kartaa sababta aad u galayso kaydka: qor ama akhri kaliya. Darawalka laftiisa ayaa dooran doona martigeliyaha ugu horreeya ee liiska uu jecel yahay, kaas oo buuxinaya shuruudaha session_attrs.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Laakiin dhibaatada habkan ayaa ah in aysan xakameynin dib-u-celinta taranka. Waxaa laga yaabaa inaad haysato qayb nuqul ah oo dib u dhacay wakhti aan la aqbali karin oo adeegaaga ah. Si aan awood ugu siinno fulinta su'aalaha akhriska ee nuqul ka mid ah si buuxda, waxaan dhab ahaan u baahannahay inaan taageerno awoodda Odyssey ee ah inuusan ordi karin marka aan la akhrin karin.

Odyssey waa in ay u tagtaa kaydka xogta waqti ka waqti oo ay weyddiisato fogaanta ku celcelinta ee aasaasiga ah. Oo haddii ay gaadhay qiimaha xadka, ha u oggolaan codsiyada cusub ee kaydka, u sheeg macmiilka inay u baahan tahay inay dib u bilowdo isku xidhka iyo, suurtogal ahaan, dooro martigeliyaha kale si uu u fuliyo codsiyada. Tani waxay u oggolaan doontaa kaydinta xogta inay si dhakhso ah u soo celiso dib u dhaca ku-noqoshada oo ay mar kale soo noqoto si ay uga jawaabto codsi.

Way adag tahay in la bixiyo waqti xaddidan oo lagu hirgelinayo, sababtoo ah waa il furan. Laakiin, waxaan rajeynayaa, maaha 2,5 sano sida asxaabtayda PgBouncer. Tani waa astaanta aan jeclaan lahaa inaan ku arko Odyssey.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Bulshada dhexdeeda, dadku waxay waydiiyeen taageerada qoraalka la diyaariyay. Hadda waxaad ku abuuri kartaa qoraal diyaarsan laba siyaabood. Marka hore, waxaad fulin kartaa amarka SQL, oo ​​ah "diyaariyey". Si aan u fahamno amarkan SQL, waxaan u baahanahay inaan barano fahamka SQL ee dhinaca Bouncer. Tani waxay noqon kartaa xad-dhaaf ah, sababtoo ah waa xad-dhaaf ah, maadaama aan u baahanahay baarayaasha oo dhan. Ma kala saari karno amar kasta oo SQL ah.

Laakiin waxaa jira bayaan diyaarsan oo ah heerka hab-maamuuska fariinta ee borotokoolka 3. Waana meesha marka xogta la samaynayo bayaan la diyaariyey ay ku yimaadaan qaab habaysan. Oo waxaan taageeri karnaa fahamka in qaar ka mid ah isku xirka server-ka macmiilku uu weydiistay inuu abuuro odhaahyo diyaarsan. Xitaa haddii macaamilku xiran yahay, waxaan weli u baahanahay inaan sii wadno xiriirka u dhexeeya serverka iyo macmiilka.

Laakiin halkan farqiga wada hadalka ayaa soo baxaya, sababtoo ah qof ayaa sheegaya in aad u baahan tahay inaad fahamto nooca odhaahyada diyaarsan ee macmiilku abuuray oo la wadaago xidhiidhka serverka ee u dhexeeya dhammaan macaamiisha abuuray xidhiidhkan server, i.e., oo abuuray bayaan la diyaariyey.

Andres Freund ayaa sheegay in haddii macmiilku kuu yimaado kaas oo horey u sameeyay bayaan la diyaariyey oo ku saabsan isku xirka server kale, ka dibna isaga u samee. Laakiin waxa ay u muuqataa wax yar khalad ah in la fuliyo su'aalaha database ee halkii macmiilka, laakiin laga soo bilaabo aragtida horumariyaha oo qoraya borotokoolka ee la falgalka database ah, waxa ay noqon doontaa ku haboon haddii uu si fudud la siiyo xiriir shabakad taas oo waxaa jira su'aal la diyaariyay.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Iyo hal sifo oo kale oo aan u baahanahay in aan hirgelino. Hadda waxaan haynaa la socodka ku habboon PgBouncer. Waxaan soo celin karnaa celceliska wakhtiga fulinta weydiinta. Laakiin celceliska wakhtiga waa celceliska heerkulka cisbitaalka: qaar waa qabow, qaarna way diiran yihiin - celcelis ahaan, qof kastaa wuu caafimaad qabaa. Run maaha.

Waxaan u baahanahay inaan hirgelino taageerada boqolleyda taasoo tilmaamaysa inay jiraan su'aalo gaabis ah oo dhuminaya kheyraadka oo ka dhigaya la socodka mid la aqbali karo.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxa ugu muhiimsan waa in aan rabo nooca 1.0 (version 1.1 mar hore ayaa la sii daayay). Xaqiiqdu waxay tahay in Odyssey uu hadda ku jiro nooca 1.0rc, i.e. musharaxa sii deynta. Dhammaan dhibaatooyinka aan ku taxayna waxa lagu hagaajiyay isla nooc isku mid ah, marka laga reebo daadinta xusuusta.

Waa maxay nooca 1.0 nooga dhigan tahay? Waxaan Odyssey u daadinaynaa saldhigyadayada. Waxay horeyba ugu shaqeysay keydka macluumaadka, laakiin marka ay gaarto 1 codsi ilbiriqsi kasta, markaa waxaan dhihi karnaa kani waa nooca sii deynta oo kani waa nooca loo yaqaan 000.

Dhowr qof oo bulshada ka mid ah ayaa codsaday nooca 1.0 in ay ku jiraan hakad iyo SCRAM. Laakiin tani waxay ka dhigan tahay inaan u baahan doono inaan u soo saarno nooca xiga si loo soo saaro, sababtoo ah SCRAM iyo joojinta midna weli lama dilin. Laakiin, waxay u badan tahay, arrintan si degdeg ah ayaa loo xallin doonaa.

Roadmap-ka Odyssey: maxaa kale oo aan ka rabnaa iskuxiraha isku xirka. Andrey Borodin (2019)

Waxaan sugayaa codsigaaga jiidid Waxaan sidoo kale jeclaan lahaa inaan maqlo dhibaatooyinka aad ku haysato Bouncer. Aynu ka wada hadalno. Waxaa laga yaabaa inaan hirgelin karno qaar ka mid ah hawlaha aad u baahan tahay.

Qaybtaydii waa dhammaatay, waxaan jeclaan lahaa inaan ku dhegeysto. Mahadsanid!

Su'aalahaada

Haddii aan dejiyo codsigeyga magacayga, si sax ah miyaa loo soo gudbinayaa, oo ay ku jirto isu geynta wax kala iibsiga ee Odyssey?

Odyssey ama Bouncer?

Odyssey. Bouncer waa lagu tuuray.

Waxaan samayn doonaa set

Oo haddii xidhiidhkayga dhabta ahi uu ku dhufto xidhiidhada kale, ma la kala qaadi doonaa?

Waxaan samayn doonaa go'an dhammaan xuduudaha ku qoran liiska. Ma sheegi karo haddii application_name uu ku jiro liiskan. Waxaan u maleynayaa inaan ku arkay isaga. Waxaan dejin doonaa dhammaan xuduudaha isku mid ah. Hal codsi, set wuxuu sameyn doonaa wax kasta oo uu ku rakibay macmiilku inta lagu jiro bilowga.

Waad ku mahadsan tahay, Andrey, warbixinta! Warbixin wanaagsan! Waan ku faraxsanahay in Odyssey uu si degdeg ah oo degdeg ah u kobcayo daqiiqad kasta. Waxaan rabaa inaan sidan ku sii socdo Waxaan mar hore ku weydiinnay inaad leedahay isku xirka xogta-ilo badan si Odyssey ay isku mar ugu xirto xog uruurin kala duwan, ie addoon sayid ah, ka dibna si toos ah ugu xirto sayid cusub kadib fashilka.

Haa, waxaan u muuqdaa inaan xasuusto doodan. Hadda waxaa jira dhawr kayd. Laakiin ma jiro wax kala beddel ah oo dhexdooda ah. Dhinacayaga, waa in aan ra'yi ururin server-ka in uu weli nool yahay oo aan fahanno in guuldarradu dhacday, yaa soo wici doona pg_recovery. Waxaan haystaa hab istaandar ah oo faham ah oo aynaan u iman sayidkii. Oo ma inaan si uun uga fahanno khaladaadka mise waa maxay? Yacni, fikraddu waa mid xiiso leh, waa laga doodayaa. Qor faallooyin badan. Haddii aad leedahay shaqaale yaqaan C, markaa taasi waa wax weyn.

Arrinta ku saabsan isku-buufinta nuqullada sidoo kale waa mid xiiso noo leh, sababtoo ah waxaan rabnaa inaan ka dhigno qaadashada kutlada la soo koobay mid fudud sida ugu macquulsan horumariyeyaasha arjiga. Laakiin halkan waxaan jeclaan lahaa faallooyin badan, i.e. sida saxda ah ee loo sameeyo, sida loo sameeyo si fiican.

Su'aashu waxay sidoo kale ku saabsan tahay nuqullada. Waxaa soo baxday in aad leedahay sayid iyo dhowr nuqul. Way caddahay in ay u aadaan nuqulka marar badan marka loo eego sayidkiisa xiriirinta, sababtoo ah waxay yeelan karaan kala duwanaansho. Waxaad sheegtay in farqiga u dhexeeya xogta uu noqon karo mid aan ku qancin ganacsigaaga oo aadan tagi doonin ilaa laga soo celiyo. Isla mar ahaantaana, haddii aanad halkaas tagin wakhti dheer, ka dibna aad bilowday, markaa xogta loo baahan yahay isla markiiba lama heli doono. Taasi waa, haddii aan si joogto ah u aado sayidkii, ka dibna kaydka halkaas ku yaal waa la diiriyaa, laakiin nuqul ka mid ah kaydku wuu yara yaraa.

Haa waa run pcache-ku ma lahaan doono xogta blocks ee aad rabto, kaydka dhabta ah ma lahaan doono macluumaadka ku saabsan miisaska aad rabto, qorshayaashu ma yeelan doonaan su'aalo la falanqeeyay, ma jiri doonaan wax gabi ahaanba.

Oo markaad haysato nooc ka mid ah kutlada, oo aad ku darto nuqul cusub halkaas, ka dibna inta uu bilaabmayo, wax walba waa xun yihiin, tusaale ahaan, waxay kordhisaa kaydkeeda.

Waxaan helay fikradda. Habka saxda ah ayaa noqon doona in marka hore la sameeyo boqolkiiba yar oo su'aalo ah nuqul ka mid ah, taas oo kor u qaadaysa kaydinta. Qiyaastii, waxaan leenahay shuruud ah inaan ka dambayno sayidkii wax aan ka badnayn 10 ilbiriqsi. Xaaladdan kuma jiraan hal mowjad, laakiin si habsami leh macaamiisha qaarkood.

Haa, kordhi miisaanka

Tani waa fikrad wanaagsan. Laakiin marka hore waxaan u baahanahay inaan dhaqan galno xiritaankan. Marka hore waxaan u baahanahay inaan damino, ka dibna waxaan ka fekereynaa sida loo shido. Tani waa sifo aad u fiican oo si habsami leh u suurtagelinaysa.

Nginx ayaa leh doorashadan slowly start kutlada loogu talagalay server-ka. Oo si tartiib tartiib ah ayuu u kordhiyaa culeyska.

Haa, fikrad fiican, waxaan isku dayi doonaa marka aan u soo dhawaado.

Source: www.habr.com

Add a comment