Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Mumushumo wake, Andrey Borodin achakuudza kuti vakafunga sei ruzivo rwekuyera PgBouncer pakugadzira iyo yekubatanidza pooler. Odyssey, sezvavakaitenderedza mukugadzirwa. Uye zvakare, isu tichakurukura kuti ndeapi mabasa eanodhonza atinoda kuona mushanduro nyowani: zvakakosha kwatiri kwete chete kuzadzisa zvatinoda, asi kusimudzira nharaunda yevashandisi. Odyssey.

Vhidhiyo:

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Mhoroi mose! Ini ndinonzi Andrew.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

PaYandex, ini ndinogadzira yakavhurika dhatabhesi. Uye nhasi tine musoro pamusoro pekubatanidza pooler yekubatanidza.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Kana iwe uchiziva kufonera yekubatanidza pooler muchiRussia, wondiudza. Ini ndinoda chaizvo kuwana yakanaka tekinoroji temu inofanirwa kusimbiswa muhunyanzvi mabhuku.

Musoro wacho wakaoma, nekuti mune dzakawanda dhatabhesi yekubatanidza pooler yakavakirwa-mukati uye hautomboda kuziva nezvazvo. Ehe, kune mamwe marongero kwese kwese, asi muPostgres hazvishande nenzira iyoyo. Uye zvakafanana (paHighLoad ++ 2019) pane chirevo chaNikolai Samokhvalov nezve kumisikidza mibvunzo muPostgres. Uye sezvandinozvinzwisisa, vanhu vakauya pano vanga vatogadzirisa mibvunzo yavo zvakakwana, uye ava vanhu vakatarisana nematambudziko asingawanzo hurongwa ane chekuita netiweki uye kushandiswa kwezviwanikwa. Uye mune dzimwe nzvimbo zvingava zvakaoma mupfungwa yokuti matambudziko acho haasi pachena.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Yandex ine Postgres. Mazhinji masevhisi eYandex anogara muYandex.Cloud. Uye isu tine akati wandei mapetabytes edata anogadzira angangoita miriyoni zvikumbiro pasekondi muPostgres.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye isu tinopa yakaringana sekisheni yemasevhisi ese - iyi ndiyo huru node yenode, akajairwa maviri replicas (synchronous uye asynchronous), backup, kuyera kwekuverenga zvikumbiro pane replica.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Imwe neimwe cluster node iPostgres, pairi, mukuwedzera kune Postgres uye yekutarisa masisitimu, yekubatanidza pooler inoiswawo. Connection pooler inoshandiswa kuita fenzi uye nechinangwa chayo chikuru.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Chii chinangwa chikuru chekubatanidza pooler?

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Postgres inotora muenzaniso wekuita kana uchishanda nedhatabhesi. Izvi zvinoreva kuti kubatana kumwechete inzira imwe, imwe Postgres backend. Uye mune iyi backend kune akawanda akasiyana cache, ayo anodhura zvakanyanya kugadzira akasiyana kune akasiyana makubatanidza.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Pamusoro pezvo, Postgres kodhi ine rondedzero inonzi procArray. Iyo ine basic data nezve network yekubatanidza. Uye dzinenge dzese procArray processing algorithms dzine mutsara kuoma; ivo vanomhanya pamusoro peiyo yese hurongwa hwekubatanidza network. Iyo yakanaka inokurumidza kutenderera, asi neakawanda anouya ekubatanidza network zvinhu zvinodhura zvishoma. Uye kana zvinhu zvawedzera kudhura, unogona kupedzisira wabhadhara mutengo wakanyanya kune yakawanda yekubatanidza network.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Pane 3 nzira dzinogoneka:

  • Kudivi rekushandisa.
  • Padivi re database.
  • Uye pakati, ndiko kuti, marudzi ese emusanganiswa.

Nehurombo, iyo yakavakirwa-mukati pooler parizvino iri pasi pekuvandudzwa. Shamwari dzedu kuPostgreSQL Professional dzinoita izvi zvakanyanya. Pazvichaonekwa zvakaoma kufanotaura. Uye zvechokwadi, isu tine mhinduro mbiri dzemugadziri wekusarudza kubva. Aya ndiwo maapplication-side pool uye proxy pool.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Application-side pool ndiyo nzira iri nyore. Uye vanenge vese vatyairi vevatengi vanokupa iwe nzira: ratidza mamirioni ekubatanidza kwako mukodhi senge gumi nemaviri ekubatanidza kune database.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Dambudziko rinomuka nderekuti pane imwe nguva iwe unoda kuyera backend, iwe unoda kuiendesa kumakina mazhinji chaiwo.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Wobva waona kuti une akati wandei anowanikwa nzvimbo, akati wandei data data. Uye nzira yekubatanidza yevatengi inotungamira kune nhamba huru. Huru dzinenge dzine 10 dzekubatanidza. Uyu ndiwo mupendero unogona kushanda zvakajairika.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Kana tikataura nezve proxy poolers, saka kune maviri poolers anogona kuita zvinhu zvakawanda. Havasi vadzivisi chete. Iwo mapoolers + mamwe anotonhorera mashandiro. Izvi Pgpool ΠΈ Crunchy-Proxy.

