Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ina thuairisc, inseoidh Andrey Borodin duit conas a chuir siad san áireamh an taithí a bhaineann le scálaithe PgBouncer agus an comhthiomsú nasc á dhearadh Odyssey, agus iad á rolladh amach i dtáirgeadh. Ina theannta sin, déanfaimid plé ar na feidhmeanna atá ag an ulóg ar mhaith linn a fheiceáil i leaganacha nua: tá sé tábhachtach dúinn ní hamháin freastal ar ár riachtanais, ach an pobal úsáideoirí a fhorbairt Odyssey.

Físeán:

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Dia duit gach duine! Andrew is ainm dom.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ag Yandex, forbraím bunachair shonraí foinse oscailte. Agus lá atá inniu ann tá ábhar againn faoi naisc comhthiomsaithe nasc.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Má tá a fhios agat conas comhthiomsóir nasc a ghlaoch i Rúisis, inis dom ansin. Ba mhaith liom i ndáiríre a aimsiú téarma teicniúil maith ba chóir a bhunú sa litríocht theicniúil.

Tá an t-ábhar casta go leor, mar go bhfuil an comhthiomsóir naisc ionsuite i go leor bunachair shonraí agus ní gá fiú a bheith ar an eolas faoi. Ar ndóigh, tá roinnt socruithe i ngach áit, ach i Postgres ní oibríonn sé mar sin. Agus ag an am céanna (ag HighLoad++ 2019) tá tuarascáil ó Nikolai Samokhvalov faoi cheisteanna a shocrú i Postgres. Agus de réir mar a thuigim é, tháinig daoine anseo a raibh a gcuid fiosrúchán cumraithe go foirfe acu cheana féin, agus is daoine iad seo a bhfuil fadhbanna córais níos neamhchoitianta acu a bhaineann leis an ngréasán agus le húsáid acmhainní. Agus in áiteanna áirithe d'fhéadfadh sé a bheith deacair go leor sa chiall nach bhfuil na fadhbanna soiléir.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá Postgres ag Yandex. Tá go leor seirbhísí Yandex ina gcónaí i Yandex.Cloud. Agus tá roinnt petabytes sonraí againn a ghineann ar a laghad milliún iarratas in aghaidh an tsoicind i Postgres.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus a chuirimid ar fáil braisle measartha caighdeánach do na seirbhísí go léir - is é seo an príomh nód príomhúil an nód, an dá macasamhail is gnách (sioncrónach agus asincrónach), cúltaca, scálú na n-iarratas léitheoireachta ar an macasamhail.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is é Postgres gach nód braisle, ar a bhfuil, chomh maith le Postgres agus córais monatóireachta, comhthiomsóir naisc suiteáilte freisin. Úsáidtear comhthiomsóir ceangail le haghaidh fálú agus le haghaidh a phríomhchuspóir.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Cad é príomhchuspóir an chomhthiomsaithe naisc?

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Glacann Postgres múnla próisis agus é ag obair le bunachar sonraí. Ciallaíonn sé seo gur próiseas amháin é nasc amháin, inneall amháin Postgres. Agus sa inneall seo tá go leor caches éagsúla, atá costasach go leor a dhéanamh difriúil le haghaidh naisc éagsúla.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ina theannta sin, tá sraith ar a dtugtar procArray ag cód Postgres. Tá sonraí bunúsacha ann faoi naisc líonra. Agus tá castacht líneach ag beagnach gach algartam próiseála procArray; ritheann siad thar an raon iomlán de naisc líonra. Is timthriall tapa go leor é, ach le níos mó naisc líonra ag teacht isteach éiríonn rudaí beagán níos costasaí. Agus nuair a éiríonn rudaí beagán níos costasaí, féadfaidh tú praghas an-ard a íoc ar go leor nasc líonra.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá 3 chur chuige féideartha ann:

  • Ar thaobh an iarratais.
  • Ar thaobh an bhunachair shonraí.
  • Agus idir, is é sin, gach cineál teaglaim.

Ar an drochuair, tá an linn snámha ionsuite á fhorbairt faoi láthair. Déanann ár gcairde ag PostgreSQL Professional é seo den chuid is mó. Is deacair a thuar cathain a bheidh sé le feiceáil. Agus go deimhin, tá dhá réiteach againn don ailtire a roghnú as. Is iad seo linn iarratas-taobh agus linn seachfhreastalaí.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is é an bealach is éasca linn snámha ar thaobh iarratais. Agus soláthraíonn beagnach gach tiománaí cliant bealach duit: cuir na milliúin de do naisc i gcód i láthair mar roinnt dosaen nasc leis an mbunachar sonraí.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is í an fhadhb a thagann chun cinn ná go bhfuil tú ag iarraidh an t-innill a scála ag pointe áirithe, ba mhaith leat é a imscaradh chuig go leor meaisíní fíorúla.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ansin tuigeann tú go bhfuil go leor criosanna infhaighteachta eile agat, go leor ionad sonraí. Agus tagann líon mór as cur chuige comhthiomsaithe taobh na gcliant. Tá thart ar 10 nasc ag na cinn mhóra. Is é seo an imeall is féidir a bheith ag obair de ghnáth.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Má labhairt linn faoi comhthiomsaithe seachfhreastalaí, tá dhá chomhthiomsóirí ann ar féidir leo a lán rudaí a dhéanamh. Ní hamháin gur linnteóirí iad. Tá siad poolers + feidhmiúlacht níos fionnuar. seo Pgpool и Crunchy-Seachfhreastalaí.

