Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I roto i tana ripoata, ka korero a Andrey Borodin ki a koe me pehea te whakaaro ki te wheako o te tauine PgBouncer i te wa e hoahoa ana i te puna hononga. Odyssey, i a ratou e huri ana ki te whakaputa. I tua atu, ka matapakihia e matou he aha nga mahi a te kaikawe e hiahia ana matou ki te kite i nga waahanga hou: he mea nui kia kaua e whakatutuki i o maatau hiahia anake, engari ki te whakawhanake i te hapori kaiwhakamahi. Tuhinga o mua.

Ataata:

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Kia ora katoa! Ko Andrew toku ingoa.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I Yandex, ka whakawhanakehia e ahau nga puna korero tuwhera. A, i tenei ra he kaupapa mo nga hononga pooler hononga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Mena kei te mohio koe ki te karanga i te kaikorero hono i te reo Ruhia, korero mai ki ahau. Kei te tino hiahia ahau ki te kimi i tetahi kupu hangarau pai e tika ana kia whakapumautia i roto i nga tuhinga hangarau.

He tino uaua te kaupapa, na te mea i roto i te maha o nga papaa raraunga kua whakauruhia te puna hononga ki roto, kaore koe e hiahia ki te mohio mo tena. Ko te tikanga, kei reira etahi tautuhinga i nga waahi katoa, engari i roto i te Postgres kaore e mahi pera. A i roto i te whakarara (i HighLoad++ 2019) he purongo na Nikolai Samokhvalov mo te whakatuu patai ki Postgres. A, ki taku mohio, i tae mai nga tangata kua whirihora tika i a raatau patai, a ko enei te hunga e pa ana ki nga raru punaha onge e pa ana ki te whatunga me te whakamahi rauemi. A i etahi waahi ka tino uaua i te mea kaore i te kitea nga raru.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Kei a Yandex nga Postgres. He maha nga ratonga Yandex e noho ana i Yandex.Cloud. A he maha nga petabytes o nga raraunga e whakaputa ana i te neke atu i te kotahi miriona tono mo ia hekona i Postgres.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

A ka whakaratohia e matou he huinga tino paerewa mo nga ratonga katoa - koinei te node tuatahi o te node, nga tauira e rua o mua (he tukutahi me te tukutahi), he taapiri, he whakatau i nga tono panui i runga i te tauira.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko ia node tautau ko te Postgres, i tua atu i nga Postgres me nga punaha aroturuki, ka whakauruhia ano he kaikoi hononga. Ka whakamahia te puna hono mo te taiapa me te kaupapa matua.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

He aha te kaupapa matua o te kaitao hono?

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka tango a Postgres i tetahi tauira tukanga i te wa e mahi ana me te papaa raraunga. Ko te tikanga ko tetahi hononga he tukanga kotahi, kotahi te pito muri o Postgres. A kei roto i tenei tuara he maha nga keteroki rereke, he tino utu ki te hanga rereke mo nga hononga rereke.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tua atu, ko te waehere Postgres he huinga e kiia ana ko te procArray. Kei roto nga raraunga taketake mo nga hononga whatunga. A tata ki te katoa o nga algorithms tukatuka procArray he uaua rarangi; ka rere i runga i te huinga katoa o nga hononga whatunga. He huringa tino tere, engari na te maha o nga hononga whatunga taumai ka iti ake te utu. A, ka iti ake te utu, ka taea e koe te utu i te utu tino nui mo te maha o nga hononga whatunga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

E toru nga huarahi ka taea:

  • I te taha tono.
  • I te taha o te papa raraunga.
  • A i waenganui, ara, nga momo huinga katoa.

Ko te mea pouri, kei te whanakehia te kaitao wai i roto. Ko o maatau hoa i PostgreSQL Professional te nuinga o tenei mahi. Ahea ka puta he uaua ki te matapae. Ina hoki, e rua nga otinga hei whiriwhiri ma te kaitoi. Ko enei ko te puna tono-taha me te puna takawaenga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te puna-taha tono te huarahi ngawari. Tata ki te katoa o nga kaitaraiwa kiritaki e whakarato ana ki a koe he huarahi: whakaatu i nga miriona o o hononga i roto i te waehere kia rite ki te maha tatini hononga ki te papaa raraunga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te raru ka puta ake ko te waa e hiahia ana koe ki te tarai i te tuara, ka hiahia koe ki te tuku ki nga miihini mariko maha.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Na ka mohio koe he maha atu nga waahi waatea, he maha nga pokapū raraunga. A ko te huarahi whakahiato taha ki te taha kiritaki ka nui ake nga nama. Ko nga mea nui kei te 10 nga hononga. Koinei te taha ka taea te mahi noa.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Mena ka korero tatou mo nga kaihoroi takawaenga, katahi ka rua nga kaikoeke ka taea te mahi maha. Ehara i te mea he kaikohikohi anake. He kaitao wai ratou + mahi hauhautanga ake. Tenei Pgpool и Crunchy-Proxy.