Asi, zvinosuruvarisa, haasi munhu wose anoda iyi yekuwedzera kushanda. Uye zvinotungamira kune chokwadi chekuti mapoolers anongotsigira chikamu chekubatanidza, kureva mutengi anouya, mutengi anobuda kune dhatabhesi.

Izvi hazvina kunyatsokodzera zvinangwa zvedu, saka isu tinoshandisa PgBouncer, iyo inoshandisa transaction pooling, i.e. sevha yekubatanidza inofananidzwa kune vatengi kubatana chete kwenguva yekutengeserana.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye mubasa redu, izvi ndezvechokwadi. Asi kune matambudziko mashoma.Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Matambudziko anotanga kana iwe uchida kuongorora chikamu, nekuti ako ese anouya akabatana ndeemunharaunda. Wese munhu akauya aine loopback uye neimwe nzira zvinova zvakaoma kuteedzera chikamu.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Ehe unogona kushandisa application_name_add_host. Iyi inzira kudivi reBouncer yekuwedzera IP kero kune application_name. Asi application_name inoiswa nekuwedzera kubatana.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Pane iyi girafu, pane yero mutsara zvikumbiro chaizvo, uye uko mutsara webhuruu uri zvikumbiro zvinobhururukira mudhatabhesi. Uye mutsauko uyu ndiko chaizvo kuisirwa application_name, inodiwa chete yekutsvaga, asi haina mahara zvachose.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye zvakare, muBouncer haugone kudzikamisa dziva rimwe chete, kureva nhamba yekubatanidza dhatabhesi pamushandisi chaiwo, padhatabhesi chaiyo.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Izvi zvinotungamirira kuchii? Iwe une sevhisi yakatakurwa yakanyorwa muC ++ uye kumwe padyo nesevhisi diki pane node isingaite chero chinhu chinotyisa nedhatabhesi, asi mutyairi wayo anopenga. Inovhura zviuru makumi maviri zvekubatanidza uye zvimwe zvese zvinomirira. Kunyangwe kodhi yako yakajairika.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Isu, hongu, takanyora chigamba chidiki cheBouncer chakawedzera ichi chigadziro, kureva kudzikamisa vatengi kudziva.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Zvingave zvichiita kuita izvi kudivi rePostgres, kureva, kudzikisira mabasa ari mudhatabhesi nehuwandu hwekubatanidza.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Asi wobva warasikirwa nekukwanisa kunzwisisa kuti sei usina chinongedzo kune server. PgBouncer haisi kukanda kukanganisa kwekubatanidza, inogara ichidzosa ruzivo rwakafanana. Uye iwe haugone kunzwisisa: pamwe password yako yachinja, pamwe dhatabhesi ichangorasika, pamwe chimwe chinhu chakashata. Asi hapana chirwere. Kana musangano usingagone kugadzwa, hauzoziva kuti nei usingagone kugadzwa.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Pane imwe nguva, iwe unotarisa pamagirafu ekushandisa uye ona kuti application haisi kushanda.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Tarisa kumusoro uye ona kuti Bouncer ine tambo imwe chete. Iyi inguva yekuchinja muhupenyu hwesevhisi. Iwe unoziva kuti wanga uchigadzirira kuyera dhatabhesi mugore nehafu, uye iwe unofanirwa kuyera pooler.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Tauya kumhedziso yekuti tinoda mamwe maPgBouncers.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

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