Ach, ar an drochuair, níl an fheidhmiúlacht bhreise seo ag teastáil ó gach duine. Agus mar thoradh air sin ní thacaíonn comhthiomsaithe ach le comhthiomsú seisiún, i.e. cliant amháin ag teacht isteach, cliant amháin atá ag dul as oifig chuig an mbunachar sonraí.

Níl sé seo an-oiriúnach dár gcríocha, mar sin úsáidimid PgBouncer, a chuireann comhthiomsú idirbheart i bhfeidhm, i.e. ní dhéantar naisc fhreastalaí a mheaitseáil le naisc chliaint ach amháin ar feadh ré an idirbhirt.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus inár n-ualach oibre, tá sé seo fíor. Ach tá cúpla fadhb ann.Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tosaíonn na fadhbanna nuair is mian leat seisiún a dhiagnóiseadh, toisc go bhfuil do naisc isteach go léir áitiúil. Tháinig gach duine le lúb siar agus ar bhealach bíonn sé deacair an seisiún a rianú.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ar ndóigh, is féidir leat application_name_add_host a úsáid. Is bealach é seo ar an taobh Bouncer chun seoladh IP a chur le application_name. Ach tá application_name socraithe ag nasc breise.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ar an ngraf seo, áit a bhfuil an líne buí fíor-iarratais, agus áit a bhfuil an líne ghorm iarratais a eitilt isteach sa bhunachar sonraí. Agus is é an difríocht seo go beacht ná application_name a shuiteáil, nach bhfuil ag teastáil ach amháin le haghaidh rianú, ach níl sé saor in aisce ar chor ar bith.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ina theannta sin, in Bouncer ní féidir leat linn snámha amháin a theorannú, i.e. líon na nasc bunachar sonraí in aghaidh an úsáideora ar leith, in aghaidh an bhunachair shonraí ar leith.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Cad as a dtagann sé seo? Tá seirbhís luchtaithe agat scríofa i C ++ agus áit éigin in aice láimhe seirbhís bheag ar nód nach ndéanann aon rud uafásach leis an mbunachar sonraí, ach téann a tiománaí ar mire. Osclaíonn sé 20 nasc agus fanfaidh gach rud eile. Is gnáth fiú do chód.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ar ndóigh, scríobhamar paiste beag do Bouncer a chuir an socrú seo leis, i.e. cliaint a theorannú don linn.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

D’fhéadfaí é seo a dhéanamh ar thaobh Postgres, i.e., teorainn a chur leis na róil sa bhunachar sonraí faoi líon na nasc.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ach ansin caillfidh tú an cumas a thuiscint cén fáth nach bhfuil aon naisc leis an bhfreastalaí. Ní chaitheann PgBouncer earráid cheangail, cuireann sé an fhaisnéis chéanna ar ais i gcónaí. Agus ní thuigeann tú: b’fhéidir go bhfuil do phasfhocal athraithe, b’fhéidir go bhfuil an bunachar sonraí imithe amú, b’fhéidir go bhfuil rud éigin mícheart. Ach níl aon diagnóis ann. Mura féidir seisiún a bhunú, ní bheidh a fhios agat cén fáth nach féidir é a bhunú.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ag pointe áirithe, breathnaíonn tú ar ghraif an iarratais agus feiceann tú nach bhfuil an t-iarratas ag obair.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Féach ar an mbarr agus féach go bhfuil Bouncer aon-snáithithe. Is pointe casaidh é seo i saol na seirbhíse. Tuigeann tú go raibh tú ag ullmhú chun scála a dhéanamh ar an mbunachar sonraí i mbliain go leith, agus ní mór duit an comhthiomsóir a scála.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Táimid tar éis teacht ar an tátal go dteastaíonn níos mó PgBouncers uainn.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

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