Engari, engari, kaore nga tangata katoa e hiahia ki tenei mahi taapiri. Na ko te mea ka tautokohia e te hunga kaihopu ki te whakahiato hui, ara, kotahi te kiritaki taumai, kotahi te kiritaki puta ki te paataka raraunga.

Kaore tenei i te tino pai mo o maatau kaupapa, na reira ka whakamahi matou i te PgBouncer, e whakatinana ana i te whakakotahitanga tauwhitinga, ara, ko nga hononga tūmau ka taurite ki nga hononga kiritaki mo te roanga o te tauwhitinga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

A, i roto i a maatau mahi, he pono tenei. Engari he torutoru nga raruraru.Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka timata nga raru ina hiahia koe ki te tirotiro i tetahi huihuinga, na te mea he rohe katoa o hononga taumai. I haere mai nga tangata katoa me te whakamuri, ka uaua ki te whai i te waahi.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te tikanga ka taea e koe te whakamahi i te tono_name_add_host. He huarahi tenei ki te taha Bouncer ki te taapiri i tetahi wahitau IP ki te ingoa_nga tono. Engari ko te tono_ingoa kua whakaritea e tetahi hononga taapiri.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I runga i tenei kauwhata, kei hea te raina kowhai he tino tono, kei hea te raina puru ko nga tono ka rere ki roto i te putunga raraunga. A ko tenei rereketanga ko te whakaurunga o te ingoa_application, e hiahiatia ana mo te tirotiro, engari kaore he utu.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tua atu, i roto i te Bouncer e kore e taea e koe te whakawhāiti i te puna kotahi, ara ko te maha o nga hononga papaa raraunga mo ia kaiwhakamahi motuhake, mo ia putunga raraunga motuhake.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

He aha tenei ka arahi? Kei a koe he ratonga utaina kua tuhia ki te C ++ me tetahi waahi e tata ana he ratonga iti i runga i te node kaore e mahi i tetahi mea kino ki te paataka raraunga, engari ka porangi ana tana taraiwa. Ka whakatuwherahia nga hononga 20 ka tatari katoa atu. Ahakoa he noa to waehere.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te tikanga, i tuhia e matou he papaki iti mo te Bouncer i taapiri i tenei tautuhinga, ara ko te whakaiti i nga kaihoko ki te puna.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka taea tenei ki te taha o te Postgres, ara, whakawhāitihia nga mahi i roto i te paataka ma te maha o nga hononga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Engari ka ngaro koe i te kaha ki te mohio he aha koe kaore he hononga ki te tūmau. Kaore a PgBouncer e maka i te hapa hononga, ka whakahoki tonu i nga korero ano. A kaore koe e mohio: kua rereke pea to kupuhipa, kua ngaro noa te papaa raraunga, tera pea kei te he. Engari kaore he tātaritanga. Ki te kore e taea te whakatuu he huihuinga, kare koe e mohio he aha te take e kore ai e taea.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tetahi wa, ka titiro koe ki nga kauwhata tono ka kite kaore i te mahi te tono.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Titiro ki runga ka kite he miro kotahi a Bouncer. He hurihanga tenei i roto i te oranga o te ratonga. Kei te mohio koe kei te whakareri koe ki te whakarahi i te paataka raraunga i roto i te tau me te haurua, a me whakatika e koe te kaitao.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Kua tae ki te whakatau me nui ake nga PgBouncers.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

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

He iti te papaki a Bouncer.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Na i mahia e ratou kia maha nga Kaipupuri ka whakaarahia ma te whakamahi ano i te tauranga TCP. Na te punaha whakahaere ka whakawhiti aunoa i nga hononga TCP taumai i waenga i a raatau ma te whakamahi i te round-robin.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

He maamaa tenei ki nga kaihoko, ko te ahua he kotahi to Kaipupuri, engari he wehewehenga o nga hononga mangere i waenga i nga Kaipupuri whakahaere.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

