Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ma kāna hōʻike, e haʻi aku ʻo Andrey Borodin iā ʻoe pehea lākou i noʻonoʻo ai i ka ʻike o ka scaling PgBouncer i ka wā e hoʻolālā ai i ka pooler pili. Odyssey, ʻoiai lākou i ʻōwili ai i ka hana. Eia kekahi, e kūkākūkā mākou i nā hana o ka huki a mākou e makemake ai e ʻike i nā mana hou: he mea nui ia iā mākou ʻaʻole wale e hoʻokō i kā mākou mau pono, akā e hoʻomohala i ke kaiāulu mea hoʻohana. ʻO Odyssey.

Video:

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Aloha kākou! ʻO Andrew koʻu inoa.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ma Yandex, hoʻomohala wau i nā ʻikepili kumu wehe. A i kēia lā he kumuhana mākou e pili ana i nā pilina pooler pili.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Inā ʻike ʻoe pehea e kāhea ai i ka pooler pili ma ka ʻōlelo Lūkini, e haʻi mai iaʻu. Makemake au e ʻimi i kahi huaʻōlelo loea maikaʻi e hoʻokumu ʻia i ka palapala ʻenehana.

Paʻakikī loa ke kumuhana, no ka mea, i loko o nā ʻikepili he nui i kūkulu ʻia ka pooler pili a ʻaʻole pono ʻoe e ʻike e pili ana. ʻOiaʻiʻo, aia kekahi mau hoʻonohonoho ma nā wahi āpau, akā ma Postgres ʻaʻole ia e hana pēlā. A i ka like (ma HighLoad++ 2019) aia kahi hōʻike e Nikolai Samokhvalov e pili ana i ka hoʻonohonoho ʻana i nā nīnau ma Postgres. A i koʻu hoʻomaopopo ʻana, ua hele mai ka poʻe i hoʻonohonoho pono i kā lākou mau nīnau, a ʻo kēia ka poʻe e kū nei i nā pilikia ʻōnaehana kakaikahi e pili ana i ka pūnaewele a me ka hoʻohana waiwai. A ma kekahi mau wahi hiki ke paʻakikī ma ke ʻano ʻaʻole maopopo nā pilikia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Loaʻa iā Yandex nā Postgres. Nui nā lawelawe Yandex e noho nei ma Yandex.Cloud. A loaʻa iā mākou kekahi mau petabytes o ka ʻikepili e hoʻopuka ai i hoʻokahi miliona mau noi i kēlā me kēia kekona ma Postgres.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A hāʻawi mākou i kahi puʻupuʻu maʻamau no nā lawelawe āpau - ʻo ia ka node kumu nui o ka node, nā replicas maʻamau ʻelua (synchronous and asynchronous), backup, scaling o nā noi heluhelu ma ka replica.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO kēlā me kēia puʻupuʻu puʻupuʻu ʻo Postgres, kahi i hoʻohui ʻia me Postgres a me nā ʻōnaehana nānā, ua hoʻokomo pū ʻia kahi pooler pili. Hoʻohana ʻia ka pooler hoʻohui no ka pā a no kāna kumu nui.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

He aha ke kumu nui o ka pooler pili?

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻohana ʻo Postgres i kahi hiʻohiʻona kaʻina hana i ka wā e hana ai me kahi waihona. ʻO kēia ke ʻano o ka pilina hoʻokahi kaʻina hana, hoʻokahi hope hope Postgres. A i loko o kēia backend he nui nā ʻokoʻa huna, ʻoi aku ke kumukūʻai e hana ʻokoʻa no nā pili like ʻole.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻohui ʻia, loaʻa i ka code Postgres kahi ʻano i kapa ʻia procArray. Loaʻa iā ia ka ʻikepili kumu e pili ana i nā pili pūnaewele. A kokoke i nā algorithms hoʻoponopono procArray āpau he paʻakikī laina; holo lākou ma luna o ka hui holoʻokoʻa o nā pili pūnaewele. He pōʻai wikiwiki kēia, akā me nā pili pūnaewele e hiki mai ana, ʻoi aku ka nui o ke kumukūʻai. A ke piʻi iki nā mea, hiki iā ʻoe ke hoʻopau i ke kumukūʻai kiʻekiʻe loa no ka nui o nā pili pūnaewele.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Aia 3 mau ala e hiki ai:

  • Ma ka aoao noi.
  • Ma ka ʻaoʻao waihona.
  • A ma waena, ʻo ia hoʻi, nā ʻano hui like ʻole.

ʻO ka mea pōʻino, ke kūkulu ʻia nei ka pooler i kūkulu ʻia i kēia manawa. ʻO kā mākou mau hoaaloha ma PostgreSQL Professional e hana pinepine i kēia. He paʻakikī ke wānana i ka wā e puka mai ai. A ʻo ka mea ʻoiaʻiʻo, loaʻa iā mākou ʻelua mau hoʻonā no ka mea hoʻolālā e koho ai. ʻO kēia ka wai puna ʻaoʻao a me ka wai proxy.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO ka wai ʻaoʻao ʻaoʻao ke ala maʻalahi. A kokoke i nā mea hoʻokele a pau e hāʻawi iā ʻoe i kahi ala: e hōʻike i nā miliona o kāu mau pilina ma ke code e like me ka nui o nā pilina i ka waihona.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO ka pilikia e kū mai ana i kekahi manawa makemake ʻoe e hoʻonui i ka hope, makemake ʻoe e kau iā ia i nā mīkini virtual he nui.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A laila ʻike ʻoe he nui kāu mau wahi i loaʻa, nā kikowaena data. A ke alakaʻi nei ka ʻaoʻao o ka mea kūʻai aku i nā helu nui. ʻO nā mea nui ma kahi o 10 pili. ʻO kēia ka lihi hiki ke hana maʻamau.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Inā mākou e kamaʻilio e pili ana i nā poolers proxy, a laila aia ʻelua poolers hiki ke hana i nā mea he nui. ʻAʻole lākou he poʻe poolers wale nō. ʻO lākou nā poolers + ʻoi aku ka maikaʻi o ka hana. ʻO kēia Pgpool и Crunchy-Proxy.