Tá bouncer paiste beagán.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus rinne siad é ionas go bhféadfaí roinnt Bouncers a ardú tríd an calafort TCP a athúsáid. Agus aistríonn an córas oibriúcháin naisc TCP atá ag teacht isteach eatarthu go huathoibríoch ag baint úsáide as robin bhabhta.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá sé seo trédhearcach do chliaint, rud a chiallaíonn go bhfuil an chuma air go bhfuil Bouncer amháin agat, ach go bhfuil ilroinnt naisc díomhaoin agat idir Bouncers reatha.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus ag tráth áirithe b'fhéidir go dtabharfaidh tú faoi deara go n-itheann na 3 Preabadóir seo a gcroí faoi 100%. Teastaíonn go leor Bouncers uait. Cén fáth?

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Toisc go bhfuil TLS agat. Tá nasc criptithe agat. Agus má dhéanann tú tagarmharcáil ar Postgres le TLS agus gan é, gheobhaidh tú amach go dtagann laghdú beagnach dhá ordú méide ar líon na nasc bunaithe le criptiú cumasaithe, toisc go n-ídíonn an croitheadh ​​láimhe TLS acmhainní LAP.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus ag an mbarr is féidir leat go leor feidhmeanna cripteagrafacha a fheiceáil a fhorghníomhaítear nuair a bhíonn tonn de naisc ag teacht isteach. Ós rud é gur féidir lenár mbunscoileanna aistriú idir criosanna infhaighteachta, is gnáthchás é tonn de naisc isteach. Is é sin, ar chúis éigin nach raibh an sean-bhunscoil ar fáil, cuireadh an t-ualach iomlán chuig ionad sonraí eile. Tiocfaidh siad go léir chun Dia duit a rá le TLS ag an am céanna.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus b’fhéidir nach ndéarfadh líon mór de chroitheadh ​​láimhe TLS hello a thuilleadh le Bouncer, ach go gcuirfidh sé brú ar a scornach. Mar gheall ar an teorainn ama, d'fhéadfadh go n-éireoidh tonn na nasc isteach gan mhaolú. Má dhéanann tú iarracht ar ais go dtí an bonn gan cúlú easpónantúil, ní thiocfaidh siad arís agus arís eile i dtonn comhleanúnach.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Seo sampla de 16 PgBouncers a luchtaíonn 16 chroí ag 100%.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tháinig muid go dtí an PgBouncer cascade. Is é seo an chumraíocht is fearr is féidir a bhaint amach ar ár n-ualach le Bouncer. Úsáidtear ár Bouncers seachtracha le haghaidh croitheadh ​​láimhe TCP, agus úsáidtear Preabadóirí inmheánacha le haghaidh comhthiomsú fíor, ionas nach scarann ​​siad naisc sheachtracha ró-mhór.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Sa chumraíocht seo, is féidir atosú réidh. Is féidir leat na 18 Preabadóir seo go léir a atosú ceann ar cheann. Ach tá sé deacair go leor cumraíocht den sórt sin a chothabháil. Ní bheidh Sysadmins, DevOps, agus daoine atá freagrach as an bhfreastalaí seo an-sásta leis an socrú seo.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is cosúil gur féidir ár bhfeabhsuithe go léir a chur chun cinn go foinse oscailte, ach ní thugtar tacaíocht mhaith do Bouncer. Mar shampla, gealladh an cumas chun roinnt PgBouncers a reáchtáil ar chalafort amháin mí ó shin. Bhí iarratas tarraingt leis an ngné seo roinnt blianta ó shin.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

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

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

Nó sampla amháin eile. In Postgres, is féidir leat iarratas atá ar siúl a chealú tríd an rún a sheoladh chuig nasc eile gan fíordheimhniú neamhriachtanach. Ach ní dhéanann roinnt cliant ach athshocrú TCP a sheoladh, i.e. briseann siad an nasc líonra. Cad a dhéanfaidh Bouncer? Ní dhéanfaidh sé faic. Leanfaidh sé leis an iarratas a fhorghníomhú. Má tá líon mór naisc faighte agat a chruthaigh bunachar sonraí le hiarratais bheaga, ní leor an nasc a dhícheangal ó Bouncer; ní mór duit na hiarratais sin atá ar siúl sa bhunachar sonraí a chomhlánú freisin.

Tá sé seo paisteáilte agus níl an fhadhb seo cumasctha le Bouncer in aghaidh srutha fós.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus mar sin tháinig muid ar an tátal go dteastaíonn ár gcomhthiomsóir nasc féin uainn, a fhorbrófar, a bhreacadh síos, inar féidir fadhbanna a cheartú go tapa agus nach mór, ar ndóigh, a bheith il-snáithithe.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Shocraigh muid multithreading mar an tasc is mó. Ní mór dúinn a bheith in ann an tonn de naisc TLS ag teacht isteach a láimhseáil go maith.

