'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Tlalehong ea hae, Andrey Borodin o tla u bolella kamoo ba ileng ba nahanela phihlelo ea ho fokotsa PgBouncer ha ba ntse ba theha mochine oa ho kopanya. Odyssey, ha ba ntse ba e phutholla ho hlahisa. Ntle le moo, re tla tšohla hore na ke mesebetsi efe ea sehula eo re ka ratang ho e bona liphetolelong tse ncha: ho bohlokoa ho rona eseng feela ho fihlela litlhoko tsa rona, empa ho nts'etsapele sechaba sa basebelisi. Odyssey.

Video:

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Lumelang bohle! Lebitso la ka ke Andrew.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho Yandex, ke hlahisa li-database tsa mohloli o bulehileng. 'Me kajeno re na le sehlooho se mabapi le likhokahano tsa pooler.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Haeba u tseba ho letsetsa pooler ea khokahano ka Serussia, joale mpolelle. Ke hlile ke batla ho fumana lentsoe le letle la tekheniki le lokelang ho theoa ho lingoliloeng tsa tekheniki.

Sehlooho se rarahane haholo, hobane litsing tse ngata tsa polokelo ea marang-rang sehokelo sa khokahano se hahelletsoe 'me ha ho hlokahale hore u tsebe ka sona. Ehlile, ho na le litlhophiso tse ling hohle, empa ho Postgres ha e sebetse joalo. 'Me ka ho tšoana (ho HighLoad ++ 2019) ho na le tlaleho ea Nikolai Samokhvalov mabapi le ho theha lipotso ho Postgres. 'Me ha ke ntse ke e utloisisa, batho ba tlile mona ba neng ba se ba ntse ba hlophisitse lipotso tsa bona ka mokhoa o phethahetseng,' me bana ke batho ba tobaneng le mathata a mangata a sa tloaelehang a amanang le marang-rang le tšebeliso ea lisebelisoa. 'Me libakeng tse ling ho ka ba thata haholo ka kutloisiso ea hore mathata ha a bonahale.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Yandex e na le Postgres. Litšebeletso tse ngata tsa Yandex li lula Yandex.Cloud. Mme re na le li-petabyte tse 'maloa tsa data tse hlahisang bonyane likopo tse milione motsotsoana ho Postgres.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me re fana ka sehlopha se tloaelehileng bakeng sa lits'ebeletso tsohle - ena ke sebaka sa mantlha sa node, likopi tse peli tse tloaelehileng (synchronous le asynchronous), backup, scaling ea likopo tsa ho bala ho replica.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Node e 'ngoe le e' ngoe ea lihlopha ke Postgres, eo ho eona, ntle le Postgres le litsamaiso tsa ho beha leihlo, ho kenyeletsoa pooler ea khokahano. Connection pooler e sebelisoa bakeng sa terata le molemong oa eona oa mantlha.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Morero oa mantlha oa ho kopanya pokello ke ofe?

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Postgres e nka mokhoa oa ts'ebetso ha o sebetsa le database. Sena se bolela hore khokahano e le 'ngoe ke ts'ebetso e le' ngoe, poso e le 'ngoe ea Postgres. 'Me ka har'a backend ena ho na le li-cache tse ngata tse fapaneng, tse theko e boima haholo ho li etsa tse fapaneng bakeng sa likhokahano tse fapaneng.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho feta moo, khoutu ea Postgres e na le sehlopha se bitsoang procArray. E na le lintlha tsa mantlha mabapi le likhokahano tsa marang-rang. 'Me hoo e batlang e le li-algorithms tsohle tsa procArray li na le ho rarahana ha mela; li tsamaisa mefuta eohle ea likhokahano tsa marang-rang. Ke potoloho e ntle e potlakileng, empa ka likhokahano tsa marang-rang tse kenang lintho li ea theko e phahameng hanyane. 'Me ha lintho li theko e boima haholo, u ka qetella u lefa theko e phahameng haholo bakeng sa likhokahano tse ngata tsa marang-rang.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho na le mekhoa e 3 e ka khonehang:

  • Lehlakoreng la kopo.
  • Ka lehlakoreng la database.
  • Mme pakeng tsa, ke hore, mefuta yohle ya metswako.