Akā, ʻo ka mea pōʻino, ʻaʻole pono nā mea a pau i kēia hana hou. A ke alakaʻi nei i ka ʻoiaʻiʻo e kākoʻo wale nā ​​poʻe poolers i ka pooling session, i.e.

ʻAʻole kūpono loa kēia no kā mākou kumu, no laila hoʻohana mākou iā PgBouncer, ka mea e hoʻokō nei i ka hui ʻana o ke kālepa, ʻo ia hoʻi, ua hoʻohālikelike ʻia nā pilina kikowaena i nā pilina o nā mea kūʻai aku no ka lōʻihi o ke kālepa.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A i kā mākou haʻahaʻa hana, he ʻoiaʻiʻo kēia. Akā aia kekahi mau pilikia.Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻomaka nā pilikia i ka wā e makemake ai ʻoe e ʻike i kahi hālāwai, no ka mea, ʻo kāu mau pilina e komo mai ana he kūloko. Hele mai nā mea a pau me ka loopback a ma ke ʻano he paʻakikī ke ʻimi i ke kau.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻOiaʻiʻo hiki iā ʻoe ke hoʻohana i ka application_name_add_host. He ala kēia ma ka ʻaoʻao Bouncer e hoʻohui i kahi leka uila IP i ka inoa inoa. Akā ua hoʻonohonoho ʻia ka application_name e kahi pilina hou.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ma kēia pakuhi, kahi o ka laina melemele nā ​​noi maoli, a ma kahi o ka laina polū i nā noi e lele i loko o ka waihona. A ʻo kēia ʻokoʻa ʻo ia ka hoʻokomo ʻana o application_name, pono wale no ka huli ʻana, akā ʻaʻole manuahi.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Eia kekahi, ma Bouncer ʻaʻole hiki iā ʻoe ke kaupalena i hoʻokahi pool, ʻo ia hoʻi ka helu o nā pilina waihona no kēlā me kēia mea hoʻohana kikoʻī, no kēlā me kēia waihona kikoʻī.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

He aha kēia e alakaʻi ai? Loaʻa iā ʻoe kahi lawelawe i hoʻouka ʻia i kākau ʻia ma C ++ a ma kahi kokoke i kahi lawelawe liʻiliʻi ma kahi node ʻaʻole e hana i kekahi mea weliweli me ka waihona, akā ua pupule kāna mea hoʻokele. Wehe ia i nā pilina 20 a e kali nā mea ʻē aʻe. ʻOiai he mea maʻamau kāu code.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO mākou, ʻoiaʻiʻo, ua kākau mākou i kahi ʻāpana liʻiliʻi no Bouncer i hoʻohui i kēia hoʻonohonoho, ʻo ia hoʻi ka kaupalena ʻana i nā mea kūʻai aku i ka wai.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hiki ke hana i kēia ma ka ʻaoʻao Postgres, ʻo ia hoʻi, e kaupalena i nā kuleana ma ka waihona ma ka helu o nā pilina.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Akā, ua nalowale ʻoe i ka hiki ke hoʻomaopopo i ke kumu ʻaʻole ʻoe pili i ke kikowaena. ʻAʻole hoʻolei ʻo PgBouncer i kahi hewa pili, hoʻihoʻi mau ia i ka ʻike like. A ʻaʻole hiki iā ʻoe ke hoʻomaopopo: ua loli paha kāu ʻōlelo huna, ua nalowale paha ka waihona, ua hewa paha kekahi. Akā ʻaʻohe ʻike. Inā ʻaʻole hiki ke hoʻokumu ʻia kahi kau, ʻaʻole ʻoe e ʻike i ke kumu hiki ʻole ke hoʻokumu ʻia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

I kekahi manawa, nānā ʻoe i nā pakuhi noi a ʻike ʻaʻole hana ka noi.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

E nānā i ka luna a ʻike ʻo Bouncer he kaula hoʻokahi. He wahi huli keia i ke ola o ka lawelawe. ʻIke ʻoe e hoʻomākaukau ana ʻoe e hoʻonui i ka waihona i hoʻokahi makahiki a me ka hapa, a pono ʻoe e hoʻonui i ka pooler.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ua hiki mai mākou i ka hopena e pono mākou i nā PgBouncers.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

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

Ua hoʻopili ʻia ʻo Bouncer.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A ua hana lākou i hiki ke hoʻāla ʻia kekahi mau Bouncer ma ka hoʻohana hou ʻana i ke awa TCP. A ʻo ka ʻōnaehana hana e hoʻoili maʻalahi i nā pilina TCP e hiki mai ana ma waena o lākou me ka hoʻohana ʻana i ka round-robin.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻIke maopopo kēia i nā mea kūʻai aku, ʻo ia hoʻi me he mea lā he hoʻokahi kāu Bouncer, akā loaʻa iā ʻoe ka ʻāpana o nā pilina ʻole ma waena o ka holo ʻana o Bouncers.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A i kekahi manawa e ʻike paha ʻoe i kēia mau Bouncers 3 e ʻai i kā lākou kumu ma 100%. Pono ʻoe i kekahi mau Bouncer. No ke aha mai?

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