Chun seo a dhéanamh, bhí orainn leabharlann ar leith a fhorbairt ar a dtugtar Machinarium, atá deartha chun cur síos a dhéanamh ar staid mheaisíní nasc líonra mar chód seicheamhach. Má fhéachann tú ar an gcód foinse libpq, feicfidh tú roinnt glaonna casta go leor ar féidir leo toradh a thabhairt ar ais duit agus a rá, “Cuir glaoch orm níos déanaí. Tá IO agam faoi láthair, ach nuair a imeoidh an IO beidh ualach orm ar an bpróiseálaí.” Agus is scéim il-leibhéil í seo. De ghnáth déantar cur síos ar chumarsáid líonra ag meaisín stáit. Go leor rialacha mar “Má fuair mé ceanntásc paicéad ar mhéid N roimhe seo, táim ag fanacht anois le N bytes,” “Má sheol mé paicéad SYNC, táim ag fanacht anois ar phaicéad le meiteashonraí torthaí.” Is é an toradh atá sách deacair, cód frith-intuigthe, amhail is dá ndéanfaí an gcathair ghríobháin a thiontú go scanadh líne. Rinneamar é ionas go ndéanann an ríomhchláraitheoir cur síos ar an bpríomhchonair idirghníomhaíochta in ionad meaisín stáit i bhfoirm gnáthchóid riachtanach. Níl ann ach sa chód riachtanach seo go gcaithfidh tú áiteanna a chur isteach ina bhfuil gá le cur isteach ar an seicheamh forghníomhaithe trí bheith ag fanacht le sonraí ón líonra, an comhthéacs forghníomhaithe a chur ar aghaidh chuig coroutine eile (snáithe glas). Tá an cur chuige seo cosúil leis an bhfíric go scríobhfaimid síos an cosán is mó a bhfuiltear ag súil leis sa chathair ghríobháin i ndiaidh a chéile, agus ansin cuir brainsí leis.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Mar thoradh air sin, tá snáithe amháin againn a ghlacann TCP agus a théann robin bhabhta an nasc TPC chuig go leor oibrithe.

Sa chás seo, ritheann gach nasc cliant i gcónaí ar phróiseálaí amháin. Agus ligeann sé seo duit é a dhéanamh cairdiúil don taisce.

Agus ina theannta sin, tá beagán feabhsaithe againn ar bhailiú paicéid bheaga isteach i bpaicéad mór amháin chun cruach TCP an chórais a mhaolú.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ina theannta sin, tá comhthiomsú idirbheartaíochta feabhsaithe againn sa chiall gur féidir le Odyssey, nuair a bhíonn sé cumraithe, CANCEL agus ROLLBACK a sheoladh i gcás teip ar nasc líonra, i.e. mura bhfuil aon duine ag fanacht le hiarratas, inseoidh Odyssey don bhunachar sonraí gan iarracht a dhéanamh. an t-iarratas a d’fhéadfadh acmhainní luachmhara a chur amú a chomhlíonadh.

Agus nuair is féidir, coinnímid naisc leis an gcliant céanna. Seachnaíonn sé seo go gcaithfidh tú iarratas_name_add_host a athshuiteáil. Más féidir é seo a dhéanamh, ní gá dúinn na paraiméadair a theastaíonn le haghaidh diagnóisic a athshocrú freisin.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Oibrímid ar mhaithe le Yandex.Cloud. Agus má úsáideann tú PostgreSQL bainistithe agus má tá comhthiomsóir ceangail suiteáilte agat, is féidir leat macasamhlú loighciúil a chruthú amach, ie, fág sinn, más mian leat, ag baint úsáide as macasamhlú loighciúil. Ní scaoilfidh bouncer an sreabhadh macasamhlú loighciúil lasmuigh.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is sampla é seo de mhacasamhlú loighciúil a bhunú.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ina theannta sin, tá tacaíocht againn don mhacasamhlú fisiciúil amach. Sa Cloud, ar ndóigh, tá sé seo dodhéanta, mar gheall ar ansin beidh an bhraisle a thabhairt duit i bhfad ró-eolas faoi féin. Ach i do shuiteálacha, má theastaíonn macasamhlú fisiciúil uait tríd an gcomhthiomsú nasc in Odyssey, is féidir é seo a dhéanamh.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá monatóireacht iomlán comhoiriúnach ag Odyssey le PgBouncer. Tá an consól céanna againn a ritheann beagnach gach orduithe céanna. Má tá rud éigin ar iarraidh, seol iarratas tarraingt, nó ar a laghad ceist ar GitHub, agus cuirfimid na horduithe riachtanacha i gcrích. Ach tá príomhfheidhmiúlacht an chonsóil PgBouncer againn cheana féin.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus, ar ndóigh, ní mór dúinn earráid a chur ar aghaidh. Cuirfimid ar ais an earráid a thuairiscigh an bunachar sonraí. Gheobhaidh tú faisnéis faoin bhfáth nach bhfuil tú san áireamh sa bhunachar sonraí, agus ní hamháin nach bhfuil tú san áireamh ann.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá an ghné seo díchumasaithe ar eagla go mbeidh comhoiriúnacht 100% uait le PgBouncer. Is féidir linn féin a iompar ar an mbealach céanna le Bouncer, ach a bheith ar an taobh sábháilte.

Forbairt

Cúpla focal faoin gcód foinse Odyssey.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

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