Bouncer yakamboiswa zvigamba.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye vakazviita kuitira kuti akati wandei maBouncers asimudzwe nekushandisa zvakare TCP port. Uye iyo inoshanda sisitimu inoshandura inopinda TCP yekubatanidza pakati pavo vachishandisa round-robin.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Izvi zviri pachena kune vatengi, zvichireva kuti zvinoita sekunge une Bouncer imwe chete, asi iwe une kupatsanuka kwekubatana kusina basa pakati pekumhanya maBouncer.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye pane imwe nguva unogona kuona kuti aya maBouncer matatu ega ega anodya musimboti wavo ne3%. Unoda akati wandei maBouncers. Sei?

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Nekuti une TLS. Une chinongedzo chakavharidzirwa. Uye kana iwe ukabhejera Postgres ine uye isina TLS, iwe uchaona kuti iyo nhamba yakasimbiswa yekubatanidza inodonha neanoda kusvika maviri maodha ehukuru ane encryption inogoneswa, nekuti TLS handshake inoshandisa CPU zviwanikwa.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye kumusoro iwe unogona kuona akati wandei cryptographic mabasa ayo anoitwa kana paine mafungu einouya ekubatanidza. Sezvo yedu yepuraimari inogona kushandura pakati penzvimbo dzinowanikwa, mafungu ekubatanidza anouya inzvimbo yakajairwa. Ndiko kuti, nokuda kwechimwe chikonzero chekare chepuraimari chakanga chisipo, mutoro wose wakatumirwa kune imwe nzvimbo yedata. Vachauya vese kuzokwazisa TLS panguva imwe chete.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye nhamba huru yeTLS kubata maoko inogona kunge isisiri kuti mhoro kuna Bouncer, asi inosvina huro yake. Nekuda kwekufamba kwenguva, mafungu ekubatanidza anouya anogona kuve asina kudzikiswa. Kana iwe ukaedza zvakare kune base pasina exponential backoff, ivo havazouye zvakare uye zvakare mune inobatana wave.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Heino muenzaniso we16 PgBouncers inotakura gumi nematanhatu cores pa16%.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Takasvika kuCascade PgBouncer. Iyi ndiyo yakanakisa gadziriso inogona kuwanikwa pamutoro wedu neBouncer. MaBouncer edu ekunze anoshandiswa TCP kubata maoko, uye maBouncers emukati anoshandiswa pakubatana chaiko, kuitira kuti asapatsanure kubatanidza kwekunze zvakanyanya.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Muchigadziro ichi, kutangazve kwakatsetseka kunogoneka. Unogona kutangazve ese aya 18 Bouncers rimwe nerimwe. Asi kuchengetedza gadziriro yakadaro kwakaoma. Sysadmins, DevOps, uye vanhu vari kunyatsoita nezve server iyi havangafarire zvakanyanya nehurongwa uhu.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Zvingaite sekunge kuvandudzwa kwedu kwese kunogona kusimudzirwa kuvhura sosi, asi Bouncer haina kunyatso kutsigirwa. Semuenzaniso, kugona kumhanya akati wandei PgBouncers pane imwe chiteshi chakaitwa mwedzi wapfuura. Paive nechikumbiro chekudhonza neichi chimiro makore akati wandei apfuura.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

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

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

Kana kuti mumwe muenzaniso. MuPostgres, unogona kukanzura chikumbiro chiri kuenderera mberi nekutumira chakavanzika kune imwe yekubatanidza pasina humbowo husina basa. Asi vamwe vatengi vanongotumira TCP reset, i.e. vanotyora network yekubatanidza. Bouncer achaita sei? Hapana chaachaita. Icharamba ichiita chikumbiro. Kana iwe wakagamuchira nhamba huru yekubatanidza iyo yakagadzira dhatabhesi ine zvikumbiro zvidiki, ipapo kungobvisa kubatana kubva kuBouncer hakuzokwane; iwe unofanirwawo kupedzisa izvo zvikumbiro zviri kushanda mudhatabhesi.

Izvi zvakagadziriswa uye dambudziko iri harisati rabatanidzwa muBouncer kumusoro.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye saka takasvika kumhedziso yokuti tinoda yedu yekubatanidza pooler, iyo ichagadziriswa, yakavharwa, umo matambudziko anogona kukurumidza kugadziriswa uye iyo, chokwadi, inofanira kuva yakawanda-tambo.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Isu tinoisa multithreading sebasa guru. Isu tinofanirwa kukwanisa kubata iyo wave yeinouya TLS yekubatanidza zvakanaka.