No ka mea he TLS kāu. Loaʻa iā ʻoe kahi pilina paʻa. A inā ʻoe e hoʻohālikelike i nā Postgres me ka ʻole o TLS, e ʻike ʻoe e hāʻule ka helu o nā pilina paʻa ma kahi o ʻelua mau kauoha o ka nui me ka hoʻopili ʻana, no ka mea, hoʻopau ka lima lima TLS i nā kumuwaiwai CPU.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A ma ka piko hiki iā ʻoe ke ʻike i kekahi mau hana cryptographic i hoʻokō ʻia ke loaʻa ka nalu o nā pilina e hiki mai ana. No ka mea hiki i kā mākou kumu mua ke hoʻololi i waena o nā ʻāpana loaʻa, kahi nalu o nā pilina e hiki mai ana he kūlana maʻamau. ʻO ia hoʻi, no kekahi kumu i loaʻa ʻole ai ke kumu mua, ua hoʻouna ʻia ka ukana holoʻokoʻa i kahi kikowaena data ʻē aʻe. E hele mai lākou a pau e aloha iā TLS i ka manawa like.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A ʻaʻole paha e ʻōlelo hou aku ka nui o nā lulu lima TLS iā Bouncer, akā e ʻoki i kona ʻāʻī. Ma muli o ka pau ʻana o ka manawa, hiki ke hoʻopaʻa ʻole ʻia ka nalu o nā pilina e komo mai ana. Inā ʻoe e hoʻāʻo hou i ke kumu me ka ʻole o ka backoff exponential, ʻaʻole lākou e hoʻi hou mai i ka nalu pili.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Eia kahi laʻana o 16 PgBouncers e hoʻouka i 16 cores ma 100%.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hele mākou i ka cascade PgBouncer. ʻO kēia ka hoʻonohonoho maikaʻi loa i hiki ke hoʻokō ʻia ma kā mākou ukana me Bouncer. Hoʻohana ʻia kā mākou Bouncers waho no ka lulu lima TCP, a hoʻohana ʻia nā Bouncers kūloko no ka hoʻohui ʻana maoli, i ʻole e ʻoki nui i nā pilina o waho.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ma kēia hoʻonohonoho, hiki ke hoʻomaka hou. Hiki iā ʻoe ke hoʻomaka hou i kēia mau 18 Bouncers i kēlā me kēia. Akā paʻakikī ka mālama ʻana i kēlā ʻano hoʻonohonoho. ʻAʻole hauʻoli nui ʻo Sysadmins, DevOps, a me nā poʻe i kuleana maoli i kēia kikowaena.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Me he mea lā hiki ke hoʻolaha ʻia kā mākou hoʻomaikaʻi ʻana i ka open source, akā ʻaʻole kākoʻo maikaʻi ʻia ʻo Bouncer. No ka laʻana, ua hana ʻia ka hiki ke holo i kekahi mau PgBouncers ma hoʻokahi awa i hoʻokahi mahina i hala. Aia kahi noi huki me kēia hiʻohiʻona i kekahi mau makahiki i hala.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

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

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

A i ʻole kekahi laʻana. Ma Postgres, hiki iā ʻoe ke hoʻopau i kahi noi e holomua ana ma ka hoʻouna ʻana i ka mea huna i kahi pilina ʻē aʻe me ka ʻole o ka hōʻoia pono ʻole. Akā hoʻouna wale kekahi mau mea kūʻai aku i kahi TCP reset, ʻo ia hoʻi, uhaki lākou i ka pilina pūnaewele. He aha ka mea e hana ai ʻo Bouncer? ʻAʻole ʻo ia e hana i kekahi mea. E hoʻomau i ka hoʻokō ʻana i ka noi. Inā loaʻa iā ʻoe kahi helu nui o nā pilina i hana i kahi waihona me nā noi liʻiliʻi, a laila ʻaʻole lawa ka wehe ʻana i ka pilina mai Bouncer; pono ʻoe e hoʻopiha i kēlā mau noi e holo nei i ka waihona.

Ua hoʻopaʻa ʻia kēia pilikia a ʻaʻole i hoʻohui ʻia kēia pilikia i ke kahawai o Bouncer.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A no laila ua hiki mai mākou i ka hopena e pono ai mākou i kā mākou pilina pili, e hoʻomohala ʻia, patched, i hiki ke hoʻoponopono koke ʻia nā pilikia a ʻoiaʻiʻo hoʻi, pono e multi-threaded.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻonoho mākou i ka multithreading ma ke ʻano he hana nui. Pono mākou e mālama pono i ka nalu o nā pilina TLS e hiki mai ana.