Ka bomalimabe, pooler e hahelletsoeng hajoale e ntse e ntlafatsoa. Metsoalle ea rona ho PostgreSQL Professional e etsa sena haholo. Ha e tla hlaha ho thata ho bolela esale pele. 'Me ha e le hantle, re na le litharollo tse peli tseo moetsi oa meralo a ka khethang ho tsona. Tsena ke letamo le lehlakoreng la ts'ebeliso le letamo la proxy.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Kopo-lehlakoreng pool ke tsela e bonolo ka ho fetisisa. 'Me hoo e ka bang bakhanni bohle ba bareki ba u fa tsela: hlahisa limilione tsa likhokahano tsa hau ka khoutu e le likhokahano tse' maloa ho database.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Bothata bo hlahang ke hore ka nako e itseng u batla ho lekanya backend, u batla ho e fetisetsa mechineng e mengata ea sebele.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ebe u hlokomela hore u na le libaka tse ling tse ngata tse fumanehang, litsi tse 'maloa tsa data. 'Me mokhoa oa ho kopanya mahlakoreng oa bareki o lebisa ho lipalo tse kholoanyane. Tse kholo li na le likhokahano tse ka bang 10. Ena ke moeli o ka sebetsang ka mokhoa o tloaelehileng.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Haeba re bua ka li-proxy poolers, joale ho na le li-poolers tse peli tse ka etsang lintho tse ngata. Ha se batho ba kopanyang metsi feela. Ke li-poolers + ts'ebetso e pholileng haholoanyane. Sena Pgpool и Crunchy-Proxy.

Empa, ka bomalimabe, ha se bohle ba hlokang ts'ebetso ena e eketsehileng. 'Me e lebisa tabeng ea hore batho ba kopanyang li-poolers ba tšehetsa feela ho kopanngoa ha nako, ke hore, moreki a le mong ea kenang, moreki a le mong ea tsoang ho database.

Sena ha sea lokela merero ea rona haholo, kahoo re sebelisa PgBouncer, e sebelisang ts'ebetso ea ts'ebetso, ke hore, likhokahano tsa li-server li tsamaisana le likhokahano tsa bareki bakeng sa nako eohle ea transaction.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me mosebetsing oa rona, sena ke' nete. Empa ho na le mathata a seng makae.'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Mathata a qala ha o batla ho hlahloba seboka, hobane likhokahano tsohle tsa hau tse kenang ke tsa lehae. Motho e mong le e mong o ile a tla ka loopback mme ka tsela e itseng ho ba thata ho latela lenaneo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ehlile u ka sebelisa application_name_add_host. Ena ke tsela e ka lehlakoreng la Bouncer ea ho eketsa aterese ea IP ho application_name. Empa application_name e behiloe ke khokahano e eketsehileng.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho graph ena, moo mola o mosehla e leng likopo tsa 'nete, le moo mola o moputsoa e leng likopo tse fofang ho database. 'Me phapang ena ke hantle ho kenya kopo_name, e hlokahalang feela bakeng sa ho latela, empa ha e na mahala ho hang.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ntle le moo, ho Bouncer u ke ke ua fokotsa letamo le le leng, ke hore, palo ea likhokahano tsa database ho mosebelisi ea itseng, ho latela database e itseng.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Sena se lebisa ho eng? U na le ts'ebeletso e laetsoeng e ngotsoeng ho C ++ le kae-kae haufi le ts'ebeletso e nyane ho node e sa etse letho le lebe ka database, empa mokhanni oa eona oa hlanya. E bula likhokahano tse 20 mme tse ling kaofela li tla ema. Esita le khoutu ea hau e tloaelehile.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ehlile, re ngotse patch e nyane bakeng sa Bouncer e ekelitseng tlhophiso ena, ke hore, ho fokotsa bareki ho letamo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho ka khoneha ho etsa sena ka lehlakoreng la Postgres, ke hore, ho fokotsa likarolo tsa database ka palo ea likhokahano.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Empa joale u lahleheloa ke bokhoni ba ho utloisisa hore na ke hobane'ng ha u se na likhokahano ho seva. PgBouncer ha e lahlele phoso ea khokahano, e lula e khutlisa tlhahisoleseling e tšoanang. 'Me u ke ke ua utloisisa: mohlomong password ea hau e fetohile, mohlomong database e sa tsoa lahleha, mohlomong ho na le phoso. Empa ha ho na ho hlahlojoa. Haeba seboka se ke ke sa thehoa, u ke ke ua tseba hore na ke hobane'ng ha se ke ke sa thehoa.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ka nako e itseng, u sheba li-graph tsa kopo 'me u bone hore kopo ha e sebetse.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Sheba holimo 'me u bone hore Bouncer e khoele e le 'ngoe. Ena ke phetoho bophelong ba tšebeletso. Ua hlokomela hore u ne u ntse u itokisetsa ho lekanya database ka selemo le halofo, 'me u hloka ho lekanya pooler.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Re fihletse qeto ea hore re hloka PgBouncers tse ngata.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

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