Kuti tiite izvi, taifanira kugadzira raibhurari yakaparadzana inonzi Machinarium, iyo yakagadzirirwa kutsanangura mamiriro emuchina wetiweki yekubatanidza sequential kodhi. Kana iwe ukatarisa iyo libpq sosi kodhi, iwe uchaona dzimwe dzakanaka dzakaomarara mafoni dzinogona kukudzosera mhedzisiro woti, "Ndifonere gare gare. Parizvino ndine IO parizvino, asi iyo IO painoenda ndichave nemutoro pane processor. " Uye ichi chirongwa che-multi-level. Kukurukurirana kwemambure kunowanzotsanangurwa nemuchina wehurumende. Mitemo mizhinji senge "Kana ndakambogamuchira packet musoro wehukuru N, ikozvino ndakamirira N bytes," "Kana ndikatumira SYNC packet, ikozvino ndakamirira pakiti ine mhinduro metadata." Mhedzisiro yacho ikodhi yakaoma, inopesana, sekunge maze yakashandurwa kuita mutsara scan. Isu takazviita kuti panzvimbo yemuchina wehurumende, mugadziri anotsanangura nzira huru yekudyidzana nenzira yeyakajairwa kodhi kodhi. Ndizvo chete kuti mune iyi yakakosha kodhi iwe unofanirwa kuisa nzvimbo uko kutevedzana kwekuita kunoda kukanganiswa nekumirira data kubva kunetiweki, uchipfuudza mamiriro ekuuraya kune imwe coroutine (girinhi shinda). Iyi nzira yakafanana neyokuti tinonyora pasi nzira inotarisirwa zvikuru mumaza mumutsara, uye towedzera matavi kwairi.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Nekuda kweizvozvo, isu tine tambo imwe inoita kuti TCP igamuchire uye denderedzwa-robin inopfuudza kubatana kweTPC kune vakawanda vashandi.

Mune ino kesi, yega yega mutengi yekubatanidza inogara ichimhanya pane imwe processor. Uye izvi zvinokubvumira kuti uite cache-hushamwari.

Uye nekuwedzera, isu takavandudza zvishoma muunganidzwa wemapaketi madiki mune imwe hombe packet kuitira kusunungura system TCP stack.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye zvakare, isu takavandudza transactional pooling mupfungwa yekuti Odyssey, kana yagadziriswa, inogona kutumira CANCEL uye ROLLBACK kana paine kukanganisa kwekubatanidza network, i.e. kana pasina munhu akamirira chikumbiro, Odyssey ichaudza dhatabhesi kuti isaedze zadzisa chikumbiro chinogona kutambisa zviwanikwa zvakakosha.

Uye pese pazvinogoneka, tinochengeta zvinongedzo kune mumwe mutengi. Izvi zvinodzivirira kudzoreredza application_name_add_host. Kana izvi zvichibvira, saka isu hatifanirwe kuwedzera zvakare maparameter anodiwa kuongororwa.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Isu tinoshanda mune zvido zveYandex.Cloud. Uye kana iwe ukashandisa yakachengetedzwa PostgreSQL uye uine yekubatanidza pooler yakaiswa, unogona kugadzira zvine musoro kudzokorora kunze, kureva, kutisiya, kana uchida, uchishandisa zvine musoro kudzokorora. Bouncer haizoregedze iyo inonzwisisika kudzokorora kuyerera kunze.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uyu muenzaniso wekumisikidza kudzokorodza zvine musoro.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Pamusoro pezvo, isu tine rutsigiro rwekudzokorora kwemuviri kunze. MuGore, hongu, izvi hazvigoneki, nekuti ipapo sumbu richakupa ruzivo rwakawandisa pamusoro paro. Asi mukuisa kwako, kana iwe uchida kudzokororwa kwemuviri kuburikidza nekubatanidza pooler muOdyssey, izvi zvinogoneka.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Odyssey ine yakazara inoenderana yekutarisa nePgBouncer. Isu tine imwecheteyo console inomhanya inenge yese mirairo yakafanana. Kana chimwe chinhu chisipo, tumira chikumbiro chekudhonza, kana imwe nyaya paGitHub, uye isu tichazadzisa mirairo inodiwa. Asi isu tatova nebasa guru rePgBouncer console.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye, chokwadi, tine kukanganisa kutumira. Tichadzorera kukanganisa kwakataurwa ne database. Iwe uchagamuchira ruzivo rwekuti sei iwe usina kuiswa mudhatabhesi, uye kwete chete kuti iwe hauna kuverengerwa mairi.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Ichi chimiro chakaremara kana iwe uchida 100% kuenderana nePgBouncer. Tinogona kuzvibata zvakafanana neBouncer, kuti tive padivi rakachengeteka.

Development

Mazwi mashoma nezve Odyssey sosi kodhi.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

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