A i etahi wa ka kite pea koe ko enei 3 Bouncers e kai ana i a raatau matua ma te 100%. He iti noa nga Kaipupuri e hiahia ana koe. He aha?

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

No te mea kei a koe TLS. He hononga whakamuna koe. A, ki te tohuhia e koe nga Postgres me te kore TLS me te kore TLS, ka kitea e koe kua heke te maha o nga hononga kua whakaritea e tata ana ki te rua ota o te rahi me te whakamunatanga kua whakahohea, na te mea ka pau nga rauemi a te TLS i nga rauemi CPU.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

A kei runga ake ka kite koe i etahi mahi cryptographic e mahia ana ina he ngaru o nga hononga taumai. I te mea ka taea e ta maatau tuatahi te huri i waenga i nga rohe waatea, he ngaru o nga hononga taumai he ahuatanga tino angamaheni. Arā, mo etahi take kaore i te waatea te tuatahi tawhito, i tukuna te kawenga katoa ki tetahi atu pokapū raraunga. Ka haere mai ratou katoa ki te mihi ki a TLS i te wa kotahi.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

A ko te tini o nga ruru a TLS ka kore pea e oha atu ki a Bouncer, engari ka pehia e ia tona korokoro. Na te paunga o te taima, ka kore e makuku te ngaru o nga hononga taumai. Mena ka ngana ano koe ki te turanga karekau he hokinga whakamuri, e kore e hoki mai ano i roto i te ngaru hono.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Anei tetahi tauira o 16 PgBouncers e utaina ana 16 cores i te 100%.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tae mai matou ki te cascade PgBouncer. Koinei te whirihoranga pai ka taea te whakatutuki i runga i a maatau kawenga me te Bouncer. Ka whakamahia a maatau Kaipupuri o waho mo te ruru ringa TCP, ka whakamahia nga Kaipupuri o roto mo te whakahiato pono, kia kore ai e pakaru nga hononga o waho.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I roto i tenei whirihoranga, ka taea te whakaara ano. Ka taea e koe te whakaara ano i enei 18 Bouncers katoa. Engari ko te pupuri i taua whirihoranga he tino uaua. Ko nga Sysadmins, DevOps, me nga tangata kei a raatau te kawenga mo tenei kaimau kaore e tino koa ki tenei whakaritenga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Te ahua nei ka taea te whakatairanga i o maatau whakapainga katoa ki te puna tuwhera, engari kaore i te tino tautokohia a Bouncer. Hei tauira, ko te kaha ki te whakahaere i etahi PgBouncers i runga i tetahi tauranga i mahia i te marama ki muri. He tono toia me tenei ahuatanga i etahi tau ki muri.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

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

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

Ko tetahi atu tauira ranei. I roto i te Postgres, ka taea e koe te whakakore i tetahi tono kei te haere tonu ma te tuku i te mea ngaro ki tetahi hononga rereke me te kore he whakamotuhēhēnga kore. Engari ka tukuna noa e etahi o nga kaihoko he tautuhi TCP, ara, ka pakaru te hononga whatunga. Ka aha a Bouncer? E kore ia e mahi i tetahi mea. Ka mahia tonutia te tono. Mena kua whiwhi koe i te maha o nga hononga kua hangaia he papaaarangi me nga tono iti, katahi ka kore e ranea te momotu i te hononga mai i a Bouncer; me whakaoti ano e koe nga tono e rere ana i roto i te papaaarangi.

Kua papakihia tenei, kaore ano tenei raruraru kia hanumi ki te taha whakarunga o Bouncer.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Na ka tae mai ki te whakatau e hiahia ana matou ki a maatau ake hononga hono, ka whakawhanakehia, ka papakihia, ka tere te whakatika i nga raruraru me te tikanga, me maha nga miro.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka whakatauhia e matou te miro maha hei mahi matua. Me kaha tatou ki te hapai pai i te ngaru o nga hononga TLS taumai.