Bouncer e lokisitsoe hanyane.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me ba e entse e le hore li-Bouncers tse' maloa li ka phahamisoa ka ho sebelisa boema-kepe ba TCP hape. 'Me sistimi ea ts'ebetso e fetisetsa likhokahano tse kenang tsa TCP lipakeng tsa tsona li sebelisa round-robin.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Sena se pepeneneng ho bareki, ho bolelang hore ho bonahala eka o na le Bouncer e le 'ngoe, empa o na le karohano ea likhokahano tse sa sebetseng lipakeng tsa Bouncers tse sebetsang.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me ka nako e itseng u ka hlokomela hore li-Bouncers tsena tse 3 e mong le e mong o ja mokokotlo oa bona ka 100%. U hloka li-Bouncers tse 'maloa. Hobaneng?

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Hobane u na le TLS. U na le khokahano e patiloeng. 'Me haeba u beha benchmark Postgres ka ntle le TLS, u tla fumana hore palo ea likhokahano tse thehiloeng e theoha ka liodara tse peli tsa boholo ka encryption e nolofalitsoeng, hobane ho ts'oarana ka letsoho ha TLS ho ja lisebelisoa tsa CPU.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me ka holimo u ka bona mesebetsi e mengata ea cryptographic e etsoang ha ho e-na le leqhubu la likhokahano tse kenang. Kaha maemo a rona a mantlha a ka fetoha lipakeng tsa libaka tse fumanehang, leqhubu la likhokahano tse kenang ke boemo bo tloaelehileng. Ke hore, ka mabaka a mang a mantlha a khale a ne a sa fumanehe, mojaro oohle o rometsoe setsing se seng sa data. Kaofela ba tla tla ho lumelisa TLS ka nako e le 'ngoe.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me palo e kholo ea ho ts'oarana ka letsoho ha TLS e kanna ea se hlole e lumelisa Bouncer, empa e mo pepeta molaleng. Ka lebaka la nako, leqhubu la likhokahano tse kenang li ka senyeha. Haeba u leka hape ho ea setsing ntle le exponential backoff, li ke ke tsa tla khafetsa ka leqhubu le kopaneng.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Mohlala ke ona oa 16 PgBouncers e jarisang li-cores tse 16 ho 100%.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Re fihlile ho Cascade PgBouncer. Ena ke tlhophiso e ntle ka ho fetisisa e ka finyelloang mojaro oa rona le Bouncer. Li-Bouncers tsa rona tsa kantle li sebelisetsoa ho ts'oarana ka matsoho TCP, 'me li-Bouncers tsa ka hare li sebelisetsoa ho kopanya ha sebele, e le hore li se ke tsa arola lihokelo tsa ka ntle haholo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ka tlhophiso ena, ho qala bocha ho bonolo hoa khoneha. U ka qala li-Bouncers tsena tsohle tse 18 ka bonngoe. Empa ho boloka tlhophiso e joalo ho thata haholo. Sysadmins, DevOps, le batho ba hlileng ba ikarabellang bakeng sa seva sena ba ke ke ba thaba haholo ka tokisetso ena.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho ka bonahala eka lintlafatso tsohle tsa rona li ka khothaletsoa ho bula mohloli, empa Bouncer ha e tšehetsoe hantle. Mohlala, bokhoni ba ho tsamaisa PgBouncers tse 'maloa boema-kepeng bo le bong bo entsoe khoeling e fetileng. Ho bile le kopo ea ho hula ka tšobotsi ena lilemong tse 'maloa tse fetileng.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

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

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

Kapa mohlala o mong. Ho Postgres, o ka hlakola kopo e ntseng e tsoela pele ka ho romella lekunutu ho khokahanyo e fapaneng ntle le netefatso e sa hlokahaleng. Empa bareki ba bang ba romella feela TCP reset, ke hore, ba senya khokahano ea marang-rang. Bouncer o tla etsa joang? A ke ke a etsa letho. E tla tsoelapele ho phethahatsa kopo. Haeba u fumane palo e kholo ea likhokahano tse thehileng database e nang le likopo tse nyane, joale ho khaola khokahano ho tsoa ho Bouncer ho ke ke ha lekana; hape o hloka ho tlatsa likopo tse ntseng li sebetsa sebakeng sa polokelo ea litaba.

Sena se lokisitsoe 'me bothata bona ha bo so kopane le Bouncer e holimo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Kahoo re ile ra fihlela qeto ea hore re hloka sephutheloana sa rona sa khokahano, se tla ntlafatsoa, ​​se patiloe, moo mathata a ka lokisoang ka potlako le ao, ehlile, a tlamehang ho ba le likhoele tse ngata.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Re beha multithreading e le mosebetsi o ka sehloohong. Re hloka ho khona ho sebetsana le leqhubu la likhokahano tsa TLS tse tlang hantle.