Semuenzaniso, kune "Misa / Resume" mirairo. Ivo vanowanzo shandiswa kugadzirisa dhatabhesi. Kana iwe uchida kuvandudza Postgres, saka unogona kumbomira mune yekubatanidza pooler, ita pg_upgrade, wobva watangazve. Uye kubva kudivi remutengi zvinoita sekunge dhatabhesi iri kungodzikira. Kushanda uku kwakaunzwa kwatiri nevanhu vanobva munharaunda. Haasati aoma nechando, asi munguva pfupi zvinhu zvose zvinenge zvavepo. (Yatove chando)

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - yatove nechando

Mukuwedzera, chimwe chezvinhu zvitsva muPgBouncer inotsigira SCRAM Authentication, iyo yakaunzwawo kwatiri nemunhu asingashandi muYandex.Cloud. Zvose zviri zviviri zvakaoma kushanda uye zvakakosha.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Naizvozvo, ndinoda kukuudza kuti Odyssey inogadzirwa nei, kana iwe uchidawo kunyora kodhi diki izvozvi.

Iwe une Odyssey sosi base, iyo inotsamira pamaraibhurari maviri makuru. Raibhurari yeKiwi ndeyekuitwa kwePostgres meseji protocol. Ndokunge, yekuzvarwa proto 3 yePostgres ndeye yakajairwa mameseji ayo kumberi-kumagumo uye kumashure-kumashure anogona kuchinjana. Izvo zvinoshandiswa muraibhurari yeKiwi.

Raibhurari yeMachinarium iraibhurari yekushandisa shinda. Chidimbu chidiki cheiyi Machinarium chakanyorwa mumutauro wegungano. Asi usavhunduke, kune mitsetse gumi nemishanu chete.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Odyssey architecture. Pane muchina mukuru uri kushanda nema coroutines. Muchina uyu unoshandisa kugamuchira inouya TCP yekubatanidza uye nekuagovera pakati pevashandi.

Mubati wevatengi vakati wandei anogona kushanda mukati memushandi mumwe. Iyo tambo huru zvakare inomhanyisa koni uye kugadzirisa kwe crone mabasa kudzima makubatanidza ayo asisadiwe mudziva.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Odyssey inoedzwa uchishandisa yakajairwa Postgres test suite. Isu tinongomhanya kuisa-cheki kuburikidza neBouncer uye kuburikidza neOdyssey, tinowana null div. Kune akati wandei bvunzo dzine chekuita nefomati yemazuva izvo zvisingapfuure zvakafanana muBouncer uye muOdyssey.

Mukuwedzera, kune vatyairi vakawanda vane bvunzo dzavo. Uye isu tinoshandisa bvunzo dzavo kuyedza iyo Odyssey.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye zvakare, nekuda kwekumisikidzwa kwedu kwecascade, isu tinofanirwa kuyedza masumbu akasiyana: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey kuitira kuti tive nechokwadi chekuti kana Odyssey yakaguma mune chero yezvikamu mucascade, ichiri kushanda. sezvatinotarisira.

Rake

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Isu tinoshandisa Odyssey mukugadzira. Uye hazvingave zvakanaka kana ndikataura kuti zvese zvinoshanda chete. Kwete, ndiko kuti, hongu, asi kwete nguva dzose. Semuenzaniso, mukugadzira zvese zvakangoshanda, saka shamwari dzedu kubva kuPostgreSQL Professional dzakauya ndokuti isu tine ndangariro yekudonha. Vaive chokwadi, takavagadzirisa. Asi zvakanga zviri nyore.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Ipapo isu takaona kuti yekubatanidza pooler ine inouya TLS yekubatanidza uye inobuda TLS yekubatanidza. Uye zvinongedzo zvinoda zvitupa zvemutengi uye server zvitupa.

Bouncer uye Odyssey server zvitupa zvinoverengwazve ne pcache yavo, asi zvitupa zvemutengi hazvidi kuverengerwazve kubva pcache, nekuti yedu scalable Odyssey inopedzisira yapinda muhurongwa hwekuverenga chitupa ichi. Izvi zvakatishamisa, nekuti hazvina kumutorera nguva kuti arambe. Pakutanga yakakwira zvakatevedzana, asi mushure me 20 inouya yakabatana panguva imwe chete iyi dambudziko rakazviratidza.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Pluggable Authentication Method ndiko kugona kuita chokwadi uchishandisa akavakirwa-mukati maLunux maturusi. MuPgBouncer inoshandiswa nenzira yekuti kune tambo yakaparadzana yekumirira mhinduro kubva kuPAM uye kune tambo huru yePgBouncer inosevhisi kubatana kwazvino uye inogona kuvakumbira kuti vagare mushinda yePAM.

Hatina kuita izvi nechikonzero chimwe chete chiri nyore. Tine ma threads akawanda. Sei tichida izvi?