Hei mahi i tenei, me hanga e matou he whare pukapuka motuhake e kiia nei ko Machinarium, i hangaia hei whakaahua i nga ahuatanga miihini o te hononga whatunga hei waehere raupapa. Mena ka titiro koe ki te waehere puna libpq, ka kite koe i etahi waea tino uaua ka taea te whakahoki mai ki a koe he hua ka kii atu, "Karangahia ahau i muri mai. Inaianei kei a au te IO mo tenei wa, engari ka haere te IO ka whai kawenga ahau ki runga i te tukatuka. A he kaupapa taumata-maha tenei. Ko te whakawhitiwhiti korero i te nuinga o te waa ka whakaahuahia e te miihini kawanatanga. He maha nga ture penei "Mena kua whiwhi au i te pane pane i mua i te rahi N, inaianei kei te tatari ahau mo nga paita N," "Mena i tukuna e au he paatete SYNC, inaianei kei te tatari ahau mo tetahi kete me nga hua metadata." Ko te hua he waehere uaua, he koretake, me te mea i hurihia te maze ki te matawai raina. I mahia e maatau hei utu mo te miihini kawanatanga, ka whakaahuahia e te kaihōtaka te ara matua o te taunekeneke i roto i te ahua o te waehere imperative noa. Ko te mea anake i roto i tenei waehere whai mana me whakauru koe i nga waahi e tika ana kia haukotia te raupapa mahi ma te tatari mo nga raraunga mai i te whatunga, me te tuku i te horopaki mahi ki tetahi atu coroutine (miro matomato). He rite tenei huarahi ki te tuhi i te huarahi e tino tumanakohia ana i roto i te maze ki te rarangi rarangi, katahi ka taapiri manga ki runga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te mutunga mai, kotahi ta matou miro e whakaae ana te TCP ka tukuna e te round-robin te hononga TPC ki nga kaimahi maha.

I tenei take, ka rere tonu ia hononga kiritaki i runga i te tukatuka kotahi. Na tenei ka taea e koe te hanga i te keteroki-hoa.

I tua atu, kua whakapai ake matou i te kohinga o nga putea iti ki roto i te putea nui kotahi kia pai ake ai te punaha TCP puranga.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tua atu, kua whakapai ake matou i te kohinga tauwhitinga i runga i te tikanga ka taea e Odyssey, ina whirihorahia, te tuku CANCEL me te ROLLBACK ki te kore he hononga hononga whatunga, ara, ki te kore tetahi e tatari ana mo te tono, ka korero a Odyssey ki te paataka korero kia kaua e ngana. whakatutukihia te tono ka moumou rawa nga rawa utu nui.

A, i nga wa katoa ka taea, ka pupuri hononga matou ki te kaihoko kotahi. Ma tenei ka karo i te whakauru ano i te ingoa_kaiwhakamahi_add_host. Mena ka taea tenei, kaore e tika kia tautuhi ano i nga tawhā e hiahiatia ana mo te taatai.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka mahi matou i runga i nga painga o Yandex.Cloud. A, ki te whakamahi koe i te PostgreSQL whakahaere me te whakauru i tetahi kaikoi hono, ka taea e koe te hanga tukurua arorau ki waho, ara, waiho matou, ki te hiahia koe, ma te whakamahi i te tukurua arorau. Kare a Bouncer e tuku i te rere tukurua arorau ki waho.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

He tauira tenei mo te whakarite tukurua arorau.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tua atu, kei a matou te tautoko mo te tukurua tinana ki waho. I roto i te Kapua, he pono, kaore e taea tenei, na te mea ka nui rawa atu nga korero a te tautau ki a koe. Engari i roto i o whakaurunga, mena ka hiahia koe ki te tukurua-a-tinana na roto i te puna hono i Odyssey, ka taea tenei.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

He tino hototahi te aroturuki a Odyssey me PgBouncer. He rite tonu ta matou papatohu e whakahaere tata ana ki nga whakahau kotahi. Mena kei te ngaro tetahi mea, tukuna he tono kume, he take ranei kei runga i a GitHub, a ka whakaotia e matou nga whakahau e tika ana. Engari kei a maatau te mahi matua o te papatohu PgBouncer.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

A, o te akoranga, he hapa whakamua taatau. Ka whakahokia e matou te hapa i korerotia e te papaarangi. Ka whiwhi koe i nga korero mo te take kaore koe i whakauruhia ki roto i te paataka korero, kaua ko te mea kaore koe i uru ki roto.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Kua monoa tenei ahuatanga mena ka hiahia koe ki te 100% hototahi me PgBouncer. Ka taea e tatou te ahua rite ki a Bouncer, kia noho ki te taha haumaru.

Te whanaketanga

He kupu torutoru mo te waehere puna Odyssey.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

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

