M'nkhani yake, Andrey Borodin akuwuzani momwe adaganizira zomwe zinachitikira PgBouncer scaling popanga pooler yolumikizira.
Video:
Moni nonse! Dzina langa ndine Andrew.
Ku Yandex, ndikupanga ma database otseguka. Ndipo lero tili ndi mutu wokhudza kulumikizana kwa pooler.
Ngati mukudziwa kuyimba kugwirizana pooler mu Russian, ndiuzeni. Ndikufunadi kupeza nthawi yabwino yaukadaulo yomwe iyenera kukhazikitsidwa m'mabuku aukadaulo.
Mutuwu ndi wovuta kwambiri, chifukwa m'ma database ambiri cholumikizira cholumikizira chimamangidwa ndipo simuyenera kudziwa za izi. Zokonda zina, ndithudi, zili paliponse, koma mu Postgres izi sizikugwira ntchito. Ndipo mofananira (pa HighLoad ++ 2019) pali lipoti la Nikolai Samokhvalov pakukhazikitsa mafunso ku Postgres. Ndipo ndikumvetsetsa kuti anthu abwera kuno omwe adakonza kale zopempha mwangwiro, ndipo awa ndi anthu omwe akukumana ndi mavuto osowa kwambiri okhudzana ndi intaneti, kugwiritsa ntchito zipangizo. Ndipo mβmadera ena zingakhale zovuta kwambiri mβlingaliro lakuti mavutowo sawonekeratu.
Yandex ili ndi Postgres. Ntchito zambiri za Yandex zimakhala mu Yandex.Cloud. Ndipo tili ndi ma petabytes angapo a data omwe amapanga zopempha zosachepera miliyoni imodzi pamphindikati ku Postgres.
Ndipo timapereka gulu lofananira la mautumiki onse - iyi ndiye mfundo yayikulu ya node, zofananira ziwiri zanthawi zonse (zofanana ndi zofananira), zosunga zobwezeretsera, kukulitsa zopempha zowerengera pazofananira.
Node iliyonse yamagulu ndi Postgres, pomwe, kuwonjezera pa Postgres ndi machitidwe owunikira, cholumikizira cholumikizira chimayikidwanso. Cholumikizira cholumikizira chimagwiritsidwa ntchito pomanga mipanda komanso cholinga chake chachikulu.
Kodi cholinga chachikulu cholumikizirana ndi chiyani?
Postgres imatenga njira yogwirira ntchito ndi database. Izi zikutanthauza kuti kulumikizana kumodzi ndi njira imodzi, Postgres backend imodzi. Ndipo pali ma cache ambiri osiyanasiyana kumbuyoku, omwe ndi okwera mtengo kwambiri kuti apange maulumikizidwe osiyanasiyana.
Komanso, pali mndandanda mu code ya Postgres yotchedwa procArray. Lili ndi deta yofunikira yokhudzana ndi maukonde. Ndipo pafupifupi ma aligorivimu onse a procArray ali ndi zovuta zofananira, amadutsa mumitundu yonse yolumikizira maukonde. Ndikuyenda mwachangu, koma ndi ma network omwe akubwera, zinthu zimakwera mtengo. Ndipo zinthu zikakwera mtengo pang'ono, mumatha kulipira mtengo wokwera kwambiri pamalumikizidwe ambiri apaintaneti.
Pali njira zitatu zomwe zingatheke:
- Kumbali yofunsira.
- Kumbali ya database.
- Ndipo pakati, ndiye kuti, kuphatikiza zonse zotheka.
Tsoka ilo, pooler yomangidwira pano ikukonzedwa. Anzanu ku PostgreSQL Professional amachita izi makamaka. Pamene izo zidzawonekera ndizovuta kulosera. Ndipo kwenikweni, tili ndi njira ziwiri zopangira chisankho cha womanga. Izi ndi dziwe lakumbali la ntchito komanso dziwe la proxy.
Pogwiritsira ntchito-mbali dziwe ndiye njira yosavuta. Ndipo pafupifupi madalaivala onse amakasitomala amakupatsirani njira: kuyimilira mamiliyoni amalumikizidwe anu mu code ngati maulumikizidwe angapo ku database.
Pali vuto ndi mfundo yakuti panthawi ina mukufuna kukweza kumbuyo, mukufuna kuyiyika pamakina ambiri.
Ndiye mukuzindikirabe kuti muli ndi magawo angapo opezeka, malo angapo a data. Ndipo njira yophatikizira mbali ya kasitomala imabweretsa ziwerengero zazikulu. Zazikuluzikulu zimakhala pafupifupi 10 zolumikizira. Uwu ndi m'mphepete womwe ungagwire ntchito bwino.
Ngati tilankhula za ophatikiza ma proxy, ndiye kuti pali awiri omwe amatha kuchita zinthu zambiri. Iwo sali ophatikizana okha. Ndiwophatikiza + magwiridwe antchito abwino kwambiri. Izi
Koma, mwatsoka, si aliyense amene amafunikira izi zowonjezera. Ndipo zimatsogolera ku mfundo yoti ophatikiza amathandizira kugawana magawo, mwachitsanzo, kasitomala mmodzi wobwera, kasitomala wotuluka ku database.
Izi sizoyenera kwambiri pantchito zathu, chifukwa chake timagwiritsa ntchito PgBouncer, yomwe imagwiritsa ntchito kugawana zinthu, mwachitsanzo, kulumikizana kwa seva kumajambulidwa ku kulumikizana kwamakasitomala panthawi yonseyi.
Ndipo pa katundu wathu - ndi zoona. Koma pali mavuto angapo.
Mavuto amayamba mukafuna kudziwa gawo, chifukwa kulumikizana konse komwe kumabwera ndi komweko. Aliyense adabwera ndi loopback ndipo mwanjira ina zimakhala zovuta kutsatira gawoli.
Zachidziwikire mutha kugwiritsa ntchito application_name_add_host. Iyi ndi njira ya mbali ya Bouncer yowonjezerera adilesi ya IP ku application_name. Koma application_name imayikidwa ndi kulumikizana kwina.
Pa tchatichi, pomwe mzere wachikasu ndi zopempha zenizeni, komanso pomwe mzere wabuluu ndi zopempha zomwe zimawulukira ku database. Ndipo kusiyana uku ndikukhazikitsa kwa application_name, komwe kumangofunika kutsatira, koma sikuli kwaulere.
Kuphatikiza apo, Bouncer sangathe kuchepetsa dziwe limodzi, mwachitsanzo, kuchuluka kwa zolumikizirana ndi wogwiritsa ntchito, pa database.
Kodi izi zimabweretsa chiyani? Muli ndi ntchito yodzaza yolembedwa mu C ++ ndi kwinakwake pafupi ndi ntchito yaying'ono pa node yomwe sichita cholakwika chilichonse ndi maziko, koma woyendetsa wake amapenga. Imatsegula maulumikizidwe 20 ndipo china chilichonse chidikirira. Ngakhale code yanu ndi yolondola.
Zachidziwikire, tidalemba kachidutswa kakang'ono ka Bouncer komwe kadawonjezera izi, mwachitsanzo, kuchepetsa makasitomala kudziwe.
Zingakhale zotheka kuchita izi kumbali ya Postgres, mwachitsanzo, kuchepetsa maudindo omwe ali mu database ku chiwerengero cha maulumikizidwe.
Koma ndiye mumataya kuthekera komvetsetsa chifukwa chake mulibe zolumikizana ndi seva. PgBouncer sikutaya cholakwika cholumikizira, nthawi zonse imabweretsa zomwezo. Ndipo simungamvetsetse: mwina mawu anu achinsinsi asintha, mwina database idangotsika, mwina china chake chalakwika. Koma palibe matenda. Ngati gawoli silingakhazikitsidwe, simudzadziwa chifukwa chake silingachitike.
Panthawi ina, mumayang'ana ma graph a pulogalamuyo ndikuwona kuti ntchitoyo sikugwira ntchito.
Yang'anani pamwamba ndikuwona kuti Bouncer ili ndi ulusi umodzi. Ichi ndi nthawi yosinthira moyo wautumiki. Mukumvetsetsa kuti mukukonzekera kukulitsa nkhokwe mu chaka ndi theka, ndipo muyenera kukulitsa pooler.
Tafika pamapeto kuti tikufunika ma PgBouncers ambiri.
Bouncer yasinthidwa pang'ono.
Ndipo adazipanga kuti ma Bouncers angapo akwezedwe ndikugwiritsanso ntchito doko la TCP. Ndipo kale opaleshoni dongosolo basi anasamutsa ukubwera TCP kugwirizana pakati pawo ndi round-robin'om.
Izi ndi zowonekera kwa makasitomala, mwachitsanzo, zikuwoneka ngati muli ndi Bouncer imodzi, koma muli ndi magawo olumikizana opanda pake pakati pa ma Bouncer.
Ndipo nthawi ina, mutha kuwona kuti ma Bouncers atatuwa aliyense amadya pachimake chake ndi 3%. Mufunika ma Bouncer angapo. Chifukwa chiyani?
Chifukwa muli ndi TLS. Muli ndi kulumikizana kobisika. Ndipo ngati muyika benchmark Postgres ndi popanda TLS, mupeza kuti kuchuluka kwa maulumikizidwe okhazikika kumatsika pafupifupi maulalo awiri akulu ndi kubisa komwe kumathandizidwa, chifukwa kugwirana chanza kwa TLS kumawononga zida za CPU.
Ndipo pamwamba, mutha kuwona ntchito zingapo za cryptographic zomwe zimachitidwa panthawi yolumikizana ndi omwe akubwera. Popeza kuti pulayimale yathu imatha kusinthana pakati pa malo omwe alipo, mafunde olumikizana omwe akubwera ndizochitika zofananira. Ndiko kuti, pazifukwa zina, pulayimale yakale sinapezeke, katundu wonsewo anatumizidwa kumalo ena a data. Onse adzabwera kudzapereka moni ku TLS nthawi imodzi.
Ndipo kuchuluka kwa TLS kugwirana chanza sikungamulonjere Bouncer kale, koma kufinya kukhosi kwake. Kuchuluka kwa maulumikizidwe omwe akubwera atha kukhala osakhazikika chifukwa chakutha kwa nthawi. Ngati mutayesanso kumunsi popanda kubwereza kwachidziwitso, iwo sangabwererenso mobwerezabwereza mumayendedwe ogwirizana.
Nachi chitsanzo cha 16 PgBouncers chomwe chimanyamula ma cores 16 pa 100%.
Tafika ku Cascading PgBouncer. Uku ndiye kasinthidwe kabwino kwambiri komwe tingakwaniritse pa Bouncer katundu wathu. Ma Bouncer athu akunja amatumizira TCP kugwirana chanza, ndipo ma Bouncer amkati amagwira ntchito limodzi, kuti asawononge kwambiri kulumikizana kwakunja.
Mu kasinthidwe uku, kuyambiranso kofewa ndikotheka. Mutha kuyambitsanso ma Bouncer onsewa 18 amodzi ndi amodzi. Koma kusunga kasinthidwe koteroko ndikovuta. Oyang'anira makina, DevOps, ndi anthu omwe ali ndi udindo pa seva iyi sangasangalale kwambiri ndi dongosololi.
Zikuwoneka kuti zosintha zathu zonse zitha kukwezedwa pamalo otseguka, koma Bouncer sichikuthandizira bwino. Mwachitsanzo, kuthekera koyendetsa ma PgBouncers angapo padoko lomwelo kudachitika mwezi wapitawo. Pempho kukoka ndi mbali imeneyi anali zaka zingapo zapitazo.
Kapenanso chitsanzo chimodzi. Mu Postgres, mutha kuletsa zopempha potumiza chinsinsi ku kulumikizana kwina popanda kutsimikizika kowonjezera. Koma makasitomala ena amangotumiza kukonzanso kwa TCP, mwachitsanzo, amaphwanya maukonde. Kodi Bouncer achita chiyani ndi izi? Sangachite kalikonse. Idzapitiliza kuchita pempholo. Ngati mwalandira maulumikizidwe ambiri omwe adayika maziko ndi zopempha zazing'ono, ndiye kungochotsa kulumikizana kuchokera ku Bouncer sikungakhale kokwanira, muyeneranso kumaliza zopempha zomwe zikuyenda mu database.
Izi zasinthidwa ndipo nkhaniyi sinaphatikizidwebe kumtunda kwa Bouncer.
Ndipo kotero ife tinafika pa mfundo yakuti tifunika pooler wathu kugwirizana, amene adzapangidwa, zigamba, momwe zidzathere mwamsanga kukonza mavuto ndi amene, ndithudi, ayenera Mipikisano threaded.
Timayika multithreading ngati ntchito yayikulu. Tiyenera kukwanitsa kuthana ndi mafunde a ma TLS omwe akubwera.
Kuti tichite izi, tidayenera kupanga laibulale yosiyana yotchedwa Machinarium, yomwe idapangidwa kuti ifotokoze momwe makina amalumikizirana ndi ma netiweki ngati serial code. Mukayang'ana pa libpq source code, muwona mafoni ovuta omwe angakubwezereni ndikunena kuti, "Ndiyimbireni mtsogolo. Pakali pano ndili ndi IO pakalipano, koma IO ikadutsa, ndili ndi katundu pa purosesa. Ndipo iyi ndi ndondomeko yamagulu ambiri. Kuyanjana kwa maukonde nthawi zambiri kumafotokozedwa ndi makina aboma. Malamulo ambiri monga "Ngati ndinalandira kale mutu wa paketi wa kukula kwa N, ndiye tsopano ndikuyembekezera N bytes", "Ngati ndatumiza paketi ya SYNC, ndiye tsopano ndikudikirira paketi yokhala ndi zotsatira za metadata." Zimakhala zovuta zotsutsana nazo, ngati kuti maze adasinthidwa kukhala jambulani mzere. Tidapanga kuti m'malo mwa makina aboma, wopanga mapulogalamu amafotokozera njira yayikulu yolumikizirana mwanjira ya code yofunikira wamba. Pokhapokha mu code yofunikirayi, muyenera kuyika malo omwe kutsata kumayenera kusokonezedwa podikirira deta kuchokera pa netiweki, kupititsa zomwe zikuchitika ku coroutine ina (ulusi wobiriwira). Njirayi ndi yofanana ndi yomwe timalemba njira yomwe tikuyembekezera kwambiri pamzerewu, ndikuwonjezera nthambi zake.
Zotsatira zake, tili ndi ulusi umodzi womwe umapangitsa kuti TCP ivomereze ndipo robin yozungulira imadutsa kulumikizana kwa TPC kwa antchito ambiri.
Pankhaniyi, kulumikizana kulikonse kwa kasitomala nthawi zonse kumayendera purosesa imodzi. Ndipo izi zimakupatsani mwayi kuti mupange cache-wochezeka.
Kupatula apo, tasintha pang'ono kusonkhanitsa mapaketi ang'onoang'ono kukhala paketi imodzi yayikulu kuti titsitse stack ya TCP.
Kuonjezera apo, tapititsa patsogolo kugwirizanitsa kotero kuti Odyssey, ikakonzedwa, ikhoza kutumiza CANCEL ndi ROLLBACK ngati vuto la intaneti likulephera, mwachitsanzo, ngati palibe amene akuyembekezera pempho, Odyssey adzauza database kuti asayese kukwaniritsa. pempho limene lingawononge chuma chamtengo wapatali.
Ndipo ngati kuli kotheka, timasunga zolumikizana ndi kasitomala yemweyo. Izi zimapewa kuyikanso application_name_add_host. Ngati ndi kotheka, ndiye kuti tilibe kukonzanso kowonjezera kwa magawo omwe amafunikira pakuwunika.
Timagwira ntchito mokomera Yandex.Cloud. Ndipo ngati mukugwiritsa ntchito PostgreSQL yoyendetsedwa ndipo muli ndi cholumikizira cholumikizira, mutha kupanga zobwereza zomveka kunja, mwachitsanzo, tisiyeni ngati mukufuna, pogwiritsa ntchito kubwereza koyenera. Bouncer kunja kwa kubwereza zomveka sikudzapereka.
Ichi ndi chitsanzo cha kukhazikitsa zobwerezabwereza zomveka.
Kuonjezera apo, tili ndi chithandizo cha kubwereza kwa thupi kunja. Mu Mtambo, ndithudi, sizingatheke, chifukwa ndiye tsango lidzakupatsani inu zambiri zambiri za iyo yokha. Koma pakuyika kwanu, ngati mukufuna kubwerezabwereza kudzera pa pooler yolumikizira ku Odyssey, ndizotheka.
Odyssey ili ndi kuwunika kogwirizana kwathunthu ndi PgBouncer. Tili ndi kutonthoza komweko komwe kumapereka pafupifupi malamulo onse omwewo. Ngati china chake chikusowa, tumizani pempho kukoka, kapena vuto pa GitHub, tidzamaliza malamulo ofunikira. Koma tili ndi ntchito yayikulu ya PgBouncer console.
Ndipo ndithudi tili ndi zolakwika kutumiza. Tidzabwezera zolakwika zomwe zidanenedwa ndi maziko. Mudzapeza zambiri chifukwa chake simuli m'munsi, osati kuti mulibemo.
Izi ndizozimitsidwa ngati mungafunike 100% yogwirizana ndi PgBouncer. Titha kukhala ngati Bouncer, mwina.
Development
Mawu ochepa okhudza gwero la Odyssey.
Mwachitsanzo, pali malamulo a "Imani / Yambitsaninso". Nthawi zambiri amagwiritsidwa ntchito kukonza database. Ngati mukufuna kukweza Postgres, mutha kuyimitsa kaye polumikizira, chitani pg_upgrade, ndikuyambiranso. Ndipo kuchokera kumbali ya kasitomala, zidzawoneka ngati nkhokwe ikungochepa. Izi zidabweretsedwa kwa ife ndi anthu ammudzi. Iye sanafe, koma posachedwapa zonse zidzachitika. (wamwalira kale)
Kuonjezera apo, chimodzi mwa zinthu zatsopano mu PgBouncer ndi SCRAM Authentication support, yomwe inabweretsedwanso kwa ife ndi munthu yemwe sagwira ntchito ku Yandex.Cloud. Zonsezi ndizovuta komanso zofunikira.
Chifukwa chake, ndikufuna ndikuuzeni zomwe Odyssey amapangidwa nazo, ngati mungafunenso kulemba nambala pano.
Muli ndi maziko oyamba a Odyssey, omwe amadalira malaibulale akulu awiri. Laibulale ya Kiwi ndikukhazikitsa ma protocol a Postgres. Ndiko kuti, Postgres 'wamba proto 3 ndi mauthenga wamba kuti frontend ndi backends akhoza kusinthana. Amagwiritsidwa ntchito mu library ya Kiwi.
Laibulale ya Machinarium ndi laibulale yokhazikitsa ulusi. Chidutswa chaching'ono cha Machinarium ichi chalembedwa mu assembler. Koma musade nkhawa, pali mizere 15 yokha.
Zomangamanga za Odyssey. Pali makina akuluakulu oyendetsa ma coroutines. Makinawa amagwiritsa ntchito kuvomereza kulumikizidwa kwa TCP ndikugawa pakati pa antchito.
Mwa wogwira ntchito m'modzi, wothandizira makasitomala angapo amatha kugwira ntchito. Komanso mu ulusi waukulu, cholumikizira ndi kukonza ntchito za crone kuchotsa zolumikizira zomwe sizikufunikanso mu dziwe zikuzungulira.
Odyssey amayesedwa pogwiritsa ntchito standard Postgres test suite. Timangoyendetsa cheke kudzera pa Bouncer ndikudutsa Odyssey, timapeza null div. Pali mayeso angapo okhudzana ndi masanjidwe amasiku omwe amalephera chimodzimodzi mu Bouncer ndi Odyssey.
Kuphatikiza apo, pali madalaivala ambiri omwe ali ndi mayeso awoawo. Ndipo timagwiritsa ntchito mayeso awo kuyesa Odyssey.
Komanso, chifukwa cha kasinthidwe kathu, tiyenera kuyesa mitolo yosiyanasiyana: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey kuti titsimikize kuti ngati Odyssey ili mu gawo lililonse la cascade, imagwiranso ntchito monga momwe amayembekezera. .
Makoswe
Timagwiritsa ntchito Odyssey popanga. Ndipo sizingakhale bwino ndikanena kuti zonse zimayenda bwino. Ayi, i.e. inde, koma osati nthawi zonse. Mwachitsanzo, popanga zonse zidangogwira ntchito, ndiye anzathu ochokera ku PostgreSQL Professional adabwera nati tinali ndi vuto lokumbukira. Iwo analidi, tinawakonza. Koma zinali zosavuta.
Kenako tidapeza kuti cholumikizira cholumikizira chili ndi zolumikizira za TLS zomwe zikubwera komanso zolumikizira zotuluka za TLS. Ndipo maulumikizidwe amafunikira ziphaso za kasitomala ndi satifiketi ya seva.
Ziphaso za seva ya Bouncer ndi Odyssey zimawerengedwanso ndi pcache, koma ziphaso zamakasitomala siziyenera kuwerengedwanso kuchokera ku pcache, chifukwa Odyssey yathu yowopsa imakhazikika pamachitidwe owerengera satifiketi iyi. Izi zinatidabwitsa, chifukwa sanapume nthawi yomweyo. Poyamba, idakula motsatana, ndipo pambuyo pa kulumikizana 20 komwe kukubwera nthawi imodzi, vutoli lidawonekera.
plugable Authentication Method ndikutha kutsimikizira ndi zida zomangidwira za lunux. Mu PgBouncer, imayendetsedwa m'njira yoti pali ulusi wosiyana womwe ukuyembekezera yankho kuchokera ku PAM ndipo pali ulusi waukulu wa PgBouncer womwe umagwiritsa ntchito kugwirizana komweko ndipo ukhoza kuwafunsa kuti azikhala mu ulusi wa PAM.
Sitinagwiritse ntchito izi pa chifukwa chimodzi chophweka. Tili ndi mitsinje yambiri. Nβchifukwa chiyani tikuzifuna?
Zotsatira zake, izi zitha kubweretsa mavuto chifukwa ngati muli ndi kutsimikizika kwa PAM komanso kutsimikizira kopanda PAM, ndiye kuti kutsimikizika kwakukulu kwa PAM kumatha kuchedwetsa kutsimikizika kopanda PAM. Ndi chimodzi mwa zinthu zomwe sitinazikonze. Koma ngati mukufuna kukonza, mutha kuchita izi.
Chojambula china chinali chakuti tili ndi ulusi umodzi womwe umavomereza zolumikizira zonse zomwe zikubwera. Kenako amasamutsidwa ku dziwe la ogwira ntchito, komwe kugwirana chanza kwa TLS kudzachitika.
Zotsatira zake, ngati muli ndi mafunde ogwirizana a maukonde 20, onse adzalandiridwa. Ndipo kumbali ya kasitomala, libpq iyamba kupereka lipoti latha. Mwachikhazikitso, zimakhala ngati masekondi atatu pamenepo.
Ngati onse sangathe kulowa m'munsi nthawi imodzi, ndiye kuti sangathe kulowa m'munsi, chifukwa zonsezi zikhoza kutsekedwa ndi kuyesa kosawerengeka.
Tidamaliza kukopera dongosolo la PgBouncer pano kuti tichepetse kuchuluka kwa ma TCP omwe timavomereza.
Ngati tiwona kuti tikuvomereza kulumikizana, koma alibe nthawi yogwirana chanza pamapeto pake, timawayika pamzere kuti asawononge zida za CPU. Izi zimapangitsa kuti kugwirana chanza nthawi imodzi sikungachitike pazolumikizana zonse zomwe zafika. Koma osachepera wina adzalowa mu database, ngakhale katunduyo ndi wamphamvu mokwanira.
Roadmap
Kodi mungakonde kuwona chiyani m'tsogolomu ku Odyssey? Kodi ndife okonzeka kudzitukumula tokha ndipo tikuyembekezera chiyani kwa anthu ammudzi?
Kwa Ogasiti 2019.
Izi ndi zomwe misewu ya Odyssey inkawoneka mu Ogasiti:
- Tinkafuna kutsimikizika kwa SCRAM ndi PAM.
- Tinkafuna kutumiza zopempha zowerengera ku standby.
- Ndikufuna kuyambitsanso intaneti.
- Komanso kutha kuyimitsa pa seva.
Theka la mapuwa apangidwa, osati ndi ife. Ndipo izi ndi zabwino. Ndiye tiyeni tikambirane zomwe zatsala ndikuwonjezera zina.
M'malo mwake, mu Postgres, kuyambira 10, ndizotheka kufotokoza gawo_attrs polumikizana. Mutha kulembetsa nkhokwe zonse zomwe zili mumgwirizanowu ndikunena chifukwa chake mukupita ku database: lembani kapena werengani kokha. Ndipo dalaivala mwiniwakeyo adzasankha wolandira woyamba pamndandanda womwe amakonda kwambiri, womwe umakwaniritsa zofunikira za session_attrs.
Koma vuto ndi njira iyi ndikuti sikuwongolera kubwerezabwereza. Mutha kukhala ndi mtundu wina wofananira womwe watsalira ndi nthawi yosavomerezeka yautumiki wanu. Kuti tikwaniritse zopempha zowerenga pa chofananira, tifunika kuthandizira ku Odyssey kuthekera kosagwira ntchito ngati sikungathe kuwerenga.
Odyssey amayenera kupita ku database nthawi ndi nthawi ndikupempha mtunda wobwereza kuchokera ku pulayimale. Ndipo ngati zafika polekezera, musalole zopempha zatsopano mu database, auzeni kasitomala kuti muyenera kuyambitsanso maulumikizidwe ndipo, mwina, sankhani wolandira wina kuti apereke zopempha. Izi zilola kuti databaseyo ibwezeretse mwachangu kubwereza ndikubwereranso kuti muyankhe ndi funso.
Ndizovuta kutchula masiku okhazikitsa, chifukwa ndi gwero lotseguka. Koma, ndikuyembekeza, osati zaka 2,5 monga anzanga ochokera ku PgBouncer. Izi ndi zomwe ndikufuna kuwona ku Odyssey.
Koma pali mawu okonzekera pamlingo wa protocol wa proto3. Ndipo awa ndi malo pomwe chidziwitso chomwe mawu okonzekera akupangidwa amabwera mwadongosolo. Ndipo titha kuthandizira kumvetsetsa kuti pamalumikizidwe ena a seva kasitomala amafunsa kuti apange mawu okonzekera. Ndipo ngakhale ntchitoyo itatsekedwa, tifunikabe kusunga seva ndi kasitomala zikugwirizana.
Koma apa pali kusiyana pakati pa zokambirana, chifukwa wina akunena kuti muyenera kumvetsetsa zomwe wokonzekera kasitomala adalenga ndikugawana kugwirizana kwa seva pakati pa makasitomala onse omwe adapanga kugwirizana kwa seva, mwachitsanzo, amene adapanga mawu okonzeka.
Andres Freund adanena kuti ngati kasitomala abwera kwa inu yemwe adapanga kale mawu okonzekera otere mu kulumikizana kwina kwa seva, ndiye mpangireni. Koma zikuwoneka kuti ndi zolakwika pang'ono kuchita mafunso mu database m'malo mwa kasitomala, koma kuchokera kumalingaliro a wopanga mapulogalamu omwe amalemba protocol yolumikizirana ndi nkhokwe, zingakhale bwino ngati angopatsidwa kulumikizidwa kwa netiweki. amene ali ndi pempho lokonzekera chotero.
Ndipo chinthu chinanso chomwe tiyenera kuchita. Tsopano tili ndi kuwunika komwe kumagwirizana ndi PgBouncer. Titha kubweza nthawi yapakati yoyankha mafunso. Koma nthawi yapakati ndi kutentha kwapakati m'chipatala: wina akuzizira, wina ndi wofunda - pafupifupi aliyense ali wathanzi. Sizoona.
Tiyenera kugwiritsa ntchito thandizo la ma percentiles, zomwe zingasonyeze kuti pali zopempha zapang'onopang'ono zomwe zimawononga chuma ndipo zingapangitse kuwunika kukhala kovomerezeka.
Chofunika kwambiri ndikuti ndikufuna mtundu 1.0 (Version 1.1 yatulutsidwa kale). Chowonadi ndi chakuti tsopano Odyssey ili mu mtundu 1.0rc, mwachitsanzo, womasulidwa. Ndipo zonse zomwe ndidazilemba zidakonzedwa ndendende ndi mtundu womwewo, kupatula kutayikira kwa kukumbukira.
Kodi mtundu 1.0 utanthauza chiyani kwa ife? Tikutulutsa Odyssey ku maziko athu. Ikuyendetsa kale pamabuku athu, koma ikafika pazifukwa za 1 pamphindikati, ndiye kuti tinganene kuti iyi ndi mtundu womasulidwa ndipo iyi ndi mtundu womwe ungatchulidwe 000.
Anthu angapo mderali apempha kuti ayime pang'ono ndi SCRAM mu mtundu 1.0. Koma izi zikutanthauza kuti tifunika kutulutsa mtundu wina kuti upangidwe, chifukwa SCRAM kapena kupuma sikunaphatikizidwebe. Koma, mwina, nkhaniyi idzathetsedwa mwachangu.
Ndikuyembekezera pempho lanu kukoka. Ndipo ndikufunanso kumva zovuta zomwe muli nazo ndi Bouncer. Tiyeni tikambirane. Mwina titha kugwiritsa ntchito zina zomwe mukufuna.
Izi zikumaliza gawo langa, ndikufuna kumva kuchokera kwa inu. Zikomo!
Mafunso anu
Ngati ndiyika application_name yanga, kodi idzaponyedwa molondola, kuphatikiza pakugawana ku Odyssey?
Odyssey kapena Bouncer?
Mu Odyssey. Bouncer waponyedwa.
Tipanga seti.
Ndipo ngati kulumikizana kwanga kwenikweni kumadumphira pamalumikizidwe ena, kodi kufalikira?
Tipanga ma parameter onse omwe alembedwa. Sindikudziwa ngati application_name ili pamndandandawu. Zikuoneka kuti anamuona kumeneko. Tikhazikitsa magawo onse ofanana. Ndi pempho limodzi, setiyo idzachita zonse zomwe zinayikidwa ndi kasitomala panthawi yoyambira.
Zikomo Andrey chifukwa cha lipoti! Lipoti labwino! Ndine wokondwa kuti Odyssey ikukula mwachangu komanso mwachangu mphindi iliyonse. Ndikufuna kupitiriza zomwezo. Takufunsani kale kuti mukhale ndi malumikizano ambiri a data-source kuti Odyssey athe kulumikizana ndi ma database osiyanasiyana nthawi imodzi, i.e. mbuye wa akapolo, ndiyeno mulumikizane ndi mbuye watsopanoyo pambuyo polephera.
Inde, ndikuwoneka kuti ndikukumbukira zokambiranazo. Tsopano pali angapo storages. Koma palibe kusinthana pakati pawo. Kumbali yathu, tiyenera kufunsa seva kuti ikadali yamoyo ndikumvetsetsa kuti kulephera kwachitika, ndani adzayitana pg_recovery. Ndili ndi njira yodziwika bwino yomvetsetsa kuti sitinabwere kwa mbuye. Ndipo tiyenera kumvetsetsa mwanjira ina kuchokera ku zolakwazo kapena motani? Ndiko kuti, lingalirolo ndi losangalatsa, likukambidwa. Lembani ndemanga zambiri. Ngati muli ndi manja ogwira ntchito omwe amadziwa C, ndiye kuti izi ndizabwino kwambiri.
Nkhani yakukulitsa zofananira ndi yosangalatsanso kwa ife, chifukwa tikufuna kupanga kutengera magulu ofananirako kukhala kosavuta momwe tingathere kwa opanga mapulogalamu. Koma apa ndikufuna ndemanga zambiri, ndiye kuti, momwe mungachitire, momwe mungachitire bwino.
Funso likukhudzanso zofananira. Zikuoneka kuti muli ndi mbuye ndi angapo replicas. Ndipo zikuwonekeratu kuti amapita kofananira nthawi zambiri kuposa kwa ambuye kuti akalumikizane, chifukwa amatha kukhala ndi kusiyana. Munanena kuti kusiyana kwa data kungakhale kotero kuti bizinesi yanu siikhutiritsa ndipo simudzapita kumeneko mpaka itabwerezedwanso. Panthawi imodzimodziyo, ngati simunapite kumeneko kwa nthawi yaitali, ndiyeno mutayamba kupita, ndiye kuti deta yomwe mukufunikira sidzakhalapo nthawi yomweyo. Ndiko kuti, ngati timapita kwa mbuye nthawi zonse, ndiye kuti cache imatenthedwa pamenepo, ndipo posungirayo ndi kumbuyo pang'ono mu replica.
Inde ndi zoona. Sipadzakhala midadada ya data mu pcache yomwe mukufuna, mu cache yeniyeni sipadzakhala chidziwitso cha matebulo omwe mukufuna, sipadzakhalanso mafunso osankhidwa mu mapulani, palibe kalikonse.
Ndipo mukakhala ndi mtundu wina wa tsango, ndipo muwonjezera chofananira chatsopano pamenepo, ndiye pamene icho chikuyamba, chirichonse chimakhala choipa mmenemo, mwachitsanzo, chimakula posungira.
Ndinali ndi lingaliro. Njira yolondola ingakhale kufunsa mafunso pang'ono pazithunzizo poyamba, zomwe zingatenthetse cache. Mwachidule, tili ndi chikhalidwe choti sitiyenera kukhala opitilira masekondi 10 kumbuyo kwa mbuye. Ndipo chikhalidwe ichi sichiyenera kuphatikizidwa mu funde limodzi, koma bwino kwa makasitomala ena.
Inde, onjezerani kulemera.
Ili ndi lingaliro labwino. Koma choyamba muyenera kukhazikitsa shutdown iyi. Choyamba tiyenera kuzimitsa, ndiyeno tiganizira momwe tingayatse. Ichi ndi chachikulu mbali kuyatsa bwino.
nginx ili ndi izi slowly start
mu gulu la seva. Ndipo pangβonopangβono amaukulitsa.
Inde, lingaliro labwino, tidzayesa tikafika pamenepo.
Source: www.habr.com