Mar shampla, tá orduithe “Sos / Atosú”. Úsáidtear iad de ghnáth chun an bunachar sonraí a nuashonrú. Más gá duit Postgres a nuashonrú, is féidir leat é a chur ar sos sa chomhthiomsú naisc, pg_upgrade a dhéanamh, agus ansin atosú. Agus ó thaobh an chliaint beidh sé cosúil go raibh an bunachar sonraí ag moilliú. Thug daoine ón bpobal an feidhmiúlacht seo chugainn. Níl sí reoite fós, ach go luath beidh gach rud. (Reoite cheana féin)

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - reoite cheana féin

Ina theannta sin, ceann de na gnéithe nua i PgBouncer is ea tacaíocht do SCRAM Fíordheimhniú, a thug duine nach bhfuil ag obair i Yandex.Cloud chugainn freisin. Tá an dá fheidhmiúlacht casta agus tábhachtach.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Mar sin, ba mhaith liom a insint duit cad as a bhfuil Odyssey déanta, ar eagla go dteastaíonn uait cód beag a scríobh anois freisin.

Tá bonn foinse Odyssey agat, a bhraitheann ar dhá phríomhleabharlann. Is cur i bhfeidhm phrótacal teachtaireachta Postgres í leabharlann Kiwi. Is é sin le rá, is teachtaireachtaí caighdeánacha iad proto 3 dúchais de Postgres ar féidir leis na foircinn tosaigh agus na foircinn cúil a mhalartú. Cuirtear i bhfeidhm iad i leabharlann Kiwi.

Is leabharlann feidhmithe snáithe í leabharlann Machinarium. Tá blúire beag den Machinarium seo scríofa i dteanga tionóil. Ach ná bíodh faitíos ort, níl ach 15 líne ann.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

ailtireacht Odyssey. Tá príomh-mheaisín ar a bhfuil coroutines ag rith. Cuireann an meaisín seo i bhfeidhm glacadh le naisc TCP atá ag teacht isteach agus iad a dháileadh i measc oibrithe.

Is féidir le láimhseálaí do chliaint éagsúla oibriú laistigh d'oibrí amháin. Ritheann an príomh-snáithe freisin an consól agus próiseáil tascanna crone chun naisc nach bhfuil ag teastáil sa chomhthiomsú a thuilleadh a scriosadh.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Déantar Odyssey a thástáil ag baint úsáide as an seomra tástála caighdeánach Postgres. Ritheann muid suiteáil-seiceáil trí Bouncer agus trí Odyssey, faigheann muid div null. Tá roinnt tástálacha a bhaineann le formáidiú dáta nach n-éiríonn go díreach mar an gcéanna in Bouncer agus in Odyssey.

Ina theannta sin, tá go leor tiománaithe a bhfuil a gcuid tástála féin. Agus bainimid úsáid as a gcuid tástálacha chun an Odyssey a thástáil.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ina theannta sin, mar gheall ar ár gcumraíocht cascáideach, ní mór dúinn babhtaí éagsúla a thástáil: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey d'fhonn a bheith cinnte má chríochnaigh Odyssey in aon cheann de na codanna sa easghluaiseachta, oibríonn sé fós. mar táimid ag súil.

Rake

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Bainimid úsáid as Odyssey i dtáirgeadh. Agus ní bheadh ​​sé cothrom dá ndéarfainn go n-oibríonn gach rud. Ní hea, is é sin, tá, ach ní i gcónaí. Mar shampla, i dtáirgeadh d'oibrigh gach rud díreach, ansin tháinig ár gcairde ó PostgreSQL Professional agus dúirt siad go raibh sceitheadh ​​cuimhne againn. Bhí siad i ndáiríre, ceartaigh muid iad. Ach bhí sé simplí.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ansin fuaireamar amach go bhfuil naisc TLS isteach agus naisc TLS amach ag an gcomhthiomsóir nasc. Agus éilíonn naisc deimhnithe cliant agus deimhnithe freastalaí.

Athléann a pcache deimhnithe freastalaí Bouncer agus Odyssey, ach ní gá teastais na gcliant a athléamh ó pcache, toisc go dtéann ár n-Odyssey Inscálaithe isteach i bhfeidhmíocht an chórais chun an teastas seo a léamh ar deireadh thiar. Chuir sé seo iontas orainn, mar níor thóg sé i bhfad air cur ina choinne. Ar dtús scálaigh sé go líneach, ach tar éis 20 nasc comhuaineach ag teacht isteach léirigh an fhadhb seo í féin.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is é Modh Fíordheimhnithe Pluggable an cumas fíordheimhniú a dhéanamh trí úsáid a bhaint as uirlisí ionsuite Lunux. I PgBouncer cuirtear i bhfeidhm é sa chaoi is go bhfuil snáithe ar leith ann chun fanacht le freagra ó PAM agus tá príomh-snáithe PgBouncer ann a fhreastalaíonn ar an nasc reatha agus is féidir iarraidh orthu maireachtáil sa snáithe PAM.

Níor chuireamar é seo i bhfeidhm ar chúis shimplí amháin. Tá a lán snáitheanna againn. Cén fáth a bhfuil gá againn leis seo?