Hei tauira, he tono "Tatari / Whakahou". I te nuinga o te wa ka whakamahia hei whakahou i te paataka raraunga. Mena ka hiahia koe ki te whakahou i nga Postgres, ka taea e koe te okioki i roto i te puna hononga, mahi pg_upgrade, katahi ka timata ano. A, mai i te taha o te kiritaki ka rite ki te mea kei te puhoi noa te paataka raraunga. I kawea mai tenei mahinga e nga tangata o te hapori. Kare ano ia i whakatotoka, engari kare e roa ka noho katoa. (Kua whakatotoka)

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - kua tio kē

I tua atu, ko tetahi o nga ahuatanga hou i roto i te PgBouncer he tautoko mo te Whakamotuhēhēnga SCRAM, i kawea mai ano ki a matou e te tangata e kore e mahi i Yandex.Cloud. He mahi uaua, he mea nui hoki enei e rua.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Na reira, e hiahia ana ahau ki te korero ki a koe he aha te mea i hangaia ai a Odyssey, mena ka hiahia koe ki te tuhi i tetahi waehere iti inaianei.

Kei a koe te turanga puna Odyssey, e whakawhirinaki ana ki nga whare pukapuka matua e rua. Ko te whare pukapuka Kiwi he whakatinanatanga o te kawa karere a Postgres. Arā, ko te proto taketake 3 o Postgres he karere paerewa ka taea e nga pito o mua me nga pito o muri te whakawhiti. Ka whakatinanahia ki te whare pukapuka Kiwi.

Ko te whare pukapuka Machinarium he whare pukapuka whakatinana miro. Ko tetahi wahanga iti o tenei Machinarium ka tuhia ki te reo huihui. Engari kaua e mataku, 15 noa iho nga rarangi.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Odyssey hoahoanga. He mihini matua kei te whakahaere nga coroutine. Ka whakatinanahia e tenei miihini te whakaae ki nga hononga TCP taumai me te tohatoha ki nga kaimahi.

Ka taea e te kaihautu mo nga kaihoko maha te mahi i roto i te kaimahi kotahi. Ko te miro matua hoki e whakahaere ana i te papatohu me te tukatuka o nga mahi crone ki te whakakore i nga hononga kua kore e hiahiatia i roto i te puna.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka whakamatauhia a Odyssey ma te whakamahi i te huinga whakamatautau Postgres paerewa. Ka whakahaere noa matou i te whakauru-taki ma roto i a Bouncer a ma Odyssey, ka whiwhi matou i te wehenga kore. He maha nga whakamatautau e pa ana ki te whakatakotoranga o te ra kaore i te rite ki te Bouncer me Odyssey.

I tua atu, he maha nga taraiwa kei a raatau ake whakamatautau. Na ka whakamahia e matou o raatau whakamatautau ki te whakamatautau i te Odyssey.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I tua atu, na to taatau whirihoranga cascade, me whakamatau e maatau nga momo paihere: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey kia mohio ai mena ka mutu a Odyssey ki tetahi o nga waahanga o te cascade, kei te mahi tonu. mai ta tatou e mana'o nei.

Rake

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ka whakamahia e matou a Odyssey ki te hanga. A e kore e tika mena ka kii ahau ka pai nga mea katoa. Kao, ara, ae, engari kaua i nga wa katoa. Hei tauira, i roto i te whakaputanga i mahi noa nga mea katoa, katahi ka haere mai o maatau hoa mai i te PostgreSQL Professional ka kii mai kua pakaru te mahara. Ko ratou tonu, i whakatikahia e matou. Engari he maamaa noa.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Na ka kitea e matou he hononga TLS taumai me nga hononga TLS puta atu i te kaikohikohi hononga. A ko nga hononga e hiahiatia ana he tiwhikete kiritaki me nga tiwhikete tūmau.

Ka panuitia ano nga tiwhikete tūmau Bouncer me Odyssey e to ratou pcache, engari kaore e tika kia panuitia ano nga tiwhikete a te kiritaki mai i te pcache, na te mea ka uru atu to maatau Odyssey ki roto i nga mahi punaha mo te panui i tenei tiwhikete. He mea miharo tenei ki a matou, no te mea kaore i roa te aukati i a ia. I te tuatahi ka piki haere, engari i muri i te 20 hononga tukutahi ka puta mai tenei raru.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te Tikanga Motuhēhēnga Monohiko te kaha ki te whakamotuhēhē mā te whakamahi i ngā taputapu Lunux kua hangaia. I roto i te PgBouncer ka whakatinanahia i runga i te ahua he miro motuhake hei tatari mo te whakautu mai i te PAM me tetahi miro PgBouncer matua e mahi ana i te hononga o naianei ka taea te tono kia noho ratou ki te miro PAM.