Izvi zvinogona kupedzisira zvagadzira matambudziko pakuti kana uine PAM yekusimbisa uye isiri-PAM yekusimbisa, ipapo mafungu makuru ePAM echokwadi anogona kunonoka zvakanyanya kusiri kwePAM kusimbiswa. Ichi ndicho chimwe chezvinhu zvatisati tagadzirisa. Asi kana iwe uchida kugadzirisa, iwe unogona kuita izvi.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Imwe nzira yaive yekuti isu tine tambo imwe inogamuchira zvese zvinopinda. Uye zvino vanoendeswa kune dziva revashandi, uko kubatwa kwemaoko kweTLS kuchaitika.

Pazasi mutsara, kana iwe uine yakabatana wave ye20 network yekubatanidza, ese anogamuchirwa. Uye kudivi remutengi libpq ichatanga kutaura nguva dzekubuda. By default zvinoita kunge 000 seconds.

Kana vose vasingakwanisi kupinda mu database panguva imwe chete, saka havagoni kupinda mu database, nokuti izvi zvose zvinogona kuvharwa ne-non-exponential retry.

Takasvika kumhedziso yekuti takakopa chirongwa kubva kuPgBouncer pano nenyaya yekuti isu tine throttling nhamba yeTCP yekubatanidza kwatinobvuma.

Kana tikaona kuti tiri kubvuma kubatana, asi ivo pakupedzisira vasina nguva yekubata maoko, tinovaisa mumutsara kuti vasarase CPU zviwanikwa. Izvi zvinotungamira kune chokwadi chekuti kubata maoko panguva imwe chete kunogona kusaitwa kune zvese zvinongedzo zvasvika. Asi zvirinani mumwe munhu achapinda mudhatabhesi, kunyangwe mutoro wacho uchirema.

Roadmap

Chii chaungade kuona mune ramangwana muOdyssey? Chii chatakagadzirira kuzvisimudzira uye chii chatinotarisira kubva munharaunda?

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Kubva muna Nyamavhuvhu 2019.

Izvi ndizvo zvakaitwa neOdyssey roadmap muna Nyamavhuvhu:

  • Isu taida SCRAM uye PAM kuvimbiswa.
  • Taida kutumira zvikumbiro zvekuverenga kune standby.
  • Ndinoda kutangazve online.
  • Uye kugona kumbomira pane server.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Hafu yemugwagwa uyu wapera, uye kwete nesu. Uye izvi zvakanaka. Saka ngatikurukurei zvakasara towedzera zvimwe.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Nezve mberi kuverenga-chete mibvunzo kune standby? Isu tine replicas inongopisa mhepo pasina kuita zvikumbiro. Tinoda ivo kuti vape failover uye switchover. Kana paine matambudziko mune imwe yedata data, ndinoda kuvabata nebasa rinobatsira. Nekuti isu hatigone kumisikidza imwechete yepakati processors, ndangariro imwe chete zvakasiyana, nekuti zvikasadaro kudzokorora hakushande.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Muchidimbu, muPostgres, kutanga kubva ku10, zvinokwanisika kutsanangura session_attrs kana uchibatanidza. Iwe unogona kunyora ese dhatabhesi mauto mukubatana uye wotaura kuti sei uchienda kune dhatabhesi: nyora kana kuverenga chete. Uye mutyairi pachake achasarudza mugadziri wekutanga mune rondedzero yaanonyanya kufarira, iyo inozadzisa zvinodiwa zvesesheni_attrs.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Asi dambudziko nenzira iyi nderekuti haidzore kudzokorora lag. Iwe unogona kunge uine imwe replica yakasarira kumashure kwenguva isingagamuchirwi yebasa rako. Kuti tigone kugonesa kuratidzwa kwakazara kwemibvunzo yekuverenga pane replica, isu tinofanirwa kutsigira kugona kweOdyssey kuti isamhanye kana isingaverengeki.

Odyssey inofanirwa kuenda kune dhatabhesi nguva nenguva uye kubvunza kureba kureba kubva kune yekutanga. Uye kana yasvika pachiyero chemuganho, usatendera zvikumbiro zvitsva mudhatabhesi, taurira mutengi kuti inoda kutangazve kubatana uye, pamwe, sarudza mumwe muenzi kuti aite zvikumbiro. Izvi zvinobvumira dhatabhesi kuti ikurumidze kudzoreredza replication lag uye kudzoka zvakare kuzopindura nechikumbiro.