No ka hana ʻana i kēia, pono mākou e hoʻomohala i kahi waihona ʻokoʻa i kapa ʻia ʻo Machinarium, i hoʻolālā ʻia e wehewehe i nā mokuʻāina mīkini o kahi pilina pūnaewele e like me ke code sequential. Inā ʻoe e nānā i ka code source libpq, e ʻike ʻoe i kekahi mau kelepona paʻakikī e hiki ke hoʻihoʻi iā ʻoe i kahi hopena a ʻōlelo ʻoe, "E kelepona mai iaʻu ma hope. I kēia manawa, loaʻa iaʻu ka IO i kēia manawa, akā ke haʻalele ka IO e loaʻa iaʻu kahi ukana ma ka kaʻina hana. A ʻo kēia ka papahana multi-level. Hōʻike pinepine ʻia ke kamaʻilio pūnaewele e kahi mīkini mokuʻāina. Nui nā lula e like me "Inā loaʻa iaʻu kahi poʻomanaʻo packet o ka nui N, i kēia manawa ke kali nei au i N bytes," "Inā wau i hoʻouna i kahi ʻeke SYNC, i kēia manawa ke kali nei au i kahi ʻeke me ka metadata hopena." ʻO ka hopena he code paʻakikī, counterintuitive, me he mea lā ua hoʻololi ʻia ka maze i ka scan line. Hana mākou ma kahi o ka mīkini moku'āina, wehewehe ka mea papahana i ke ala nui o ka launa pū ʻana ma ke ʻano o ka code imperative maʻamau. ʻO ia wale nō i loko o kēia code imperative pono ʻoe e hoʻokomo i nā wahi kahi e hoʻopau ʻia ai ke kaʻina hoʻokō ma ke kali ʻana i ka ʻikepili mai ka pūnaewele, e hāʻawi ana i ka pōʻaiapili hoʻokō i kahi coroutine ʻē aʻe. Ua like kēia ala me ke kākau ʻana i ke ala i manaʻo nui ʻia ma ka maze i ka lālani, a laila hoʻohui i nā lālā i laila.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO ka hopena, loaʻa iā mākou hoʻokahi kaula i ʻae ʻia e TCP a hāʻawi ka round-robin i ka pilina TPC i nā limahana he nui.

I kēia hihia, e holo mau ana kēlā me kēia mea kūʻai aku ma luna o hoʻokahi kaʻina hana. A hiki iā ʻoe ke hana i ka cache-friendly.

A eia kekahi, ua hoʻomaikaʻi iki mākou i ka hōʻiliʻili ʻana i nā ʻeke liʻiliʻi i hoʻokahi ʻeke nui i mea e hoʻomaha ai i ka ʻōnaehana TCP stack.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Eia kekahi, ua hoʻomaikaʻi mākou i ka pooling transactional ma ke ʻano o Odyssey, i ka wā i hoʻonohonoho ʻia, hiki ke hoʻouna iā CANCEL a ROLLBACK i ka wā o ka pau ʻole o ka pili pūnaewele, ʻo ia hoʻi inā ʻaʻohe mea e kali nei i kahi noi, e haʻi ʻo Odyssey i ka waihona ʻaʻole e hoʻāʻo e. e hoʻokō i ka noi e hoʻopau i nā waiwai makamae.

A inā hiki, mālama mākou i nā pilina me ka mea kūʻai aku. Hōʻalo kēia i ka hoʻokomo hou ʻana i ka application_name_add_host. Inā hiki kēia, ʻaʻole pono mākou e hoʻonohonoho hou i nā ʻāpana e pono ai no ka diagnostics.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hana mākou i ka pono o Yandex.Cloud. A inā hoʻohana ʻoe i ka PostgreSQL hoʻokele a hoʻokomo ʻia kahi pooler pili, hiki iā ʻoe ke hana i ka hoʻopiʻi loiloi i waho, ʻo ia hoʻi, haʻalele iā mākou, inā makemake ʻoe, me ka hoʻohana ʻana i ka hoʻopiʻi loiloi. ʻAʻole e hoʻokuʻu ʻo Bouncer i ke kahe hoʻopiʻi kūpono ma waho.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

He laʻana kēia o ka hoʻonohonoho ʻana i ka hoʻopili loiloi.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Eia kekahi, loaʻa iā mākou ke kākoʻo no ka hoʻopiʻi kino i waho. I ka Cloud, ʻoiaʻiʻo, hiki ʻole kēia, no ka mea, e hāʻawi ka cluster iā ʻoe i ka ʻike nui e pili ana iā ia iho. Akā i kāu mau hoʻonohonoho, inā makemake ʻoe i ka hoʻopiʻi kino ma o ka pooler pili i Odyssey, hiki kēia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Loaʻa iā Odyssey ka nānā pono ʻana me PgBouncer. Loaʻa iā mākou ka console like e holo kokoke i nā kauoha like. Inā nele kekahi mea, e hoʻouna i kahi noi huki, a i ʻole kahi pilikia ma GitHub, a e hoʻopau mākou i nā kauoha pono. Akā ua loaʻa iā mākou ka hana nui o ka console PgBouncer.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A, ʻoiaʻiʻo, loaʻa iā mākou ka hoʻouna hewa. E hoʻihoʻi mākou i ka hewa i hōʻike ʻia e ka waihona. E loaʻa iā ʻoe ka ʻike e pili ana i ke kumu ʻaʻole ʻoe i hoʻokomo ʻia i loko o ka waihona, ʻaʻole wale ʻoe ʻaʻole i hoʻokomo ʻia i loko.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻopau ʻia kēia hiʻohiʻona inā pono ʻoe i ka 100% kūpono me PgBouncer. Hiki iā mākou ke hana like me Bouncer, e noho wale ma ka ʻaoʻao palekana.

Ka hoʻolālā

He mau huaʻōlelo e pili ana i ka code source Odyssey.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

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