Féadfaidh sé seo fadhbanna a chruthú ar deireadh thiar sa mhéid is go má tá fíordheimhniú PAM agus fíordheimhniú neamh-PAM agat, ansin is féidir le tonn mhór de fhíordheimhniú PAM moill mhór a chur ar fhíordheimhniú neamh-PAM. Tá sé seo ar cheann de na rudaí nach bhfuil socraithe againn. Ach más mian leat é a shocrú, is féidir leat é seo a dhéanamh.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Raca eile a bhí ann ná go bhfuil snáithe amháin againn a ghlacann le gach nasc a thagann isteach. Agus ansin aistrítear iad chuig an linn oibrithe, áit a mbeidh an croitheadh ​​láimhe TLS ar siúl.

Bunlíne, má tá tonn comhleanúnach de 20 nasc líonra agat, glacfar leo go léir. Agus ar thaobh an chliaint tosóidh libpq ag tuairisciú tréimhsí ama. De réir réamhshocraithe is cosúil go bhfuil sé 000 soicind.

Más rud é nach féidir leo go léir dul isteach sa bhunachar sonraí ag an am céanna, ní féidir leo dul isteach sa bhunachar sonraí, mar is féidir é seo go léir a bheith clúdaithe ag atriail neamheaspónantúil.

Thángamar ar an tátal gur chóipeáileamar an scéim ó PgBouncer anseo leis an bhfíric go bhfuil líon na nasc TCP a nglacaimid leo ag brú isteach orainn.

Má fheicimid go bhfuilimid ag glacadh le naisc, ach nach mbíonn am acu sa deireadh le croitheadh ​​láimhe, cuirimid i scuaine iad ionas nach gcaitheann siad acmhainní LAP. Mar thoradh air seo ní féidir croitheadh ​​láimhe comhuaineach a dhéanamh do gach nasc a tháinig. Ach ar a laghad beidh duine ag dul isteach sa bhunachar sonraí, fiú má tá an t-ualach trom go leor.

Treochlár

Cad ba mhaith leat a fheiceáil san Odyssey amach anseo? Cad atáimid réidh chun sinn féin a fhorbairt agus cad a bhfuilimid ag súil leis ón bpobal?

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Amhail Lúnasa 2019.

Seo an chuma a bhí ar an treochlár Odyssey i mí Lúnasa:

  • Theastaigh uainn fíordheimhniú SCRAM agus PAM.
  • Theastaigh uainn iarratais léitheoireachta a chur ar aghaidh chuig fuireachas.
  • Ba mhaith liom atosú ar líne.
  • Agus an cumas chun sos ar an bhfreastalaí.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá leath den treochlár seo críochnaithe, agus ní againne. Agus tá sé seo go maith. Mar sin déanaimis plé ar a bhfuil fágtha agus cuir níos mó leis.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Maidir le ceisteanna ar aghaidh inléite amháin chuig fuireachas? Tá macasamhla againn nach ndéanfaidh ach an t-aer a théamh gan iarratais a fhorghníomhú. Teastaíonn uainn iad teipthe agus lasc-aistriú a sholáthar. I gcás fadhbanna i gceann de na hionaid sonraí, ba mhaith liom iad a áitiú le roinnt oibre úsáideach. Toisc nach féidir linn na próiseálaithe lárnacha céanna a chumrú, an chuimhne chéanna ar bhealach difriúil, mar ní oibreoidh macasamhlú ar shlí eile.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

I bprionsabal, i Postgres, ag tosú ó 10, is féidir session_attrs a shonrú nuair a bhíonn tú ag nascadh. Is féidir leat na hóstach bunachar sonraí go léir sa nasc a liostú agus a rá cén fáth a bhfuil tú ag dul chuig an mbunachar sonraí: scríobh nó léigh amháin. Agus roghnóidh an tiománaí é féin an chéad óstach ar an liosta is fearr leis, a chomhlíonann ceanglais session_attrs.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Ach is í an fhadhb atá leis an gcur chuige seo ná nach rialaíonn sé an t-aga moille maidir le macasamhlú. B’fhéidir go bhfuil macasamhail éigin agat atá tite ar gcúl ar feadh tréimhse do-ghlactha ama do do sheirbhís. Chun go bhféadfar fiosrúcháin léite ar mhacasamhail a chur i gcrích go hiomlán, ní mór dúinn go bunúsach tacú le cumas Odyssey gan a bheith ag rith nuair nach féidir é a léamh.

Caithfidh Odaisé dul chuig an mbunachar sonraí ó am go chéile agus an t-achar macasamhlaithe ón mbunscoil a iarraidh. Agus má tá an teorainnluach bainte amach aige, ná lig iarratais nua isteach sa bhunachar sonraí, inis don chliant go gcaithfidh sé naisc a ath-thionscnamh agus, b'fhéidir, roghnaigh óstach eile chun iarratais a fhorghníomhú. Ligeann sé seo don bhunachar sonraí an t-aga moille macasamhlaithe a athbhunú go tapa agus filleadh arís chun freagra a thabhairt le hiarratas.