Ho etsa sena, re ne re tlameha ho theha laeborari e arohaneng e bitsoang Machinarium, e etselitsoeng ho hlalosa maemo a mochini oa khokahano ea marang-rang joalo ka khoutu e latellanang. Ha u sheba khoutu ea mohloli oa libpq, u tla bona mehala e rarahaneng e ka u khutlisetsang sephetho ebe u re, “Mpitsetse hamorao. Hona joale ke na le IO hajoale, empa ha IO e tsamaea ke tla ba le moroalo ho processor. ” 'Me sena ke morero oa mekhahlelo e mengata. Hangata puisano ea marang-rang e hlalosoa ke mochine oa naha. Melao e mengata joalo ka "Haeba ke kile ka fumana hlooho ea pakete ea boholo ba N, joale ke emetse N byte," "Haeba ke rometse pakete ea SYNC, joale ke emetse pakete e nang le metadata ea sephetho." Sephetho ke khoutu e thata, e hananang le maikutlo, joalo ka ha eka 'maze o fetotsoe ho sekena. Re e entse e le hore ho e-na le mochine oa mmuso, moqapi oa lenaneo o hlalosa tsela e ka sehloohong ea tšebelisano ka mokhoa oa khoutu e tloaelehileng ea bohlokoa. Ke feela hore ka khoutu ena ea bohlokoa u hloka ho kenya libaka tseo tatellano ea ts'ebetso e lokelang ho sitisoa ka ho emela data ho tloha marang-rang, ho fetisetsa moelelo oa ts'ebetso ho coroutine e 'ngoe (khoele e tala). Mokhoa ona o tšoana le taba ea hore re ngola tsela e lebelletsoeng ka ho fetesisa ka tatellano, ebe re eketsa makala ho eona.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ka lebaka leo, re na le khoele e le 'ngoe eo TCP e e amohelang le e pota-potileng e fetisang khokahanyo ea TPC ho basebetsi ba bangata.

Tabeng ena, khokahano e 'ngoe le e' ngoe ea bareki e lula e sebetsa ho processor e le 'ngoe. 'Me sena se u lumella ho etsa hore ho be bonolo ho boloka cache.

Ho feta moo, re ntlafalitse hanyenyane pokello ea lipakete tse nyane ka har'a pakete e le 'ngoe e kholo e le ho imolla sistimi ea TCP.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho phaella moo, re ntlafalitse ts'ebetso ea khoebo ka kutloisiso ea hore Odyssey, ha e lokiselitsoe, e ka romela CANCEL le ROLLBACK ha ho e-na le ho hlōleha ha marang-rang, ke hore, haeba ho se motho ea emetseng kopo, Odyssey e tla bolella database hore e se ke ea leka ho phethahatsa kopo e ka senyang matlotlo a bohlokoa.

'Me ha ho khoneha, re boloka likhokahano ho moreki a le mong. Sena se qoba ho kenya kopo hape_name_add_host. Haeba sena se khonahala, ha ho hlokahale hore re eketse hape li-parameter tse hlokahalang bakeng sa tlhahlobo ea mafu.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Re sebetsa molemong oa Yandex.Cloud. 'Me haeba u sebelisa PostgreSQL e laoloang' me u na le pooler ea khokahanyo e kentsoeng, u ka etsa ho pheta-pheta ka mokhoa o utloahalang ka ntle, ke hore, u re tlohele, haeba u batla, u sebelisa ho pheta-pheta ho utloahalang. Bouncer e ke ke ea lokolla phallo e hlakileng ea phetisetso kantle.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ona ke mohlala oa ho theha phetisetso e utloahalang.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho feta moo, re na le ts'ehetso ea ho ikatisa ka ntle. Ka Leru, ha e le hantle, sena ha se khonehe, hobane joale sehlopha se tla u fa boitsebiso bo bongata haholo ka boeona. Empa lits'ebetsong tsa hau, haeba u hloka phetisetso ea 'mele ka sehokelo sa khokahano se Odyssey, sena se ka etsahala.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Odyssey e na le tlhahlobo e lumellanang ka botlalo le PgBouncer. Re na le console e tšoanang e tsamaisang hoo e batlang e le litaelo tse tšoanang. Haeba ho na le ho hong ho haellang, romella kopo ea ho hula, kapa bonyane bothata ho GitHub, 'me re tla tlatsa litaelo tse hlokahalang. Empa re se re ntse re e-na le ts'ebetso ea mantlha ea console ea PgBouncer.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

'Me, ehlile, re na le ho fetisa liphoso. Re tla khutlisa phoso e tlalehiloeng ke database. U tla fumana tlhahisoleseding mabapi le hore na ke hobane'ng ha u sa kenyelletsoa polokelong ea boitsebiso, eseng feela hore ha ua kenyelletsoa ho eona.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Karolo ena e koetsoe haeba o hloka 100% e tsamaisana le PgBouncer. Re ka itšoara ka tsela e tšoanang le ea Bouncer, hore feela re be ka lehlakoreng le sireletsehileng.

Ntlafatso

Mantsoe a seng makae ka khoutu ea mohloli oa Odyssey.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

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