No ka laʻana, aia nā kauoha "Pause / Resume". Hoʻohana pinepine ʻia lākou e hoʻohou i ka waihona. Inā pono ʻoe e hōʻano hou i nā Postgres, a laila hiki iā ʻoe ke hoʻomaha iā ia i ka pooler pili, hana pg_upgrade, a laila e hoʻomau. A mai ka ʻaoʻao o ka mea kūʻai aku e ʻike ʻia me he mea lā e lohi ana ka waihona. Ua lawe ʻia kēia hana iā mākou e nā poʻe mai ke kaiāulu. ʻAʻole ʻo ia i maloʻo i kēia manawa, akā koke nā mea a pau. (Ua maloʻo)

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - ua maloo

Eia kekahi, ʻo kekahi o nā hiʻohiʻona hou i PgBouncer ke kākoʻo no ka SCRAM Authentication, i lawe ʻia mai iā mākou e kahi kanaka hana ʻole ma Yandex.Cloud. He hana paʻakikī a koʻikoʻi nā mea ʻelua.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

No laila, makemake wau e haʻi iā ʻoe i ka mea i hana ʻia ai ʻo Odyssey, inā makemake ʻoe e kākau i kahi code liʻiliʻi i kēia manawa.

Loaʻa iā ʻoe ka waihona kumu Odyssey, e hilinaʻi nei ma nā hale waihona puke ʻelua. ʻO ka waihona Kiwi kahi hoʻokō o ka protocol memo Postgres. ʻO ia hoʻi, ʻo ka proto maoli 3 o Postgres nā memo maʻamau e hiki ke hoʻololi i mua a me nā hope. Hoʻokō ʻia lākou ma ka waihona Kiwi.

ʻO ka waihona Machinarium kahi waihona hoʻokō thread. Ua kākau ʻia kahi ʻāpana liʻiliʻi o kēia Machinarium ma ka ʻōlelo hui. Mai hopohopo, he 15 laina wale nō.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Odyssey hale hana. Aia kekahi mīkini nui kahi e holo ai nā coroutine. Hoʻohana kēia mīkini i ka ʻae ʻana i nā pilina TCP e hiki mai ana a hāʻawi iā lākou i waena o nā limahana.

Hiki i ka mea lawelawe no nā mea kūʻai aku ke hana i loko o hoʻokahi limahana. Ke holo nei ka pae nui i ka console a me ka hana ʻana i nā hana crone e kāpae i nā pilina ʻaʻole pono i loko o ka loko.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻāʻo ʻia ʻo Odyssey me ka hoʻohana ʻana i ka suite hoʻāʻo Postgres maʻamau. Holo wale mākou i ka install-check ma o Bouncer a ma o Odyssey, loaʻa iā mākou kahi null div. Nui nā hoʻāʻo e pili ana i ka hoʻopili ʻana i ka lā i hala ʻole like ma Bouncer a me Odyssey.

Eia kekahi, nui nā mea hoʻokele i kā lākou hoʻāʻo ponoʻī. A hoʻohana mākou i kā lākou hoʻāʻo e hoʻāʻo i ka Odyssey.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Eia kekahi, ma muli o kā mākou hoʻonohonoho cascade, pono mākou e hoʻāʻo i nā pūʻulu like ʻole: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey i mea e ʻike pono ai inā pau ʻo Odyssey i kekahi o nā ʻāpana o ka cascade, hana nō hoʻi ia. e like me kā mākou e manaʻo nei.

ʻO Rake

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Hoʻohana mākou iā Odyssey i ka hana. A ʻaʻole kūpono inā ʻōlelo wau he hana wale nā ​​mea a pau. ʻAʻole, ʻo ia, ʻae, akā ʻaʻole mau. No ka laʻana, i ka hana ʻana ua hana nā mea a pau, a laila hele mai kā mākou mau hoaaloha mai PostgreSQL Professional a ʻōlelo mai ua loaʻa iā mākou kahi leak hoʻomanaʻo. ʻO lākou maoli nō, hoʻoponopono mākou iā lākou. Akā, ua maʻalahi.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A laila ua ʻike mākou ua loaʻa i ka pooler pili nā pilina TLS komo a me nā pilina TLS i waho. A koi nā pilina i nā palapala hōʻoia a me nā palapala kikowaena.

Heluhelu hou ʻia nā palapala kikowaena Bouncer a me Odyssey e kā lākou pcache, akā ʻaʻole pono e heluhelu hou ʻia nā palapala hōʻoia mai ka pcache, no ka mea, holo hope kā mākou Odyssey scalable i ka hana ʻōnaehana o ka heluhelu ʻana i kēia palapala. Ua lilo kēia i mea kāhāhā iā mākou, no ka mea, ʻaʻole i lōʻihi kona kūʻē ʻana. I ka wā mua, ua hoʻonui ʻia ma ka laina laina, akā ma hope o 20 mau pilina i hiki mai i kēia pilikia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO ke ala hōʻoia Pluggable ka hiki ke hōʻoia i ka hoʻohana ʻana i nā mea hana Lunux i kūkulu ʻia. Ma PgBouncer ua hoʻokō ʻia ma ke ʻano he kaula kaʻawale e kali ai i ka pane mai PAM a aia kahi pae PgBouncer nui e lawelawe ana i ka pilina o kēia manawa a hiki ke noi iā lākou e noho i ka pae PAM.

ʻAʻole mākou i hoʻokō i kēia no kahi kumu maʻalahi. He nui kā mākou mau kaula. No ke aha mākou e pono ai i kēia?