Tá sé deacair fráma ama a thabhairt don chur i bhfeidhm, toisc gur foinse oscailte é. Ach, tá súil agam, ní 2,5 bliain cosúil le mo chomhghleacaithe ó PgBouncer. Seo an ghné ba mhaith liom a fheiceáil san Odyssey.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Sa phobal, chuir daoine ceist faoi thacaíocht don ráiteas ullmhaithe. Anois is féidir leat ráiteas ullmhaithe a chruthú ar dhá bhealach. Ar dtús, is féidir leat an t-ordú SQL a fhorghníomhú, eadhon "ullmhaithe". D'fhonn an t-ordú SQL seo a thuiscint, ní mór dúinn a fhoghlaim chun an SQL ar an taobh Bouncer a thuiscint. Overkill a bheadh ​​anseo, toisc go bhfuil sé rómharaithe, mar ní mór dúinn an parsálaí ar fad. Ní féidir linn gach ordú SQL a pharsáil.

Ach tá ráiteas ullmhaithe ag leibhéal prótacail na teachtaireachta ar proto3. Agus is é seo an áit a dtagann an fhaisnéis go bhfuil ráiteas ullmhaithe á chruthú i bhfoirm struchtúrtha. Agus d'fhéadfaimis tacú leis an tuiscint gur iarr an cliant ráitis ullmhaithe a chruthú ar roinnt nasc freastalaí. Agus fiú má tá an t-idirbheart dúnta, ní mór dúinn fós nascacht a choinneáil idir an freastalaí agus an cliant.

Ach anseo tagann neamhréiteach san idirphlé, toisc go ndeir duine éigin gur gá duit a thuiscint cén cineál ráitis ullmhaithe a chruthaigh an cliant agus an nasc freastalaí a roinnt idir na cliaint go léir a chruthaigh an nasc freastalaí seo, ie, a chruthaigh ráiteas ullmhaithe den sórt sin.

Dúirt Andres Freund má thagann cliant chugat a chruthaigh ráiteas ullmhaithe den sórt sin cheana féin i nasc freastalaí eile, ansin cruthaigh dó é. Ach is cosúil go bhfuil sé beagán mícheart ceisteanna a fhorghníomhú sa bhunachar sonraí in ionad an chliaint, ach ó thaobh an fhorbróra a scríobhann an prótacal le haghaidh idirghníomhú leis an mbunachar sonraí, bheadh ​​​​sé áisiúil dá dtabharfaí nasc líonra dó go simplí. tá ceist ullmhaithe den sórt sin.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Agus gné amháin eile nach mór dúinn a chur i bhfeidhm. Tá monatóireacht againn anois atá comhoiriúnach le PgBouncer. Is féidir linn meán-am feidhmithe na gceisteanna a thabhairt ar ais. Ach is é an meán-am an meán-teocht san ospidéal: tá cuid acu fuar, tá cuid acu te - ar an meán, tá gach duine sláintiúil. Níl sé fíor.

Ní mór dúinn tacaíocht a chur i bhfeidhm le haghaidh peircintílí, a thabharfadh le fios go bhfuil ceisteanna malla ag cur amú acmhainní agus a d’fhágfadh go bhfuil an mhonatóireacht níos inghlactha.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Is é an rud is tábhachtaí ná gur mian liom leagan 1.0 (Tá Leagan 1.1 eisithe cheana féin). Is é fírinne an scéil go bhfuil Odyssey anois i leagan 1.0rc, i.e. iarrthóir scaoilte. Agus socraíodh na fadhbanna go léir a liostaigh mé leis an leagan díreach céanna, ach amháin i gcás sceitheadh ​​​​cuimhne.

Cad a chiallóidh leagan 1.0 dúinn? Táimid ag rolladh amach Odyssey chuig ár mbunáit. Tá sé ag rith ar ár mbunachair shonraí cheana féin, ach nuair a shroicheann sé an pointe 1 iarratas in aghaidh an tsoicind, ansin is féidir linn a rá gurb é seo an leagan scaoileadh agus is leagan é seo ar féidir a dtugtar 000 air.

D'iarr roinnt daoine sa phobal go gcuimseodh leagan 1.0 sos agus SCRAM. Ach ciallóidh sé seo go mbeidh orainn an chéad leagan eile a rolladh amach don táirgeadh, mar níor maraíodh SCRAM ná sos fós. Ach, is dócha, beidh an cheist seo a réiteach go tapa go leor.

Treochlár Odyssey: cad eile atá uainn ó chomhthiomsóir naisc. Andrey Borodin (2019)

Tá mé ag fanacht le d'iarratas tarraingt. Ba mhaith liom a chloisteáil freisin cad iad na fadhbanna atá agat le Bouncer. Déanaimis iad a phlé. B'fhéidir gur féidir linn roinnt feidhmeanna a theastaíonn uait a chur i bhfeidhm.

Is é seo deireadh mo chuid, ba mhaith liom éisteacht leat. Go raibh maith agat!