Mohlala, ho na le litaelo tsa "Khutsa / Tsoela Pele". Hangata li sebelisoa ho ntlafatsa database. Haeba o hloka ho ntlafatsa Postgres, o ka e emisa ho sehokelo sa khokahano, etsa pg_upgrade, ebe o qala hape. Mme ho tloha lehlakoreng la moreki ho tla shebahala joalo ka ha database e ntse e fokotseha. Ts'ebetso ena e tlisitsoe ho rona ke batho ba tsoang sechabeng. Ha a so hoamisoa, empa haufinyane tsohle li tla loka. (E se e hatselitsoe)

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - e se e le leqhoa

Ho phaella moo, e 'ngoe ea likarolo tse ncha ho PgBouncer ke ts'ehetso bakeng sa Bopaki ba SCRAM, e ileng ea boela ea tlisoa ho rona ke motho ea sa sebetseng Yandex.Cloud. Ka bobeli ke ts'ebetso e rarahaneng le ea bohlokoa.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ka hona, ke rata ho u joetsa hore na Odyssey e entsoe ka eng, haeba u batla ho ngola khoutu e nyane hona joale.

U na le mohloli oa mohloli oa Odyssey, o itšetlehileng ka lilaebrari tse peli tse kholo. Laeborari ea Kiwi ke ts'ebetsong ea protocol ea molaetsa oa Postgres. Ke hore, proto 3 ea matsoalloa a Postgres ke melaetsa e tloaelehileng eo lipheletso tse ka pele le tse ka morao li ka fapanyetsanang. Li kenngoa laebraring ea Kiwi.

Laebrari ea Machinarium ke laebrari ea ts'ebetso ea likhoele. Sekhechana se senyenyane sa Machinarium sena se ngotsoe ka puo ea kopano. Empa u se ke oa tšoha, ho na le mela e 15 feela.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Mehaho ea Odyssey. Ho na le mochini o ka sehloohong oo li-coroutine li sebetsang ho oona. Mochini ona o sebelisa ho amohela likhokahano tse kenang tsa TCP le ho li aba har'a basebetsi.

Motho ea sebetsanang le bareki ba 'maloa a ka sebetsa ka har'a mosebeletsi a le mong. Khoele e kholo e boetse e tsamaisa console le ts'ebetso ea mesebetsi ea crone ho hlakola likhokahano tse seng li sa hlokahale ka letamong.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Odyssey e lekoa ho sebelisoa tlhahlobo e tloaelehileng ea Postgres. Re qeta ho hlahloba li-install-check ka Bouncer le ka Odyssey, re fumana null div. Ho na le liteko tse 'maloa tse amanang le ho fometa ha letsatsi tse sa feteng hantle ho Bouncer le Odyssey.

Ho phaella moo, ho na le bakhanni ba bangata ba nang le liteko tsa bona. 'Me re sebelisa liteko tsa bona ho leka Odyssey.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ntle le moo, ka lebaka la tlhophiso ea rona ea cascade, re tlameha ho leka mekotla e fapaneng: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey e le ho etsa bonnete ba hore haeba Odyssey e ile ea qetella e le karolo efe kapa efe ea cascade, le eona e ntse e sebetsa. kamoo re lebeletseng kateng.

Rake

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Re sebelisa Odyssey tlhahiso. Mme ho ka se be le toka ha nka re ntho e nngwe le e nngwe e sebetsa feela. Che, ke hore, e, empa eseng kamehla. Ka mohlala, ha ho etsoa ntho e 'ngoe le e' ngoe e sebetsa feela, joale metsoalle ea rona ea PostgreSQL Professional e ile ea tla 'me ea re re na le leak ea mohopolo. Ba ne ba hlile ba le joalo, re ile ra ba lokisa. Empa ho ne ho le bonolo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Eaba re fumana hore sehokelo sa khokahano se na le likhokahano tse kenang tsa TLS le likhokahano tse tsoang ho TLS. 'Me likhokahano li hloka litifikeiti tsa bareki le litifikeiti tsa seva.

Setifikeiti sa seva sa Bouncer le Odyssey se baloa hape ke pcache ea bona, empa litifikeiti tsa bareki ha li hloke ho baloa hape ho tsoa ho pcache, hobane Odyssey ea rona e mpe e qetella e kene ts'ebetsong ea ho bala setifikeiti sena. Sena se ile sa re makatsa, hobane ha hoa ka ha mo nka nako e telele ho hana. Qalong e ile ea eketseha ka mokhoa o tšoanang, empa ka mor'a likhokahano tse 20 tse kenang ka nako e le 'ngoe bothata bona bo ile ba iponahatsa.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Pluggable Authentication Method ke bokhoni ba ho netefatsa u sebelisa lisebelisoa tsa Lunux tse hahelletsoeng kahare. Ho PgBouncer e kenngoa ts'ebetsong ka tsela eo ho nang le khoele e arohaneng ea ho emela karabo e tsoang ho PAM 'me ho na le khoele e kholo ea PgBouncer e sebeletsang khokahanyo ea hona joale' me e ka ba kōpa hore ba phele khoele ea PAM.