Kaore matou i whakatinana i tenei mo tetahi take ngawari. He maha a matou miro. He aha tatou e hiahia ai ki tenei?

Ka taea e tenei te waihanga raruraru i te mea kei a koe te motuhēhēnga PAM me te whakamotuhēhēnga-kore-PAM, ka taea e te ngaru nui o te motuhēhēnga PAM te whakaroa i te whakamotuhēhēnga kore-PAM. Koinei tetahi o nga mea kaore ano kia whakatikahia. Engari ki te hiahia koe ki te whakatika, ka taea e koe tenei.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko tetahi atu rake ko te kotahi o taatau miro e whakaae ana ki nga hononga taumai katoa. Na ka whakawhitia ki te puna kaukau kaimahi, kei reira te ruru a TLS.

Rarangi raro, ki te whai koe i te ngaru hono o te 20 hononga whatunga, ka whakaae katoa. A, i te taha o te kiritaki ka timata te libpq ki te tuku korero mo nga waahi. Ma te taunoa he 000 hēkona te ahua.

Ki te kore e taea e ratou katoa te uru ki te putunga korero i te wa kotahi, kare e taea e ratou te uru ki te papaaarangi, na te mea ka taea e enei katoa te kapi ma te ngana ano-kore.

I whakatau matou i kapehia e matou te kaupapa mai i a PgBouncer i konei me te mea kua taraihia e matou te maha o nga hononga TCP e whakaaehia ana e matou.

Mena ka kite tatou kei te whakaae tatou ki nga hononga, engari i te mutunga karekau he wa ki te ruru ringa, ka tuuhia ki roto i te rarangi kia kore ai e moumou rawa nga rauemi CPU. Ko tenei ka arahi ki te meka kaore pea e taea te mahi ruru ringa mo nga hononga katoa kua tae mai. Engari i te iti rawa ka uru mai tetahi ki te paataka raraunga, ahakoa he taumaha te uta.

mape

He aha e hiahia ana koe ki te kite a muri ake nei i Odyssey? He aha ta tatou e reri ana ki te whakawhanake i a tatou ano me te aha e tumanakohia ana e tatou mai i te hapori?

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Mai i Akuhata 2019.

Koinei te ahua o te mahere ara Odyssey i Akuhata:

  • I hiahia matou ki te whakamotuhēhēnga SCRAM me PAM.
  • I pirangi matou ki te tuku i nga tono panui ki te tatari.
  • Kei te pirangi ahau ki te whakaara ano i runga ipurangi.
  • Me te kaha ki te okioki i runga i te tūmau.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te haurua o tenei mahere huarahi kua oti, ehara na matou. A he pai tenei. No reira me matapakihia nga mea e toe ana me te taapiri atu.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Mo nga patai panui-anake whakamua ki te tatari? Kei a matou nga tauira ka whakamahana noa i te hau me te kore e tono tono. E hiahia ana matou ki a raatau ki te whakarato i te ngoikore me te whakawhiti. Mena he raruraru kei roto i tetahi o nga pokapū raraunga, ka hiahia ahau ki te noho ki a raatau me etahi mahi whai hua. Na te mea kaore e taea e taatau te whirihora i nga kaihapu pokapū kotahi, he rereke te mahara, na te mea kaore e mahi te tukurua.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te tikanga, i roto i te Postgres, timata mai i te 10, ka taea te tohu session_attrs ina hono ana. Ka taea e koe te whakarārangi i ngā kaihautū pātengi raraunga katoa i roto i te hononga me te kī he aha koe i haere ai ki te pātengi raraunga: tuhia, pānuihia anake. A ko te kaitaraiwa ake ka kowhiri i te kaihautu tuatahi i roto i te rarangi e pai ana ki a ia, e tutuki ai nga whakaritenga o session_attrs.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Engari ko te raru o tenei huarahi ko te kore e whakahaere i te takamuri tukurua. Kei a koe pea etahi tauira kua roa ki muri mo te wa e kore e whakaaetia mo to ratonga. Kia taea ai te mahi katoa o nga patai panui i runga i te tauira, me tautoko te kaha o Odyssey kia kaua e rere ina kore e taea te panui.

Me haere a Odyssey ki te papaa raraunga i ia wa ki te tono mo te tawhiti o te tukurua mai i te tuatahi. A, ki te mea kua tae ki te uara tepe, kaua e tukua nga tono hou ki roto i te paataka raraunga, korero atu ki te kaihoko me timata ano i nga hononga, katahi ka kowhiria tetahi atu kaihautu hei whakahaere i nga tono. Ma tenei ka taea e te putunga raraunga te whakahoki tere i te tamuri tukurua ka hoki ano ki te whakautu me te tono.