Hiki i kēia ke hana i nā pilikia inā loaʻa iā ʻoe ka hōʻoia PAM a me ka hōʻoia ʻole PAM, a laila hiki i ka nalu nui o ka hōʻoia PAM ke hoʻopaneʻe nui i ka hōʻoia ʻole PAM. ʻO kēia kekahi o nā mea a mākou i hoʻoponopono ʻole ai. Akā inā makemake ʻoe e hoʻoponopono, hiki iā ʻoe ke hana i kēia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO kekahi rake ʻo ia ka loaʻa iā mākou hoʻokahi kaula e ʻae i nā pilina komo. A laila hoʻoneʻe ʻia lākou i ka loko wai limahana, kahi e hoʻokō ʻia ai ka lulu lima TLS.

ʻO ka laina lalo, inā loaʻa iā ʻoe kahi nalu pili o 20 mau pilina pūnaewele, e ʻae ʻia lākou a pau. A ma ka ʻaoʻao o ka mea kūʻai aku e hoʻomaka ʻo libpq e hōʻike i nā manawa manawa. Me he mea lā he 000 kekona.

Inā ʻaʻole hiki iā lākou a pau ke komo i ka waihona i ka manawa like, a laila ʻaʻole hiki iā lākou ke komo i ka waihona, no ka mea hiki ke uhi ʻia kēia mau mea e ka hoʻāʻo hou ʻole exponential.

Ua hoʻopau mākou i ke kope ʻana i ka papahana mai PgBouncer ma ʻaneʻi me ka ʻoiaʻiʻo ua hoʻopau mākou i ka helu o nā pilina TCP a mākou e ʻae ai.

Inā ʻike mākou e ʻae ana mākou i nā pilina, akā ʻaʻohe manawa e lulu lima, waiho mākou iā lākou i kahi laina i ʻole lākou e hoʻopau i nā kumuwaiwai CPU. Ke alakaʻi nei kēia i ka ʻoiaʻiʻo ʻaʻole hiki ke hana ʻia kahi lulu lima like ʻole no nā pili āpau i hiki mai. Akā ma ka liʻiliʻi e komo kekahi i ka waihona, ʻoiai inā he kaumaha loa ka ukana.

Roadmap

He aha kāu makemake e ʻike i ka wā e hiki mai ana ma Odyssey? He aha kā mākou mākaukau e hoʻomohala iā mākou iho a he aha kā mākou e manaʻo ai mai ke kaiāulu?

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Mai ʻAukake 2019.

ʻO kēia ke ʻano o ka palapala alanui Odyssey i ʻAukake:

  • Makemake mākou i ka hōʻoia SCRAM a me PAM.
  • Makemake mākou e hoʻouna i nā noi heluhelu e kū.
  • Makemake au e hoʻomaka hou ma ka pūnaewele.
  • A me ka hiki ke hoʻomaha ma ke kikowaena.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ua pau ka hapalua o keia palapala alanui, aole na makou. A maikaʻi kēia. No laila e kūkākūkā kākou i nā mea i koe a hoʻohui hou aku.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

E pili ana i nā nīnau heluhelu-wale i mua i ka standby? Loaʻa iā mākou nā kope e hoʻomehana wale i ka lewa me ka ʻole o ka hoʻokō ʻana i nā noi. Pono mākou iā lākou e hāʻawi i ka failover a me ka hoʻololi. I ka hihia o nā pilikia ma kekahi o nā kikowaena data, makemake wau e noho iā lākou me kekahi hana pono. No ka mea ʻaʻole hiki iā mākou ke hoʻonohonoho i nā kaʻina kikowaena like, ʻokoʻa ka hoʻomanaʻo like ʻana, no ka mea, ʻaʻole e hana ka hana hou ʻana.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ma ke kumu, ma Postgres, e hoʻomaka ana mai ka 10, hiki ke kuhikuhi i ka session_attrs i ka wā e hoʻopili ai. Hiki iā ʻoe ke hoʻopaʻa inoa i nā pūʻali ʻikepili āpau i ka pilina a haʻi i ke kumu e hele ai ʻoe i ka waihona: kākau a heluhelu wale paha. A ʻo ka mea hoʻokele ponoʻī e koho i ka mea hoʻokipa mua ma ka papa inoa āna i makemake nui ai, e hoʻokō ana i nā koi o session_attrs.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Akā ʻo ka pilikia me kēia ala ʻaʻole ia e kāohi i ka lag replication. Loaʻa paha iā ʻoe kekahi kope i waiho ʻia ma hope no kahi manawa kūpono ʻole no kāu lawelawe. I mea e hiki ai ke hoʻokō piha i nā nīnau heluhelu ma kahi kope, pono mākou e kākoʻo i ka hiki ʻole o Odyssey ke holo i ka wā hiki ʻole ke heluhelu ʻia.

Pono ʻo Odyssey e hele i ka waihona i kēlā me kēia manawa a noi i ka mamao replication mai ka papa mua. A inā ua hiki i ka waiwai palena, mai ʻae i nā noi hou i loko o ka waihona, e haʻi i ka mea kūʻai aku pono ia e hoʻomaka hou i nā pilina a, malia paha, koho i kahi pūʻali e hoʻokō i nā noi. E ʻae kēia i ka waihona e hoʻihoʻi koke i ka lag replication a hoʻi hou e pane me kahi noi.