Ha rea ​​ka ra phethahatsa sena ka lebaka le le leng le bonolo. Re na le likhoele tse ngata. Ke hobane'ng ha re hloka see?

Sena se ka qetella se baka mathata ka hore haeba o na le netefatso ea PAM le netefatso e seng ea PAM, joale leqhubu le leholo la netefatso ea PAM le ka liehisa netefatso eo e seng ea PAM haholo. Ena ke e 'ngoe ea lintho tseo re sa kang ra li lokisa. Empa haeba u batla ho e lokisa, u ka etsa sena.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Rake e 'ngoe e ne e le hore re na le khoele e le 'ngoe e amohelang likhokahano tsohle tse kenang. Ebe joale ba fetisetsoa letamong la basebetsi, moo ho ts'oarana ka matsoho ho TLS ho tla etsahala.

Ntlha ea bohlokoa, haeba u na le leqhubu le tsitsitseng la likhokahano tsa marang-rang tse 20, kaofela li tla amoheloa. 'Me ka lehlakoreng la bareki libpq e tla qala ho tlaleha linako tsa nako. Ka ho sa feleng e bonahala e le metsotsoana e 000.

Haeba bohle ba ke ke ba kenya database ka nako e le 'ngoe, joale ba ke ke ba kenya database, hobane sena sohle se ka koaheloa ke ho leka hape ho se nang phihlelo.

Re fihletse qeto ea hore re kopitsitse leano le tsoang ho PgBouncer mona ka taba ea hore re nyenyefatsa palo ea likhokahano tsa TCP tseo re li amohelang.

Haeba re bona hore re amohela likhokahano, empa qetellong ha ba na nako ea ho ts'oara matsoho, re li beha moleng hore li seke tsa senya lisebelisoa tsa CPU. Sena se lebisa tabeng ea hore ho ts'oara matsoho ka nako e le 'ngoe ho ka' na ha se ke ha etsoa bakeng sa likhokahano tsohle tse fihlileng. Empa bonyane motho o tla kenya database, le haeba mojaro o le boima haholo.

Roadmap

U ka rata ho bona eng nakong e tlang Odyssey? Re itokiselitse ho itlhabolla eng le hore na re lebeletse eng ho sechaba?

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ho tloha ka Phato 2019.

Sena ke seo 'mapa oa tsela oa Odyssey o neng o shebahala ka ona ka Phato:

  • Re ne re batla netefatso ea SCRAM le PAM.
  • Re ne re batla ho fetisetsa likopo tsa ho bala ho standby.
  • Ke kopa ho qala bocha inthaneteng.
  • Le bokhoni ba ho emisa ho seva.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Halofo ea 'mapa ona o phethiloe, eseng rona. 'Me sena se molemo. Kahoo a re buisaneng ka se setseng ebe re eketsa tse ling.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Mabapi le lipotso tse baloang feela ho standby? Re na le likopi tse tla futhumatsa moea ntle le ho etsa likopo. Re ba hloka hore ba fane ka failover le switchover. Haeba ho na le mathata ho e 'ngoe ea litsi tsa data, ke kopa ho li tšoara ka mosebetsi o mong oa bohlokoa. Hobane ha re khone ho lokisa li-processor tse tšoanang tse bohareng, mohopolo o tšoanang ka tsela e fapaneng, hobane ho seng joalo phetisetso e ke ke ea sebetsa.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ha e le hantle, ho Postgres, ho tloha ho 10, hoa khoneha ho hlakisa session_attrs ha u kopanya. O ka thathamisa bohle ba amohelang polokelo ea litaba mabapi le khokahanyo 'me u bolele hore na ke hobane'ng ha u ea polokelong ea litaba: ngola kapa bala feela. 'Me mokhanni ka boeena o tla khetha moamoheli oa pele lethathamong leo a le ratang haholo, le phethahatsang litlhoko tsa session_attrs.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Empa bothata ka mokhoa ona ke hore ha o laole nako ea ho ikatisa. E ka 'na eaba u na le replica e saletseng morao ka nako e sa amoheleheng bakeng sa tšebeletso ea hau. E le ho etsa hore lipotso tse baloang li hlahisoe ka botlalo ho replica, re hloka ho ts'ehetsa bokhoni ba Odyssey ba ho se sebetse ha bo sa baloe.

Odyssey e tlameha ho ea sebakeng sa polokelo nako le nako 'me e botse sebaka sa ho pheta-pheta ho tloha ho ea mantlha. 'Me haeba e fihlile tekanyo ea moeli, u se ke ua lumella likōpo tse ncha ho database, bolella mofani hore o hloka ho tsosolosa likhokahano, mohlomong, khetha moeti e mong ho phethahatsa likōpo. Sena se tla lumella database hore e potlakele ho tsosolosa lag ea ho pheta-pheta le ho khutla hape ho arabela ka kopo.