He uaua ki te hoatu he wa mo te whakatinanatanga, no te mea he tuwhera puna. Engari, ko taku tumanako, ehara i te 2,5 tau penei i aku hoa mahi mai i PgBouncer. Koinei te ahuatanga e hiahia ana ahau ki te kite i te Odyssey.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

I te hapori, i patai nga tangata mo te tautoko mo te korero kua whakaritea. Inaianei ka taea e koe te hanga korero kua rite ma nga huarahi e rua. Tuatahi, ka taea e koe te whakahaere i te whakahau SQL, ara "kua rite". Kia mohio ai tatou ki tenei whakahau SQL, me ako tatou ki te mohio ki te SQL i te taha Bouncer. He nui rawa tenei, na te mea he nui rawa te mahi, na te mea e hiahia ana matou ki te parser katoa. Kaore e taea e matou te tarai i ia tono SQL.

Engari he korero kua rite ki te taumata kawa karere i runga i te proto3. A koinei te waahi ka tae mai nga korero e hangaia ana he korero kua whakaritea i roto i te ahua hanganga. A ka taea e matou te tautoko i te maarama i runga i etahi hononga tūmau i tono te kaihoko ki te hanga korero kua rite. A ahakoa kua kati te tauwhitinga, me mau tonu te hononga i waenga i te tūmau me te kiritaki.

Engari i konei ka puta he rereketanga o te korerorero, na te mea e kii ana tetahi me maarama koe he aha te ahua o nga korero kua rite i hangaia e te kaihoko me te tiri i te hononga tūmau i waenga i nga kiritaki katoa i hanga i tenei hononga tūmau, ara, nana i hanga he korero kua rite.

I kii a Andres Freund, ki te tae mai tetahi kaihoko ki a koe kua oti i a koe te hanga korero kua rite ki tetahi atu hononga tūmau, katahi ka hanga ma ia. Engari he ahua he iti ki te whakahaere i nga paatai ​​​​i roto i te paataka korero hei utu mo te kaihoko, engari mai i te tirohanga a te kaiwhakawhanake e tuhi ana i te kawa mo te taunekeneke ki te putunga korero, he pai mena ka tukuna noa he hononga whatunga ki a ia. he patai kua rite.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Me tetahi atu waahanga me whakatinana. Inaianei kei a maatau te aro turuki me te PgBouncer. Ka taea e tatou te whakahoki i te waa mahi uiui toharite. Engari ko te wa toharite ko te pāmahana toharite i roto i te hohipera: he makariri etahi, he mahana etahi - i te toharite, he hauora te katoa. Ehara i te pono.

Me whakatinana tatou i te tautoko mo nga ōrau e tohu ana he puhoi nga patai kei te moumou rauemi, ka pai ake te aro turuki.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Ko te mea nui e hiahia ana ahau ki te putanga 1.0 (Kua tukuna kētia te Putanga 1.1). Ko te meka ko Odyssey inaianei kei te putanga 1.0rc, ara ko te kaitono tuku. A ko nga raru katoa i whakarārangihia e au i whakatikahia me te ahua rite tonu, engari mo te rerenga mahara.

He aha te tikanga o te putanga 1.0 mo tatou? Kei te hurihia e matou a Odyssey ki o matou turanga. Kei te rere ke i runga i o maatau paparangi, engari ka tae ki te 1 nga tono mo ia hekona, katahi ka taea te kii koinei te putanga tuku, he putanga tenei ka kiia ko 000.

He maha nga tangata o te hapori i patai ki te putanga 1.0 ko te okioki me te SCRAM. Engari ko te tikanga tenei me whakaputa te putanga o muri mai ki te whakaputa, na te mea kaore ano a SCRAM me te okioki i mate. Engari, ko te mea pea, ka tere te whakatau i tenei take.

Mahere huarahi Odyssey: he aha atu ta matou e hiahia ana mai i te kaikohikohi hononga. Andrey Borodin (2019)

Kei te tatari ahau mo to tono kume. Kei te pirangi ano ahau ki te whakarongo he aha nga raru kei a koe mo te Bouncer. Ka matapakihia e tatou. Ka taea pea e matou te whakatinana etahi mahi e hiahia ana koe.

Ko te mutunga tenei o taku wahanga, e hiahia ana ahau ki te whakarongo ki a koe. Mauruuru koe!