ceisteanna

Má shocraím m'iarratas_ainm féin, an gcuirfear ar aghaidh i gceart é, lena n-áirítear i gcomhthiomsú idirbheart in Odyssey?

Odaisé nó Bouncer?

In Odyssey. I Bouncer a chaitear é.

Déanfaimid sraith.

Agus má tá mo nasc fíor leannlusanna ar naisc eile, beidh sé a tharchur?

Déanfaimid sraith de na paraiméadair go léir atá liostaithe sa liosta. Ní féidir liom a rá an bhfuil application_name ar an liosta seo. Sílim go bhfaca mé ann é. Socróimid na paraiméadair chéanna go léir. Le hiarratas amháin, déanfaidh an tacar gach rud a shuiteáil an cliant le linn an tosaithe.

Go raibh maith agat, Andrey, as an tuairisc! Tuairisc mhaith! Tá áthas orm go bhfuil Odyssey ag forbairt níos tapúla agus níos tapúla gach nóiméad. Ba mhaith liom leanúint ar aghaidh mar seo. D’iarramar ort cheana nasc ilfhoinse sonraí a bheith agat ionas gur féidir le Odyssey nascadh le bunachair shonraí éagsúla ag an am céanna, ie máistir-sclábhaí, agus ansin nascadh go huathoibríoch le máistir nua tar éis teip.

Sea, is cosúil gur cuimhin liom an plé seo. Anois tá stórais éagsúla ann. Ach níl aon athrú eatarthu. Ar ár taobh, ní mór dúinn vótaíocht a dhéanamh ar an bhfreastalaí go bhfuil sé fós beo agus a thuiscint gur tharla teip, cé a ghlaonn pg_recovery. Tá bealach caighdeánach agam le tuiscint nár tháinig muid chuig an máistir. Agus ba chóir dúinn a thuiscint ar bhealach éigin ó na botúin nó cad? Is é sin, tá an smaoineamh suimiúil, tá sé á phlé. Scríobh tuilleadh tuairimí. Má tá oibrithe agat a bhfuil aithne acu ar C, tá sé sin iontach.

Is ábhar spéise dúinn freisin an tsaincheist maidir le scálú trasna macasamhlacha, mar ba mhaith linn glacadh le braislí macasamhlaithe a dhéanamh chomh simplí agus is féidir d’fhorbróirí feidhmchlár. Ach anseo ba mhaith liom níos mó tuairimí, i.e. go beacht conas é a dhéanamh, conas é a dhéanamh go maith.

Tá an cheist faoi macasamhla freisin. Tharlaíonn sé go raibh máistir agus roinnt macasamhla agat. Agus is léir go dtéann siad chuig an macasamhail níos lú ná go dtí an máistir le haghaidh naisc, toisc go bhféadfadh difríochtaí a bheith acu. Dúirt tú go bhféadfadh an difríocht sna sonraí a bheith chomh mór sin nach sásóidh sé do ghnó agus nach rachaidh tú ann go dtí go ndéanfar iad a mhacasamhlú. Ag an am céanna, más rud é nach ndeachaigh tú ann ar feadh i bhfad, agus ansin thosaigh tú ag dul, ansin ní bheidh na sonraí atá ag teastáil ar fáil láithreach. Is é sin, má théann muid i gcónaí go dtí an máistir, ansin tá an taisce téamh suas, ach sa macasamhail an taisce beagán.

Tá sé fíor. Ní bheidh na bloic sonraí a theastaíonn uait ag an pcache, ní bheidh faisnéis ag an taisce fíor faoi na táblaí atá uait, ní bheidh ceisteanna parsáilte ag na pleananna, ní bheidh aon rud ar bith.

Agus nuair a bhíonn braisle de shaghas éigin agat, agus má chuireann tú macasamhail nua leis ansin, nuair a thosaíonn sé, tá gach rud go dona ann, ie méadaíonn sé a thaisce.

Fuair ​​​​mé an smaoineamh. Is é an cur chuige ceart ná céatadán beag fiosruithe ar an macasamhail a rith ar dtús, rud a chuirfeadh an taisce suas. Go garbh, tá coinníoll againn nach mór dúinn dul siar ar an máistir gan níos mó ná 10 soicind. Agus níl an coinníoll seo san áireamh i tonn amháin, ach go réidh do roinnt cliant.

Sea, meáchan a mhéadú.

Is smaoineamh maith é seo. Ach ar dtús caithfimid an múchadh seo a chur i bhfeidhm. Ar dtús ní mór dúinn a mhúchadh, agus ansin beidh muid ag smaoineamh ar conas a chur ar siúl. Is gné iontach é seo a chumasú go réidh.

Tá an rogha seo ag Nginx slowly start i mbraisle don fhreastalaí. Agus méadaíonn sé an t-ualach de réir a chéile.

Sea, smaoineamh iontach, bainfimid triail as nuair a thagaimid timpeall air.

Foinse: will.com

Add a comment