Ho thata ho fana ka nako ea ho kenya ts'ebetsong, hobane ke mohloli o bulehileng. Empa, ke tšepa, eseng lilemo tse 2,5 joalo ka basebetsi-'moho le 'na ba PgBouncer. Ena ke tšobotsi eo ke ratang ho e bona ho Odyssey.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Sechabeng, batho ba ile ba botsa ka tšehetso bakeng sa polelo e lokiselitsoeng. Hona joale o ka etsa polelo e lokiselitsoeng ka litsela tse peli. Ntlha ea pele, o ka phethahatsa taelo ea SQL, e leng "e lokiselitsoeng". E le hore re utloisise taelo ena ea SQL, re lokela ho ithuta ho utloisisa SQL ka lehlakoreng la Bouncer. Sena e ka ba taba e fetelletseng, hobane e feta tekano, kaha re hloka sebali kaofela. Ha re khone ho fetisa taelo e 'ngoe le e' ngoe ea SQL.

Empa ho na le polelo e lokiselitsoeng boemong ba protocol ea molaetsa ho proto3. 'Me sena ke sebaka seo tlhahisoleseding ea hore polelo e lokiselitsoeng e ntse e bōptjoa e tla ka mokhoa o hlophisitsoeng. Mme re ka ts'ehetsa kutloisiso ea hore khokahanong e 'ngoe ea seva moreki o kopile ho etsa lipolelo tse lokiselitsoeng. Mme le haeba transaction e koetsoe, re ntse re hloka ho boloka khokahano lipakeng tsa seva le moreki.

Empa mona ho na le phapang lipuisanong, hobane motho e mong o re o hloka ho utloisisa hore na ke mofuta ofe oa lipolelo tse lokiselitsoeng tseo mofani a li entseng le ho arolelana khokahano ea seva pakeng tsa bareki bohle ba entseng khokahanyo ena ea seva, ke hore, ke mang ea entseng polelo e lokiselitsoeng joalo.

Andres Freund o boletse hore haeba mofani a tla ho uena ea seng a ntse a bōpile polelo e joalo e lokiselitsoeng khokahanong e 'ngoe ea seva, joale u mo bōpe. Empa ho bonahala eka ho fosahetse ho etsa lipotso sebakeng sa polokelo ea litaba ho e-na le mofani, empa ho ea ka pono ea moqapi ea ngotseng protocol ea ho sebelisana le database, ho ka ba molemo haeba a ka fuoa feela khokahano ea marang-rang eo ho eona ho ka khonehang ho na le potso e lokisitsoeng joalo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Le tšobotsi e 'ngoe hape eo re lokelang ho e sebelisa. Hona joale re na le tlhahlobo e lumellanang le PgBouncer. Re ka khutlisa nako e tloaelehileng ea ho botsa potso. Empa nako e tloaelehileng ke mocheso o tloaelehileng sepetlele: ba bang ba bata, ba bang ba futhumetse - ka karolelano, bohle ba phetse hantle. Ha se nnete.

Re lokela ho kenya tshebetsong tshehetso bakeng sa dipersente, e leng se ka bontshang hore ho na le dipotso tse liehang tse senyang disebediswa mme di ka etsa hore tlhahlobo e amohelehe.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ntho ea bohlokoa ka ho fetisisa ke hore ke batla mofuta oa 1.0 (Version 1.1 e se e lokollotsoe). Taba ke hore Odyssey e se e le mofuta oa 1.0rc, ke hore, mokhethoa oa tokollo. Mme mathata ohle ao ke a thathamisitseng a ne a lokisitsoe ka mofuta o ts'oanang hantle, ntle le ho lutla ha memori.

Phetolelo ea 1.0 e tla bolela eng ho rona? Re ntse re hlahisa Odyssey litsing tsa rona. E se e ntse e sebetsa litsing tsa rona tsa marang-rang, empa ha e fihla ntlheng ea likopo tsa 1 motsotsoana, joale re ka re ena ke mofuta oa tokollo mme ena ke mofuta o ka bitsoang 000.

Batho ba 'maloa sechabeng ba botsitse hore mofuta oa 1.0 o kenyelle khefu le SCRAM. Empa sena se tla bolela hore re tla hloka ho hlahisa mofuta o latelang oa tlhahiso, hobane SCRAM kapa khefu ha e so bolaoe. Empa, mohlomong, taba ena e tla rarolloa kapele haholo.

'Mapa oa tsela oa Odyssey: ke eng hape eo re e batlang ho tsoa ho sebatli sa khokahano. Andrey Borodin (2019)

Ke emetse kopo ea hau ea ho hula. Ke kopa ho utloa hore na u na le mathata afe ka Bouncer. A re buisaneng ka tsona. Mohlomong re ka kenya tšebetsong mesebetsi e meng eo u e hlokang.

Ena ke pheletso ea karolo ea ka, ke rata ho u mamela. Kea leboha!

Lipotso

Haeba ke ipehela kopo_name ea ka, na e tla fetisetsoa ka nepo, ho kenyeletsoa le ho kopanya khoebo ho Odyssey?

Odyssey kapa Bouncer?

Ka Odyssey. Ka Bouncer e lahleloa.

Re tla etsa sete.

'Me haeba khokahano ea ka ea' nete e tlolela likhokahano tse ling, na e tla fetisoa?

Re tla etsa sete ea liparamente tsohle tse thathamisitsoeng lethathamong. Ha ke tsebe hore na application_name e lethathamong lena. Ke nahana hore ke mmone moo. Re tla beha li-parameter tsohle tse tšoanang. Ka kopo e le 'ngoe, sete se tla etsa ntho e' ngoe le e 'ngoe e kentsoeng ke mofani nakong ea ho qala.

Kea leboha, Andrey, ka tlaleho! Tlaleho e ntle! Ke thabetse hore Odyssey e ntse e hola ka potlako le ka potlako motsotso o mong le o mong. Ke batla ho tswelapele tjena. Re se re u kopile hore u be le khokahano ea mehloli e mengata ea data e le hore Odyssey e ka hokela lits'ebetsong tse fapaneng ka nako e le 'ngoe, ke hore, lekhoba le hloahloa, ebe o ikamahanya le mong'a e mocha ka mor'a hore o sebetse.

E, ho bonahala ke hopola puisano ena. Hona joale ho na le li-stores tse ngata. Empa ha ho na phetoho pakeng tsa bona. Ka lehlakoreng la rona, re tlameha ho hlahloba seva hore e ntse e phela le ho utloisisa hore ho na le phoso e etsahetseng, ke mang ea tla bitsa pg_recovery. Ke na le mokhoa o tloaelehileng oa ho utloisisa hore ha rea ​​tla ho monghali. Hona na re lokela ho utloisisa ka tsela e itseng liphosong kapa eng? Ke hore, mohopolo oa thahasellisa, ho buisanoa ka oona. Ngola maikutlo a mang. Haeba u na le basebetsi ba tsebang C, joale ho monate.

Taba ea ho lekanya likopi tse fapaneng le eona e ea re khahla, hobane re batla ho etsa hore ho amoheloa ha lihlopha tse ikatisang ho be bonolo ka moo ho ka khonehang bakeng sa baetsi ba likopo. Empa mona ke rata maikutlo a mangata, ke hore, mokhoa oa ho e etsa hantle, mokhoa oa ho e etsa hantle.

Potso e boetse e mabapi le replicas. Hoa etsahala hore u na le monghali le likopi tse 'maloa. 'Me ho hlakile hore ba ea ho replica hangata ho feta ho mong'a likhokahano, hobane ba ka ba le liphapang. U boletse hore phapang ea data e ka ba joalo hoo e ke keng ea khotsofatsa khoebo ea hau mme u ke ke ua ea moo ho fihlela e phetoa. Ka nako e ts'oanang, haeba u sa ee moo ka nako e telele, ebe u qala ho ea, joale data e hlokahalang e ke ke ea fumaneha hang-hang. Ke hore, haeba re lula re e-ea ho monghali, joale cache ea moo e futhumala, empa ho replica cache e fokotseha hanyenyane.

Ee ke nnete. The pcache e ke ke ea ba le li-blocks tsa data tseo u li batlang, cache ea sebele e ke ke ea e-ba le tlhahisoleseding mabapi le litafole tseo u li batlang, merero e ke ke ea e-ba le lipotso tse arotsoeng, ho ke ke ha e-ba le letho ho hang.

'Me ha u e-na le mofuta o itseng oa sehlopha,' me u eketsa replica e ncha moo, joale ha e qala, ntho e 'ngoe le e' ngoe e mpe ho eona, ke hore, e eketsa cache ea eona.

Ke ile ka fumana mohopolo. Mokhoa o nepahetseng e ne e tla ba ho botsa liphesente tse nyane ho replica pele, e ka futhumatsang cache. Ka mantsoe a mang, re na le boemo ba hore re tlameha ho salla morao ho mong'a ka metsotsoana e sa feteng 10. 'Me boemo bona ha bo kenyelelitsoe ho leqhubu le le leng, empa hantle bakeng sa bareki ba bang.

E, eketsa boima ba 'mele.

Ona ke mohopolo o motle. Empa pele re lokela ho kenya tshebetsong shutdown ena. Pele re hloka ho tima, ebe re nahana ka mokhoa oa ho bulela. Ena ke tšobotsi e ntle ea ho etsa hore ho be bonolo.

Nginx e na le khetho ena slowly start ka har'a sehlopha bakeng sa seva. 'Me butle-butle o eketsa mojaro.

Ee, mohopolo o motle, re tla o leka ha re fihla ho ona.

Source: www.habr.com

Eketsa ka tlhaloso