Au uiui

Mena ka tautuhia e au taku ake ingoa_ingoa tono, ka tika te tuku whakamua, tae atu ki te kohinga tauwhitinga i Odyssey?

Odyssey, Bouncer ranei?

I Odyssey. I roto i te Bouncer ka maka.

Ka mahia e matou he huinga.

A, ki te eke taku tino hononga ki etahi atu hononga, ka tukuna atu?

Ka mahia e matou he huinga o nga tawhā katoa kua whakarārangihia ki te rarangi. Kare e taea e au te kii mena kei tenei rarangi ingoa_nga tono. Ki taku whakaaro i kite ahau ia ia i reira. Ka whakatauhia e matou nga tawhā rite katoa. Ma te tono kotahi, ka mahia e te huinga nga mea katoa i whakauruhia e te kaihoko i te wa o te whakaoho.

Mauruuru koe, Andrey, mo te ripoata! He pai te ripoata! Kei te koa ahau kei te tere ake te tipu o Odyssey i ia meneti. Kei te pirangi au ki te penei tonu. Kua tono kee matou ki a koe kia whai hononga puna-raraunga maha kia taea ai e Odyssey te hono atu ki nga papaa raraunga rereke i te wa kotahi, ara he taurekareka rangatira, katahi ka hono aunoa ki tetahi rangatira hou i muri i te koretake.

Ae, kei te mahara tonu ahau ki tenei korero. Inaianei he maha nga rokiroki. Engari kaore he huringa i waenga i a raatau. I to taatau taha, me pooti tatou i te kaimau kei te ora tonu me te mohio kua puta he raru, ka karangahia te pg_recovery. Kei a au tetahi tikanga mo te maarama kaore matou i tae mai ki te rangatira. A me mohio tatou ki nga he, he aha ranei? Arā, he whakamere te whakaaro, kei te kōrerohia. Tuhia etahi atu korero. Mena kei a koe nga kaimahi e mohio ana ki a C, he pai tena.

Ko te take o te whakatauira puta noa i nga tauira he mea pai ki a matou, na te mea kei te pirangi matou kia ngawari te tango i nga tautau tukurua mo nga kaihanga tono. Engari i konei ka hiahia ahau ki etahi atu korero, ara, me pehea te mahi, me pehea te mahi pai.

Ko te patai ano mo nga tauira. Te ahua nei he rangatira koe me etahi tauira. A e marama ana he iti ake te haere ki te tauira ki te rangatira mo nga hononga, na te mea he rereke nga rereketanga. I kii koe ko te rereketanga o nga raraunga ka kore e makona i to pakihi ka kore koe e haere ki reira kia tukuna ra ano. I te wa ano, ki te kore koe e haere ki reira mo te wa roa, katahi ka timata te haere, katahi ka kore e waatea nga raraunga e hiahiatia ana. Arā, ki te haere tonu tatou ki te rangatira, ka whakamahana te keteroki ki reira, engari i roto i te tauira he iti te keteroki.

Ae he pono. Karekau te pcache i nga poraka raraunga e hiahia ana koe, karekau he korero mo te keteroki tuturu mo nga ripanga e hiahia ana koe, karekau he paatai ​​i nga mahere, kaore rawa he mea.

A, ki te whai koe i etahi momo kapoi, ka taapirihia he tauira hou ki reira, katahi ka timata, ka kino nga mea katoa, ara, ka piki ake tona keteroki.

I whiwhi ahau i te whakaaro. Ko te huarahi tika ko te whakahaere i te paheketanga iti o nga patai i runga i te tauira i te tuatahi, ka whakamahana i te keteroki. Ko te ahua o te korero, kei a tatou te tikanga me noho ki muri i te rangatira kia kaua e neke ake i te 10 hēkona. A kaore tenei ahuatanga i whakauruhia ki te ngaru kotahi, engari he pai mo etahi o nga kaihoko.

Ae, whakanuia te taumaha.

He whakaaro pai tenei. Engari i te tuatahi me whakatinana tenei kati. Tuatahi me whakaweto, katahi ka whakaaro me pehea te huri. He ahua pai tenei kia pai ai te mahi.

Kei a Nginx tenei whiringa slowly start i roto i te tautau mo te tūmau. Na ka whakanuia e ia te kawenga.

Ae, he whakaaro pai, ka whakamatauhia e tatou ina tae atu ki tera.

Source: will.com

Tāpiri i te kōrero