He mea paʻakikī ke hāʻawi i kahi manawa no ka hoʻokō ʻana, no ka mea he open source. Akā, manaʻolana wau, ʻaʻole 2,5 mau makahiki e like me kaʻu mau hoa hana mai PgBouncer. ʻO kēia ka hiʻohiʻona aʻu e makemake ai e ʻike ma ka Odyssey.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ma ke kaiāulu, ua nīnau nā kānaka e pili ana i ke kākoʻo no ka ʻōlelo i hoʻomākaukau ʻia. I kēia manawa hiki iā ʻoe ke hana i kahi ʻōlelo mākaukau ma nā ala ʻelua. ʻO ka mea mua, hiki iā ʻoe ke hoʻokō i ke kauoha SQL, ʻo ia hoʻi "hoʻomākaukau". I mea e hoʻomaopopo ai i kēia kauoha SQL, pono mākou e aʻo e hoʻomaopopo i ka SQL ma ka ʻaoʻao Bouncer. He overkill kēia, no ka mea he overkill, no ka mea pono mākou i ka parser holoʻokoʻa. ʻAʻole hiki iā mākou ke paʻi i kēlā me kēia kauoha SQL.

Akā aia kahi ʻōlelo mākaukau ma ka pae protocol message ma proto3. A ʻo kēia kahi e hele mai ai ka ʻike e hana ʻia nei kahi ʻōlelo i hoʻomākaukau ʻia ma kahi ʻano i hoʻonohonoho ʻia. A hiki iā mākou ke kākoʻo i ka hoʻomaopopo ʻana ma kekahi pili kikowaena ua noi ka mea kūʻai aku e hana i nā ʻōlelo mākaukau. A inā ua pani ʻia ke kālepa, pono mākou e mālama i ka pilina ma waena o ke kikowaena a me ka mea kūʻai aku.

Eia naʻe ke kū mai nei kahi ʻokoʻa i ke kamaʻilio ʻana, no ka mea, ʻōlelo kekahi e pono ʻoe e hoʻomaopopo i ke ʻano o nā ʻōlelo i hoʻomākaukau ʻia e ka mea kūʻai aku a kaʻana like i ka pilina kikowaena ma waena o nā mea kūʻai aku a pau i hana i kēia pili kikowaena, ʻo ia hoʻi, ka mea nāna i hana i kahi ʻōlelo i hoʻomākaukau ʻia.

Ua ʻōlelo ʻo Andres Freund inā hele mai kahi mea kūʻai aku iā ʻoe nāna i hana i kahi ʻōlelo i hoʻomākaukau ʻia ma kahi pilina kikowaena ʻē aʻe, a laila hana ia nona. Akā, he mea hewa iki ka hoʻokō ʻana i nā nīnau ma ka waihona ma kahi o ka mea kūʻai aku, akā mai ka manaʻo o ka mea hoʻomohala nāna i kākau i ka protocol no ka launa pū ʻana me ka waihona, ʻoi aku ka maʻalahi inā hāʻawi wale ʻia ʻo ia i kahi pilina pūnaewele e pili ana. aia kahi nīnau i hoʻomākaukau ʻia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

A hoʻokahi hiʻohiʻona e pono ai mākou e hoʻokō. Loaʻa iā mākou ka nānā ʻana i kūpono me PgBouncer. Hiki iā mākou ke hoʻihoʻi i ka manawa hoʻokō o ka nīnau nīnau. Akā ʻo ka manawa maʻamau ka mahana maʻamau i loko o ka haukapila: anu kekahi, mahana kekahi - ma ka awelika, olakino nā mea a pau. ʻAʻole ʻoiaʻiʻo.

Pono mākou e hoʻokō i ke kākoʻo no nā pākēneka e hōʻike ana aia nā nīnau lohi e hoʻopau ana i nā kumuwaiwai a e ʻae ʻia ka nānā ʻana.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

ʻO ka mea nui loa, makemake wau i ka mana 1.0 (Ua hoʻokuʻu ʻia ʻo 1.1). ʻO ka mea ʻoiaʻiʻo aia ʻo Odyssey i kēia manawa i ka mana 1.0rc, ʻo ia hoʻi ka moho hoʻokuʻu. A ua hoʻoponopono ʻia nā pilikia āpau aʻu i helu ai me ka mana like, koe wale nō ka leak hoʻomanaʻo.

He aha ka manaʻo o ka mana 1.0 no mākou? Ke holo nei mākou iā Odyssey i ko mākou mau waihona. Ke holo nei ma luna o kā mākou waihona, akā i ka hiki ʻana i ka helu o 1 noi i kēlā me kēia kekona, a laila hiki iā mākou ke ʻōlelo ʻo ia ka mana hoʻokuʻu a he mana kēia e hiki ke kapa ʻia ʻo 000.

Ua noi kekahi poʻe o ke kaiāulu i ka mana 1.0 e komo pū me ka hoʻomaha a me ka SCRAM. Akā ʻo kēia ka mea e pono ai mākou e ʻōwili i ka mana aʻe i ka hana ʻana, no ka mea ʻaʻole i pepehi ʻia ʻo SCRAM a i ʻole hoʻomaha. Akā, ʻoi loa, e hoʻoponopono koke ʻia kēia pilikia.

Odyssey roadmap: he aha hou aʻe kā mākou e makemake ai mai kahi pooler pili. ʻO Andrey Borodin (2019)

Ke kali nei au i kāu noi huki. Makemake au e lohe i kāu mau pilikia me Bouncer. E kūkākūkā kākou iā lākou. Hiki paha iā mākou ke hoʻokō i kekahi mau hana āu e pono ai.

ʻO ka hope kēia o kaʻu ʻāpana, makemake wau e hoʻolohe iā ʻoe. Mahalo iā ʻoe!

ʻO kāu mau nīnau

Inā hoʻonoho wau i kaʻu inoa_noi ponoʻī, e hoʻouna pololei ʻia ia, me ka hui pū ʻana ma Odyssey?