Zvakaoma kupa nguva yekumisikidzwa, nekuti yakavhurika sosi. Asi, ndinovimba, kwete makore 2,5 sevamwe vandinoshanda navo kubva kuPgBouncer. Ichi ndicho chimiro chandinoda kuona muOdyssey.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Munharaunda, vanhu vakabvunza nezve rutsigiro rwechirevo chakagadzirirwa. Iye zvino unogona kugadzira chirevo chakagadzirirwa nenzira mbiri. Kutanga, iwe unogona kuita iyo SQL command, iyo "yakagadzirira". Kuti tinzwisise murairo weSQL uyu, tinoda kudzidza kunzwisisa SQL padivi reBouncer. Uku kungave kuwedzeredza, nekuti kwakawandisa, sezvo isu tichida iyo yese parser. Isu hatigone kupfuudza yega yega SQL mirairo.

Asi pane chirevo chakagadzirirwa pane meseji protocol level pane proto3. Uye iyi ndiyo nzvimbo iyo iyo ruzivo rwekuti chirevo chakagadzirirwa chiri kugadzirwa chinouya nenzira yakarongeka. Uye isu tinogona kutsigira kunzwisisa kuti pane imwe sevha yekubatanidza mutengi akakumbira kugadzira zvirevo zvakagadzirirwa. Uye kunyangwe kutengeserana kwakavharwa, isu tichiri kuda kuchengetedza kubatana pakati pesevha nemutengi.

Asi pano mutsauko munhaurirano unomuka, nekuti mumwe munhu anoti iwe unofanirwa kunzwisisa kuti ndeupi rudzi rwemashoko akagadzirirwa akagadzirwa nemutengi uye kugovera sevha yekubatanidza pakati pevatengi vakagadzira iyi sevha yekubatanidza, i.e., ndiani akasika chirevo chakagadzirirwa chakadaro.

Andres Freund akati kana mutengi akauya kwauri uyo akatogadzira chirevo chakagadzirirwa chakadaro mune imwe sevha yekubatanidza, saka gadzira iye. Asi zvinoratidzika kunge zvisizvo kuita mibvunzo mudhatabhesi panzvimbo yemutengi, asi kubva pakuona kwemugadziri anonyora protocol yekudyidzana nedatabase, zvingava nyore kana akangopihwa network yekubatanidza iyo. kune mubvunzo wakagadzirirwa wakadaro.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Uye chimwezve chinhu chatinofanira kuita. Isu tave nekutarisa kunoenderana nePgBouncer. Tinogona kudzorera avhareji yenguva yekubvunza mubvunzo. Asi nguva yepakati ndiyo yevhareji yekupisa muchipatara: vamwe vanotonhora, vamwe vanodziya - paavhareji, munhu wese ane hutano. Haisi chokwadi.

Tinofanira kushandisa tsigiro yezvikamu zvingaratidza kuti pane mibvunzo inononoka iri kutambisa zviwanikwa uye kuita kuti kuongorora kugamuchirwe.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Chinhu chinonyanya kukosha ndechekuti ndinoda shanduro 1.0 (Version 1.1 yakatosunungurwa). Icho chokwadi ndechekuti Odyssey yave muvhezheni 1.0rc, kureva kuburitsa mumiriri. Uye matambudziko ese andakanyora akagadziriswa neshanduro yakafanana, kunze kwekudonha kwendangariro.

Shanduro 1.0 icharevei kwatiri? Isu tiri kuburitsa Odyssey kune zvigadziko zvedu. Iri kutotanga kushanda pane dhatabhesi yedu, asi kana yasvika padanho rezvikumbiro zve1 pasekondi, saka tinogona kutaura kuti iyi ndiyo vhezheni yekuburitsa uye iyi ishanduro inogona kunzi 000.

Vanhu vakati wandei munharaunda vakabvunza iyo vhezheni 1.0 inosanganisira kumbomira uye SCRAM. Asi izvi zvinoreva kuti isu tichada kuburitsa iyo inotevera vhezheni kugadzira, nekuti hapana SCRAM kana kumbomira haisati yaurayiwa. Asi, kazhinji, nyaya iyi ichagadziriswa nekukurumidza.

Odyssey roadmap: chii chimwe chatinoda kubva kune yekubatanidza pooler. Andrey Borodin (2019)

Ndakamirira chikumbiro chako chekudhonza. Ndodawo kunzwa kuti une dambudziko rei neBouncer. Ngatikurukurei. Zvimwe tinogona kushandisa mamwe mabasa aunoda.

Uku ndiko kupera kwechikamu changu, ndinoda kukuteererai. Ndatenda!

Mibvunzo yako

Kana ndikamisa yangu application_name, ichaendeswa mberi nemazvo here, kusanganisira mukutengeserana muOdyssey?

Odyssey kana Bouncer?

MuOdyssey. MuBouncer inokandwa.

Tichaita seti.

Uye kana kubatana kwangu chaiko kukasvetukira pane zvimwe zvinongedzo, zvinozofambiswa here?

Isu tichaita seti yeese ma parameter akanyorwa mune rondedzero. Handikwanise kutaura kana application_name iri mune iyi runyorwa. Ndofunga ndakamuona aripo. Tichaisa zvose zvakafanana parameters. Nechikumbiro chimwe chete, iyo seti ichaita zvese zvakaiswa nemutengi panguva yekutanga.

Ndatenda, Andrey, nemushumo! Mharidzo yakanaka! Ndinofara kuti Odyssey iri kukura nekukurumidza uye nekukurumidza miniti yega yega. Ndinoda kuenderera mberi seizvi. Isu takatokukumbira iwe kuti uve neakawanda data-sosi yekubatanidza kuitira kuti Odyssey igone kubatana kune akasiyana dhatabhesi panguva imwe chete, i.e. tenzi muranda, uye wobva wazvibatanidza kune tenzi mutsva mushure mekutadza.

Hongu, ndinoita sendinorangarira iyi kurukurirano. Ikozvino kune akawanda storages. Asi hapana kuchinja pakati pavo. Kudivi redu, isu tinofanirwa kuvhota sevha kuti ichiri mhenyu uye tinzwisise kuti failer yakaitika, ndiani achadaidza pg_recovery. Ndine mwero nzira yekunzwisisa kuti hatina kuuya kuna tenzi. Uye isu tinofanira kunzwisisa neimwe nzira kubva kune kukanganisa kana chii? Kureva kuti pfungwa yacho inofadza, iri kukurukurwa. Nyora mamwe mashoko. Kana uine vashandi vanoziva C, saka zvakanaka.

Nyaya yekuyera mhiri kwemifananidzo zvakare inotifadza, nekuti isu tinoda kuita kuti kutorwa kwemasumbu akadzokororwa kuve nyore sezvinobvira kune vanogadzira maapplication. Asi pano ndinoda mamwe mazwi, i.e. maitiro chaiwo, maitiro ekuzviita nemazvo.

Mubvunzo zvakare ndewe replicas. Zvinoitika kuti une tenzi uye akati wandei replicas. Uye zviri pachena kuti vanoenda kune replica kashoma pane kuna tenzi kuti vabatane, nekuti vanogona kunge vaine misiyano. Iwe wakataura kuti mutsauko mune data ungave wakadaro zvekuti haugutse bhizinesi rako uye hauzoendi ikoko kudzamara yadzokororwa. Panguva imwecheteyo, kana iwe usina kuenda ikoko kwenguva yakareba, uye wobva watanga kuenda, ipapo data inodiwa haizovepo pakarepo. Ndiko kuti, kana tikaramba tichienda kuna tenzi, ipapo cache iripo inodziya, asi mune replica cache inononoka zvishoma.

Hongu ichokwadi. Iyo pcache haizove ne data blocks yaunoda, iyo cache chaiyo haizove neruzivo nezve matafura aunoda, zvirongwa hazvizove nemibvunzo yakapetwa, hapazovi nechinhu zvachose.

Uye kana iwe uine imwe mhando yesumbu, uye iwe wowedzera replica nyowani ipapo, zvino painotanga, zvese zvakaipa mairi, i.e. inowedzera cache yayo.

Ndine pfungwa. Nzira chaiyo ingave yekumhanyisa chikamu chidiki chemibvunzo pane replica kutanga, izvo zvinodziya cache. Zvichireva kutaura, isu tine mamiriro ekuti isu tinofanirwa kusarira kumashure kwatenzi pasina anopfuura gumi masekonzi. Uye ichi chimiro hachina kubatanidzwa mune imwe wave, asi zvakanaka kune vamwe vatengi.

Hongu, wedzera uremu.

Iri ipfungwa yakanaka. Asi chekutanga isu tinofanirwa kuita iyi shutdown. Kutanga tinoda kudzima, uye tozofunga nezvekuti tingabatidza sei. Ichi chinhu chikuru kugonesa zvakanaka.

Nginx ine sarudzo iyi slowly start muboka reseva. Uye zvishoma nezvishoma anowedzera mutoro.

Ehe, zano rakanaka, tichaiedza kana tasvika kwairi.

Source: www.habr.com

Voeg