ʻO Odyssey a i ʻole Bouncer?

Ma Odyssey. Ma Bouncer ua kiola ia.

E hana mākou i kahi hoʻonohonoho.

A inā lele koʻu pili maoli i nā pilina ʻē aʻe, e hoʻouna ʻia paha?

E hana mākou i kahi hoʻonohonoho o nā ʻāpana āpau i helu ʻia ma ka papa inoa. ʻAʻole hiki iaʻu ke haʻi inā aia ʻo application_name i kēia papa inoa. Manaʻo wau ua ʻike wau iā ia ma laila. E hoʻonoho mākou i nā ʻāpana like a pau. Me hoʻokahi noi, e hana ka set i nā mea a pau i hoʻokomo ʻia e ka mea kūʻai aku i ka wā o ka hoʻomaka.

Mahalo iā ʻoe, Andrey, no ka hōʻike! Hōʻike maikaʻi! Hauʻoli wau i ka ulu wikiwiki ʻana o Odyssey i kēlā me kēia minuke. Makemake au e hoʻomau e like me kēia. Ua noi mua mākou iā ʻoe e loaʻa kahi pilina ʻikepili lehulehu i hiki iā Odyssey ke hoʻopili i nā ʻikepili ʻokoʻa i ka manawa like, ʻo ia hoʻi he kauā haku, a laila hoʻopili aunoa i kahi haku hou ma hope o ka failover.

ʻAe, ke hoʻomanaʻo nei au i kēia kūkākūkā. I kēia manawa he nui nā waihona. Akā ʻaʻohe hoʻololi ma waena o lākou. Ma ko mākou ʻaoʻao, pono mākou e koho i ke kikowaena e ola ana ia a hoʻomaopopo ua hiki mai kahi failover, nāna e kāhea iā pg_recovery. Loaʻa iaʻu kahi ala maʻamau o ka hoʻomaopopo ʻana ʻaʻole mākou i hele mai i ka haku. A e hoʻomaopopo paha kākou i nā hewa a i ʻole? ʻO ia hoʻi, hoihoi ka manaʻo, ke kūkākūkā ʻia nei. Kākau i nā manaʻo hou aku. Inā loaʻa iā ʻoe nā limahana i ʻike iā C, a laila maikaʻi loa ia.

He mea hoihoi nō hoʻi iā mākou ka pilikia o ka hoʻonui ʻana i nā replicas, no ka mea, makemake mākou e hana maʻalahi i ka hoʻohana ʻana i nā puʻupuʻu replicated e like me ka hiki no nā mea hoʻomohala noi. Eia naʻe, makemake au i nā manaʻo hou aʻe, ʻo ia hoʻi, pehea e hana ai, pehea e hana maikaʻi ai.

ʻO ka nīnau e pili ana i nā kope. ʻIke ʻia he haku kāu a he mau kope. A maopopo ka hele pinepine ʻana i ka replica ma mua o ka haku no nā pilina, no ka mea he ʻokoʻa paha kā lākou. Ua ʻōlelo ʻoe ʻo ka ʻokoʻa o ka ʻikepili he mea ʻole ia e ʻoluʻolu i kāu ʻoihana a ʻaʻole ʻoe e hele i laila a hiki i ka hana hou ʻana. I ka manawa like, inā ʻaʻole ʻoe i hele i laila no ka manawa lōʻihi, a laila hoʻomaka e hele, a laila ʻaʻole e loaʻa koke ka ʻikepili e pono ai. ʻO ia hoʻi, inā mākou e hele mau i ka haku, a laila hoʻomaʻamaʻa ʻia ka cache ma laila, akā i loko o ka replica ua lohi iki ka cache.

ʻAe he ʻoiaʻiʻo. ʻAʻole loaʻa i ka pcache nā poloka data āu e makemake ai, ʻaʻole loaʻa ka ʻike maoli i ka cache maoli e pili ana i nā papa āu e makemake ai, ʻaʻole i pau nā nīnau i nā hoʻolālā, ʻaʻohe mea.

A loaʻa iā ʻoe kekahi ʻano puʻupuʻu, a hoʻohui ʻoe i kahi kope hou ma laila, a laila i ka wā e hoʻomaka ai, hewa nā mea a pau i loko, ʻo ia hoʻi, hoʻonui ʻo ia i kona huna huna.

Loaʻa iaʻu ka manaʻo. ʻO ke ala kūpono, ʻo ia ka holo ʻana i kahi hapa liʻiliʻi o nā nīnau ma ka replica ma mua, e hoʻomaʻamaʻa i ka huna huna. ʻO ka ʻōlelo koʻikoʻi, loaʻa iā mākou kahi kūlana e haʻalele mākou ma hope o ka haku ma mua o 10 kekona. A ʻaʻole i hoʻokomo ʻia kēia kūlana i hoʻokahi nalu, akā maʻalahi no kekahi mau mea kūʻai aku.

ʻAe, hoʻonui i ke kaumaha.

He manaʻo maikaʻi kēia. Akā, pono mākou e hoʻokō i kēia pani. ʻO ka mua pono mākou e hoʻopau, a laila e noʻonoʻo mākou pehea e hoʻohuli ai. He hiʻohiʻona maikaʻi kēia e hiki ai i ka maʻalahi.

Loaʻa iā Nginx kēia koho slowly start i loko o kahi hui no ke kikowaena. A hoʻonui mālie ʻo ia i ka ukana.

ʻAe, manaʻo maikaʻi, e hoʻāʻo mākou i ka wā e hele ai mākou.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka