Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар гузориши худ, Андрей Бородин ба шумо нақл мекунад, ки чӣ гуна онҳо ҳангоми тарҳрезии пулаки пайвастшавӣ таҷрибаи миқёси PgBouncer-ро ба назар гирифтанд Odyssey, ки онро дар истехсолот чорй карданд. Илова бар ин, мо муҳокима хоҳем кард, ки чӣ гуна функсияҳои кашандаро дар версияҳои нав дидан мехоҳем: барои мо на танҳо қонеъ кардани ниёзҳои худ, балки рушди ҷомеаи корбарон муҳим аст. Одиссеист.

Видео:

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Салом ба ҳама! Номи ман Эндрю аст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар Яндекс ман пойгоҳи додаҳои кушодаасосро таҳия мекунам. Ва имрӯз мо мавзӯъро дар бораи пайвастҳои пулакии пайваст дорем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Агар шумо медонед, ки чӣ тавр ба Pouder Connection бо забони русӣ занг занед, пас ба ман бигӯед. Ман дар ҳақиқат мехоҳам як истилоҳи хуби техникӣ пайдо кунам, ки бояд дар адабиёти техникӣ муқаррар карда шавад.

Мавзӯъ хеле мураккаб аст, зеро дар бисёре аз пойгоҳи додаҳо пулаки пайвастшавӣ дарунсохт аст ва ба шумо ҳатто лозим нест, ки дар ин бора донед. Албатта, дар ҳама ҷо баъзе танзимот мавҷуданд, аммо дар Postgres ин тавр кор намекунад. Ва дар баробари ин (дар HighLoad++ 2019) гузориши Николай Самохвалов дар бораи танзими дархостҳо дар Postgres мавҷуд аст. Ва тавре ки ман мефаҳмам, одамоне ба ин ҷо омадаанд, ки дархостҳои худро аллакай ба таври комил танзим карда буданд ва инҳо одамоне ҳастанд, ки бо мушкилоти системавии марбут ба шабака ва истифодаи захираҳо дучор меоянд. Ва дар баъзе ҷойҳо он метавонад хеле душвор бошад, зеро мушкилот равшан нестанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Яндекс Postgres дорад. Бисёр хидматҳои Yandex дар Yandex.Cloud зиндагӣ мекунанд. Ва мо якчанд петабайт маълумот дорем, ки дар Postgres ҳадди аққал як миллион дархост дар як сония тавлид мекунанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва мо барои ҳама хидматҳо кластери хеле стандартиро пешниҳод мекунем - ин гиреҳи асосии ибтидоии гиреҳ, ду нусхаи муқаррарӣ (синхронӣ ва асинхронӣ), нусхабардорӣ, миқёси дархостҳои хониш дар реплика мебошад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ҳар як гиреҳи кластер Postgres мебошад, ки дар он ба ғайр аз Postgres ва системаҳои мониторинг, пулаки пайвастшавӣ низ насб шудааст. Пулзери пайвастшавӣ барои шамшербозӣ ва бо мақсади асосии он истифода мешавад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мақсади асосии пайвастшавӣ ба пулатор чист?

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Postgres ҳангоми кор бо пойгоҳи додаҳо модели равандро қабул мекунад. Ин маънои онро дорад, ки як пайвастшавӣ як раванд, як пуштибони Postgres аст. Ва дар ин пуштибон бисёр кэшҳои гуногун мавҷуданд, ки барои пайвастҳои гуногун фарқ кардан хеле гарон аст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Илова бар ин, рамзи Postgres дорои массиви бо номи procArray мебошад. Он дорои маълумоти асосӣ дар бораи пайвастҳои шабака мебошад. Ва қариб ҳамаи алгоритмҳои коркарди procArray мураккабии хатӣ доранд; онҳо дар тамоми массиви пайвастҳои шабакавӣ кор мекунанд. Ин як давраи хеле зуд аст, аммо бо пайвастҳои бештари шабакавӣ чизҳо каме гаронтар мешаванд. Ва вақте ки чизҳо каме гаронтар мешаванд, шумо метавонед барои пайвастҳои зиёди шабакавӣ нархи хеле баланд пардохт кунед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

3 равиши имконпазир вуҷуд дорад:

  • Дар тарафи ариза.
  • Дар тарафи базаи маълумот.
  • Ва дар байни, яъне, ҳама намуди комбинатсия.

Мутаассифона, пулаки дарунсохт дар ҳоли таҳия қарор дорад. Дӯстони мо дар PostgreSQL Professional асосан ин корро мекунанд. Кай пайдо мешавад, пешгӯӣ кардан душвор аст. Ва дар асл, мо барои интихоби меъмор ду роҳи ҳал дорем. Инҳо ҳавзи паҳлӯи барнома ва ҳавзи прокси мебошанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ҳавзи паҳлӯи барнома роҳи осонтарин аст. Ва қариб ҳама драйверҳои муштарӣ ба шумо роҳ медиҳанд: миллионҳо пайвастҳои худро дар код ҳамчун якчанд даҳҳо пайвастшавӣ ба пойгоҳи додаҳо пешниҳод кунед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мушкилоте, ки ба миён меояд, дар он аст, ки дар як нуқтаи муайян шумо мехоҳед миқёси пуштибониро васеъ кунед, шумо мехоҳед онро дар бисёр мошинҳои виртуалӣ ҷойгир кунед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Пас шумо мефаҳмед, ки шумо якчанд минтақаҳои дастрас, якчанд марказҳои маълумот доред. Ва равиши яклухти муштарӣ ба шумораи бештари он оварда мерасонад. Калонҳо тақрибан 10 000 пайваст мебошанд. Ин канорест, ки метавонад ба таври муқаррарӣ кор кунад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Агар мо дар бораи прокси-пулерҳо сухан ронем, пас ду пулдиҳанда мавҷуданд, ки метавонанд корҳои зиёдеро иҷро кунанд. Онҳо на танҳо оббозӣ мекунанд. Онҳо пулакҳо + функсияҳои ҷолибтар мебошанд. Ин Пгпул и Crunchy-Proxy.

Аммо, мутаассифона, на ҳама ба ин функсияи иловагӣ ниёз доранд. Ва он ба он оварда мерасонад, ки пулезерҳо танҳо ҷамъкунии сессияро дастгирӣ мекунанд, яъне як муштарии воридотӣ, як муштарии содиротӣ ба пойгоҳи додаҳо.

Ин барои мақсадҳои мо чандон мувофиқ нест, аз ин рӯ мо PgBouncer-ро истифода мебарем, ки пулаккунии транзаксияро амалӣ мекунад, яъне пайвастҳои сервер ба пайвастҳои муштарӣ танҳо дар тӯли транзаксия мувофиқат мекунанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва дар кори мо ин дуруст аст. Аммо якчанд мушкилот вуҷуд доранд.Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мушкилот вақте оғоз мешавад, ки шумо мехоҳед сеансро ташхис кунед, зеро ҳамаи пайвастҳои воридотии шумо маҳаллӣ мебошанд. Ҳама бо як ҳалқа омадаанд ва гӯё пайгирии сессия душвор мегардад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Албатта, шумо метавонед application_name_add_host-ро истифода баред. Ин як роҳ дар тарафи Bouncer барои илова кардани суроғаи IP ба application_name аст. Аммо application_name тавассути пайвасти иловагӣ муқаррар карда мешавад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар ин график, ки хати зард дархостҳои воқеӣ аст ва дар он хати кабуд дархостҳое мебошад, ки ба пойгоҳи додаҳо парвоз мекунанд. Ва ин тафовут маҳз насби application_name аст, ки танҳо барои пайгирӣ лозим аст, аммо он тамоман ройгон нест.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Илова бар ин, дар Bouncer шумо наметавонед як ҳавзро маҳдуд кунед, яъне шумораи пайвастҳои пойгоҳи додаҳо барои як корбари мушаххас, барои як пойгоҳи додаҳо.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ин ба чӣ оварда мерасонад? Шумо хидмати пурборе доред, ки дар C++ навишта шудааст ва дар наздикии он як хидмати хурде дар гиреҳе ҳаст, ки бо пойгоҳи додаҳо ҳеҷ кори даҳшатнок намекунад, аммо драйвери он девона мешавад. Он 20 пайвастро мекушояд ва ҳама чизи дигар интизор мешавад. Ҳатто рамзи шумо муқаррарӣ аст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мо, албатта, барои Bouncer як ямоқи хурде навишт, ки ин танзимотро илова кард, яъне маҳдуд кардани муштариён ба ҳавз.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Инро дар паҳлӯи Postgres кардан мумкин аст, яъне нақшҳоро дар пойгоҳи додаҳо бо шумораи пайвастҳо маҳдуд кунед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Аммо он гоҳ шумо қобилияти фаҳмидани чаро шумо ба сервер пайваст надоред, аз даст медиҳед. PgBouncer хатогии пайвастро намепартояд, он ҳамеша як маълумотро бармегардонад. Ва шумо намефаҳмед: шояд гузарвожаи шумо тағир ёфтааст, шояд пойгоҳи додаҳо гум шудааст, шояд чизе нодуруст бошад. Аммо ташхис нест. Агар сессия таъсис дода нашавад, шумо намедонед, ки чаро онро таъсис додан мумкин нест.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар як лаҳза, шумо ба графикҳои барнома нигоҳ мекунед ва мебинед, ки барнома кор намекунад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ба боло нигаред ва бубинед, ки Bouncer як ришта дорад. Ин нуктаи гардиш дар ҳаёти хизматрасонӣ аст. Шумо дарк мекунед, ки шумо барои васеъ кардани пойгоҳи додаҳо дар тӯли якуним сол омодагӣ медидед ва шумо бояд пулакро васеъ кунед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мо ба хулосае омадем, ки ба мо PgBouncers бештар лозим аст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

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

Bouncer каме навсозӣ шудааст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва онҳо онро тавре сохтанд, ки тавассути истифодаи дубораи порти TCP якчанд Bouncers баланд бардошта шавад. Ва системаи оператсионӣ ба таври худкор пайвастҳои воридотии TCP-ро байни онҳо бо истифода аз round-robin интиқол медиҳад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ин барои муштариён шаффоф аст, яъне ба назар чунин менамояд, ки шумо як Bouncer доред, аммо шумо пораҳои пайвастагиҳои бекорро байни иҷроиши Bouncers доред.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва дар лаҳзаи муайян шумо метавонед пай баред, ки ин 3 Боунсер ҳар кадоми онҳо асли худро 100% мехӯранд. Ба шумо хеле чанд Bouncer лозим аст. Чаро?

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Азбаски шумо TLS доред. Шумо пайвасти рамзгузоришуда доред. Ва агар шумо Postgres-ро бо TLS ва бе TLS муқоиса кунед, шумо хоҳед дид, ки шумораи пайвастҳои муқарраршуда бо рамзгузории фаъол тақрибан ду дараҷа кам мешавад, зеро дастфишори TLS захираҳои CPU-ро истеъмол мекунад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва дар боло шумо метавонед якчанд функсияҳои криптографиро бинед, ки ҳангоми мавҷи пайвастҳои воридотӣ иҷро мешаванд. Азбаски ибтидоии мо метавонад байни минтақаҳои мавҷудият гузарад, мавҷи пайвастҳои воридотӣ як ҳолати хеле маъмулист. Ин аст, ки бо баъзе сабабҳо ибтидоии кӯҳна дастрас набуд, тамоми сарборӣ ба маркази додаҳои дигар фиристода шуд. Ҳамаашон дар як вақт меоянд, то ба TLS салом гӯянд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва шумораи зиёди дастфишори TLS метавонад дигар ба Боунсер салом нагӯяд, балки гулӯяшро фишурда кунад. Бо сабаби ба охир расидани вақт, мавҷи пайвастҳои воридотӣ метавонад хомӯш шавад. Агар шумо бидуни бозгашти экспоненсиалӣ ба пойгоҳ дубора кӯшиш кунед, онҳо дубора дар мавҷи ҳамоҳанг нахоҳанд омад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ин аст мисоли 16 PgBouncers, ки 16 ядроро 100% бор мекунанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мо ба каскади PgBouncer омадем. Ин беҳтарин конфигуратсияест, ки дар бори мо бо Bouncer ба даст овардан мумкин аст. Bouncers берунии мо барои дастфишори TCP истифода мешавад ва Bouncers дохилӣ барои ҷамъкунии воқеӣ истифода мешавад, то пайвастҳои беруна аз ҳад зиёд пора нашаванд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар ин конфигуратсия, бозоғозкунии ҳамвор имконпазир аст. Шумо метавонед ҳамаи ин 18 Bouncer-ро як ба як аз нав оғоз кунед. Аммо нигоҳ доштани чунин конфигуратсия хеле душвор аст. Sysadmins, DevOps ва одамоне, ки воқеан барои ин сервер масъуланд, аз ин созиш чандон қаноатманд нестанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Чунин ба назар мерасад, ки ҳама беҳбудиҳои моро ба манбаи кушода пешбарӣ кардан мумкин аст, аммо Bouncer чандон хуб дастгирӣ намешавад. Масалан, қобилияти идора кардани якчанд PgBouncers дар як порт як моҳ пеш содир шуда буд. Якчанд сол пеш дархости ҷалб бо ин хусусият вуҷуд дошт.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

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

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

Ё мисоли дигар. Дар Postgres, шумо метавонед дархости иҷрошавандаро бо фиристодани сир ба пайвасти дигар бе аутентификатсияи нолозим бекор кунед. Аммо баъзе муштариён танҳо аз нав танзимкунии TCP мефиристанд, яъне онҳо пайвасти шабакаро мешикананд. Bouncer чӣ кор хоҳад кард? Ӯ ҳеҷ кор намекунад. Он иҷрои дархостро идома медиҳад. Агар шумо шумораи зиёди пайвастҳоро гирифта бошед, ки пойгоҳи додаҳоро бо дархостҳои хурд эҷод кардаанд, пас танҳо қатъ кардани пайвастшавӣ аз Bouncer кифоя нахоҳад буд; шумо инчунин бояд он дархостҳоеро, ки дар пойгоҳи додаҳо кор мекунанд, анҷом диҳед.

Ин ислоҳ карда шудааст ва ин мушкилот то ҳол ба болооби Bouncer ҳамроҳ карда нашудааст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва аз ин рӯ, мо ба хулосае омадем, ки ба мо пулатори пайвасти худ ниёз дорем, ки он таҳия, часпак карда мешавад, ки дар он мушкилотро зуд ислоҳ кардан мумкин аст ва албатта, бояд чанд ришта бошад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мо бисёр риштаро вазифаи асосй гузоштем. Мо бояд мавҷи пайвастҳои TLS-ро хуб идора карда тавонем.

Барои ин мо бояд китобхонаи алоҳидаеро бо номи Machinarium таҳия кунем, ки он барои тавсифи ҳолати мошини пайвасти шабака ҳамчун рамзи пайдарпай пешбинӣ шудааст. Агар шумо ба рамзи сарчашмаи libpq нигаред, шумо якчанд зангҳои хеле мураккабро хоҳед дид, ки метавонанд ба шумо натиҷа баргардонанд ва бигӯянд: “Ба ман баъдтар занг занед. Айни замон ман IO дорам, аммо вақте ки IO аз байн меравад, ман ба протсессори сарборӣ дучор мешавам." Ва ин як нақшаи бисёрсатҳа аст. Алоқаи шабакавӣ одатан тавассути мошини давлатӣ тавсиф карда мешавад. Қоидаҳои зиёде ба монанди "Агар ман қаблан сарлавҳаи бастаи андозаи N гирифта будам, ҳоло ман N байтро интизорам", "Агар ман бастаи SYNC-ро фиристода бошам, ҳоло ман интизори бастаи дорои метамаълумоти натиҷа ҳастам." Дар натиҷа як рамзи хеле душвор ва зиддиинтуитивист, ки гӯё лабиринт ба сканкунии хат табдил дода шудааст. Мо онро тавре сохтем, ки ба ҷои мошини давлатӣ, барномасоз роҳи асосии мутақобиларо дар шакли рамзи оддии императивӣ тавсиф кунад. Танҳо дар ин рамзи императивӣ шумо бояд ҷойҳоеро ворид кунед, ки пайдарпаии иҷро бояд бо интизории маълумот аз шабака қатъ карда шавад ва контексти иҷро ба корутини дигар (риштаи сабз) интиқол дода шавад. Ин равиш ба он монанд аст, ки мо роҳи интизортаринро дар лабиринт дар як саф менависем ва баъд ба он шохаҳо илова мекунем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар натиҷа, мо як ришта дорем, ки TCP қабул мекунад ва робин пайвасти TPC-ро ба бисёре аз коргарон мегузарад.

Дар ин ҳолат, ҳар як пайвасти муштарӣ ҳамеша дар як протсессор кор мекунад. Ва ин ба шумо имкон медиҳад, ки онро ба кэш мувофиқ созед.

Илова бар ин, мо ҷамъоварии бастаҳои хурдро ба як бастаи калон каме такмил додем, то стеки системаи TCP-ро сабук созем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Илова бар ин, мо муттаҳидсозии транзаксиониро ба он маъно такмил додем, ки Одиссей ҳангоми конфигуратсия метавонад CANCEL ва ROLLBACK-ро дар сурати нокомии пайвасти шабака фиристад, яъне агар касе мунтазири дархост набошад, Odyssey ба пойгоҳи додаҳо мегӯяд, ки кӯшиш накунад. дархостеро, ки метавонад захираҳои қиматбаҳоро сарф кунад, иҷро кунед.

Ва ба қадри имкон, мо бо ҳамон як муштарӣ пайваст мешавем. Ин аз дубора насб кардани application_name_add_host пешгирӣ мекунад. Агар ин имконпазир бошад, пас ба мо лозим нест, ки параметрҳои барои ташхис заруриро ба таври иловагӣ аз нав танзим кунем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мо ба манфиати Yandex.Cloud кор мекунем. Ва агар шумо PostgreSQL-и идорашавандаро истифода баред ва як пулаки пайвастшавӣ насб карда бошед, шумо метавонед репликаи мантиқиро ба берун эҷод кунед, яъне агар хоҳед, бо истифода аз репликаи мантиқӣ моро тарк кунед. Bouncer ҷараёни такрории мантиқиро берун намебарад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ин як мисоли танзими такрории мантиқӣ мебошад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Илова бар ин, мо барои такрори ҷисмонии берунӣ дастгирӣ дорем. Дар Абр, албатта, ин ғайриимкон аст, зеро он гоҳ кластер ба шумо дар бораи худ маълумоти аз ҳад зиёд медиҳад. Аммо дар насбҳои шумо, агар ба шумо нусхабардории ҷисмонӣ тавассути пулаки пайвастшавӣ дар Odyssey лозим бошад, ин имконпазир аст.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Odyssey дорои мониторинги комилан мувофиқ бо PgBouncer. Мо ҳамон консол дорем, ки қариб ҳамаи фармонҳои якхеларо иҷро мекунад. Агар чизе нарасад, дархости кашидан ё ҳадди аққал масъаларо дар GitHub фиристед ва мо фармонҳои заруриро иҷро хоҳем кард. Аммо мо аллакай функсияи асосии консол PgBouncer дорем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва, албатта, мо интиқоли хато дорем. Мо хатогиеро, ки аз ҷониби базаи маълумот гузориш дода шудааст, бармегардонем. Шумо дар бораи он, ки чаро шумо ба базаи маълумот дохил карда нашудаед, маълумот хоҳед гирифт, на танҳо дар бораи он, ки шумо ба он дохил карда нашудаед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ин хусусият ғайрифаъол карда мешавад, агар ба шумо мувофиқати 100% бо PgBouncer лозим шавад. Мо метавонем мисли Bouncer рафтор кунем, то дар тарафи бехатар бошем.

Рушд

Чанд сухан дар бораи рамзи сарчашмаи Odyssey.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

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

Масалан, фармонҳои "Таваққуф / Давом додан" мавҷуданд. Онҳо одатан барои навсозии пойгоҳи додаҳо истифода мешаванд. Агар ба шумо лозим аст, ки Postgres-ро навсозӣ кунед, пас шумо метавонед онро дар як пулаки пайвастшавӣ таваққуф кунед, pg_upgrade кунед ва сипас идома диҳед. Ва аз ҷониби муштарӣ он ба назар мерасад, ки гӯё пойгоҳи додаҳо суст шуда истодааст. Ин функсияро одамони ҷомеа ба мо овардаанд. Вай ҳанӯз ях накардааст, аммо ба зудӣ ҳама чиз мешавад. (аллакай яхкардашуда)

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

https://github.com/yandex/odyssey/pull/73 - аллакай яхкардашуда

Илова бар ин, яке аз хусусиятҳои нав дар PgBouncer дастгирии SCRAM Authentication мебошад, ки онро низ шахсе ба мо овардааст, ки дар Yandex.Cloud кор намекунад. Ҳарду вазифаи мураккаб ва муҳиманд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Аз ин рӯ, ман мехоҳам ба шумо бигӯям, ки Одиссей аз чӣ сохта шудааст, мабодо шумо низ ҳоло хоҳед, ки каме код нависед.

Шумо базаи сарчашмаи Odyssey доред, ки ба ду китобхонаи асосӣ такя мекунад. Китобхонаи Киви як амалисозии протоколи паёми Postgres мебошад. Яъне, прото 3-и Postgres ин паёмҳои стандартӣ мебошанд, ки пештар ва ақибҳо метавонанд мубодила кунанд. Онҳо дар китобхонаи Kiwi амалӣ карда мешаванд.

Китобхонаи Machinarium китобхонаи татбиқи ришта мебошад. Як порчаи хурди ин мошинарӣ бо забони ассемблер навишта шудааст. Аммо хавотир нашавед, хамагй 15 сатр.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Меъмории Одиссей. Як мошини асосӣ мавҷуд аст, ки дар он корутинҳо кор мекунанд. Ин мошин қабули пайвастҳои воридотии TCP ва тақсими онҳоро дар байни коргарон иҷро мекунад.

Як коркардкунанда барои якчанд муштарӣ метавонад дар як коргар кор кунад. Риштаи асосӣ инчунин консол ва коркарди вазифаҳои кронро барои нест кардани пайвастҳое, ки дигар дар ҳавз лозим нестанд, иҷро мекунад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Odyssey бо истифода аз пакети стандартии санҷиши Postgres санҷида мешавад. Мо танҳо тавассути Bouncer ва тавассути Odyssey насб-чекро иҷро мекунем, мо div-и нул ба даст меорем. Якчанд санҷишҳои марбут ба форматкунии сана мавҷуданд, ки дар Bouncer ва Odyssey комилан якхела намегузаранд.

Илова бар ин, бисёр ронандагоне ҳастанд, ки санҷиши худро доранд. Ва мо озмоишҳои онҳоро барои санҷиши Одиссей истифода мебарем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Илова бар ин, аз сабаби конфигуратсияи каскади мо, мо бояд бастаҳои гуногунро санҷем: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey, то боварӣ ҳосил кунем, ки агар Одиссей дар ҳама қисмҳои каскад ба охир расад, он ҳам кор мекунад. чунон ки мо интизорем.

Рейк

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Мо Одиссеяро дар истехсолот истифода мебарем. Ва агар ман гӯям, ки ҳама чиз кор мекунад, аз рӯи адолат намебуд. Не, яъне ҳа, аммо на ҳамеша. Масалан, дар истеҳсолот ҳама чиз танҳо кор мекард, пас дӯстони мо аз PostgreSQL Professional омада гуфтанд, ки мо ихроҷи хотира дорем. Онҳо воқеан буданд, мо онҳоро ислоҳ кардем. Аммо ин оддӣ буд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Сипас мо фаҳмидем, ки пулаки пайвастшавӣ дорои пайвастҳои даромади TLS ва пайвастҳои баромади TLS мебошад. Ва пайвастҳо сертификатҳои муштарӣ ва сертификатҳои серверро талаб мекунанд.

Шаҳодатномаҳои сервери Bouncer ва Odyssey тавассути pcache дубора хонда мешаванд, аммо сертификатҳои муштарӣ аз pcache дубора хондан лозим нест, зеро Odyssey-и миқёспазири мо дар ниҳоят ба кори системаи хондани ин сертификат кор мекунад. Ин барои мо тааҷҷубовар буд, зеро муқовимат ба ӯ дер давом накард. Дар аввал он ба таври хаттӣ васеъ шуд, аммо пас аз 20 пайвасти ҳамзамон ин мушкилот худро нишон дод.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Усули аутентификатсияи васлшаванда ин қобилияти тасдиқи аутентификатсия бо истифода аз абзорҳои дарунсохташудаи Lunux мебошад. Дар PgBouncer он тавре амалӣ карда мешавад, ки як риштаи алоҳида барои интизории посух аз PAM мавҷуд аст ва як риштаи асосии PgBouncer мавҷуд аст, ки ба пайвасти ҷорӣ хидмат мерасонад ва метавонад аз онҳо хоҳиш кунад, ки дар риштаи PAM зиндагӣ кунанд.

Мо инро бо як сабаби оддй ба амал наовардем. Мо риштаҳои зиёде дорем. Чаро ба мо ин лозим аст?

Ин дар ниҳоят метавонад мушкилот эҷод кунад, ки агар шумо аутентификатсияи PAM ва аутентификатсияи ғайри PAM дошта бошед, пас мавҷи бузурги аутентификатсияи PAM метавонад аутентификатсияи ғайри PAM-ро ба таври назаррас таъхир кунад. Ин яке аз он чизҳоест, ки мо ислоҳ накардаем. Аммо агар шумо хоҳед, ки онро ислоҳ кунед, шумо метавонед ин корро кунед.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ракеи дигар ин буд, ки мо як ришта дорем, ки ҳама пайвастҳои воридотро қабул мекунад. Ва он гоҳ онҳо ба ҳавзи коргарон интиқол дода мешаванд, ки дар он ҷо дастфишори TLS сурат мегирад.

Дар поён, агар шумо мавҷи ҳамоҳангии 20 пайвасти шабака дошта бошед, ҳамаи онҳо қабул карда мешаванд. Ва дар паҳлӯи муштарӣ libpq ба гузориши вақтхушиҳо шурӯъ мекунад. Бо нобаёнӣ он 000 сония ба назар мерасад.

Агар хамаи онхо дар як вакт ба базаи маълумот дохил шуда натавонанд, пас онхо ба махзани маълумот дохил шуда наметавонанд, зеро хамаи инро бо такрори гайриэкспоненсиали фаро гирифтан мумкин аст.

Мо ба хулосае омадем, ки мо схемаро аз PgBouncer дар ин ҷо нусхабардорӣ кардем, зеро мо шумораи пайвастҳои TCP-ро, ки мо қабул мекунем, коҳиш медиҳем.

Агар мо мебинем, ки мо пайвастҳоро қабул мекунем, аммо онҳо дар ниҳоят барои дастфишорӣ вақт надоранд, мо онҳоро дар навбат мегузорем, то онҳо захираҳои CPU-ро беҳуда сарф накунанд. Ин ба он оварда мерасонад, ки дастфишори ҳамзамон барои ҳама пайвастҳои расида иҷро карда намешавад. Аммо ҳадди аққал касе ба пойгоҳи додаҳо ворид мешавад, ҳатто агар бори хеле вазнин бошад.

харитаи

Шумо дар оянда дар Одиссей чиро дидан мехоҳед? Мо барои инкишоф додани худ чӣ омода ҳастем ва аз ҷомеа чӣ интизорем?

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Аз моҳи августи соли 2019.

Дар моҳи август харитаи роҳи Одиссей чунин буд:

  • Мо хостем, ки аутентификатсияи SCRAM ва PAM.
  • Мо мехостем, ки дархостҳои хонишро ба интизорӣ интиқол диҳем.
  • Ман мехоҳам онлайн бозоғоз кунам.
  • Ва қобилияти таваққуф дар сервер.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Нисфи ин харитаи рох ба анчом расид, на аз тарафи мо. Ва ин хуб аст. Пас биёед муҳокима кунем, ки чӣ боқӣ мондааст ва бештар илова мекунем.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар мавриди дархостҳои танҳо барои хондан ба ҳолати интизорӣ? Мо нусхаҳое дорем, ки бидуни иҷрои дархостҳо ҳаворо гарм мекунанд. Мо ба онҳо ниёз дорем, то аз кор мондан ва гузаришро таъмин кунанд. Дар сурати ба миён омадани мушкилот дар яке аз марказҳои додаҳо, ман мехоҳам онҳоро бо кори муфид банд кунам. Азбаски мо наметавонем як протсессори марказӣ, як хотираро ба таври дигар танзим кунем, зеро дар акси ҳол такрорӣ кор намекунад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Аслан, дар Postgres аз 10 сар карда, ҳангоми пайвастшавӣ session_attrs -ро муайян кардан мумкин аст. Шумо метавонед ҳамаи ҳостҳои пойгоҳи додаҳоро дар пайваст номбар кунед ва бигӯед, ки чаро шумо ба пойгоҳи додаҳо меравед: нависед ё танҳо хондан. Ва худи ронанда хости аввалро дар рӯйхат интихоб мекунад, ки ба ӯ бештар маъқул аст, ки талаботи session_attrs-ро иҷро мекунад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Аммо мушкилот бо ин равиш дар он аст, ки он ақибмонии такрориро назорат намекунад. Эҳтимол шумо як нусхае дошта бошед, ки барои хидмати шумо дар тӯли вақти номақбул қафо мондааст. Барои он ки иҷрои мукаммали дархостҳои хондашуда дар реплика имкон диҳад, мо аслан бояд қобилияти Odyssey-ро дастгирӣ кунем, ки ҳангоми хондан ғайриимкон будани он кор накунад.

Одиссей бояд вақт аз вақт ба пойгоҳи додаҳо равад ва масофаи такрориро аз ибтидоӣ талаб кунад. Ва агар он ба арзиши маҳдуд расида бошад, дархостҳои навро ба пойгоҳи додаҳо иҷозат надиҳед, ба муштарӣ бигӯед, ки вай бояд пайвастҳоро дубора оғоз кунад ва эҳтимолан хости дигареро барои иҷрои дархостҳо интихоб кунед. Ин ба базаи маълумот имкон медиҳад, ки таъхири такрориро зуд барқарор кунад ва дубора барои посух додан бо дархост баргардад.

Барои татбиқи он вақт додан душвор аст, зеро он манбаи кушода аст. Аммо, ман умедворам, на 2,5 сол мисли ҳамкасбони ман аз PgBouncer. Ин хусусиятест, ки ман мехостам дар Одиссей бубинам.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Дар ҷамоат мардум дар бораи дастгирии изҳороти омодашуда пурсиданд. Акнун шумо метавонед изҳороти омодашударо бо ду роҳ эҷод кунед. Аввалан, шумо метавонед фармони SQL-ро иҷро кунед, яъне "тайёршуда". Барои фаҳмидани ин фармони SQL, мо бояд фаҳмидани SQL-ро дар тарафи Bouncer омӯзем. Ин аз ҳад зиёд хоҳад буд, зеро он аз ҳад зиёд аст, зеро мо ба тамоми таҳлилгар ниёз дорем. Мо ҳар як фармони SQL-ро таҳлил карда наметавонем.

Аммо дар сатҳи протоколи паём дар proto3 изҳороти омодашуда мавҷуд аст. Ва ин ҷоест, ки маълумот дар бораи таҳияи изҳороти омодашуда дар шакли сохторӣ меояд. Ва мо метавонем фаҳмишро дастгирӣ кунем, ки дар баъзе пайвасти сервер муштарӣ хоҳиш кардааст, ки изҳороти омодашударо эҷод кунад. Ва ҳатто агар транзаксия баста бошад ҳам, мо бояд ба ҳар ҳол пайвастагии байни сервер ва муштариро нигоҳ дорем.

Аммо дар ин ҷо номувофиқӣ дар муколама ба миён меояд, зеро касе мегӯяд, ки шумо бояд фаҳмед, ки муштарӣ чӣ гуна изҳороти омодашударо эҷод кардааст ва пайвасти серверро байни ҳамаи муштариёне, ки ин пайвасти серверро эҷод кардааст, яъне, ки чунин изҳороти омодашударо эҷод кардааст, мубодила кунед.

Андрес Фрейнд гуфт, ки агар муштарӣ ба назди шумо ояд, ки аллакай чунин изҳороти омодашударо дар дигар пайвасти сервер эҷод кардааст, пас онро барои ӯ эҷод кунед. Аммо иҷро кардани дархостҳо дар пойгоҳи додаҳо ба ҷои муштарӣ каме нодуруст ба назар мерасад, аммо аз нуқтаи назари таҳиякунанда, ки протоколро барои ҳамкорӣ бо пойгоҳи додаҳо менависад, қулай мебуд, агар ба ӯ танҳо пайвасти шабакавӣ дода шавад, ки дар он чунин дархости омодашуда вуҷуд дорад.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ва боз як хусусияте, ки мо бояд онро амалӣ созем. Ҳоло мо мониторинги мувофиқ бо PgBouncer дорем. Мо метавонем вақти миёнаи иҷрои дархостро баргардонем. Аммо вақти миёна ҳарорати миёнаи беморхона аст: баъзеҳо хунук, баъзеҳо гарм - ба ҳисоби миёна ҳама солим мебошанд. Ин дуруст нест.

Мо бояд дастгирии фоизҳоро амалӣ созем, ки нишон медиҳанд, ки дархостҳои суст мавҷуданд, ки захираҳоро беҳуда сарф мекунанд ва мониторингро қобили қабултар мекунанд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Муҳимтар аз ҳама он аст, ки ман версияи 1.0 мехоҳам (Version 1.1 аллакай бароварда шудааст). Далели он аст, ки Odyssey ҳоло дар версияи 1.0rc, яъне номзади озод аст. Ва ҳамаи мушкилоте, ки ман номбар кардам, бо ҳамон версия ҳал карда шуданд, ба истиснои ихроҷи хотира.

Версияи 1.0 барои мо чӣ маъно хоҳад дошт? Мо Одиссейро ба пойгоҳҳои худ мебарем. Он аллакай дар пойгоҳи додаҳои мо кор мекунад, аммо вақте ки он ба нуқтаи 1 дархост дар як сония мерасад, мо метавонем бигӯем, ки ин версияи релиз аст ва ин версияест, ки онро 000 номидан мумкин аст.

Якчанд одамон дар ҷомеа хоҳиш карданд, ки версияи 1.0 таваққуф ва SCRAM-ро дар бар гирад. Аммо ин маънои онро дорад, ки мо бояд версияи навбатиро ба истеҳсолот барорем, зеро на SCRAM ва на таваққуф то ҳол кушта нашудааст. Аммо, ба эҳтимоли зиёд, ин масъала хеле зуд ҳал хоҳад шуд.

Харитаи роҳи Одиссей: мо аз як пулаки пайвастшавӣ боз чӣ мехоҳем. Андрей Бородин (2019)

Ман интизори дархости шумо ҳастам. Ман инчунин мехоҳам бишнавам, ки шумо бо Bouncer чӣ мушкилот доред. Биёед онҳоро муҳокима кунем. Шояд мо метавонем баъзе вазифаҳоеро, ки ба шумо лозиманд, амалӣ кунем.

Ин кисмати ман ба охир расид, ман мехостам шуморо гуш кунам. Сипос!

Саволҳои шумо

Агар ман application_name-и худро муқаррар кунам, оё он дуруст интиқол дода мешавад, аз ҷумла ҳангоми ҷамъоварии транзаксия дар Одиссей?

Одиссей ё Боунсер?

Дар Одиссей. Дар Bouncer он партофта мешавад.

Мо комплект мекунем.

Ва агар пайвасти воқеии ман ба дигар пайвастҳо ҷаҳида шавад, оё он интиқол дода мешавад?

Мо маҷмӯи ҳамаи параметрҳоеро, ки дар рӯйхат оварда шудаанд, месозем. Ман гуфта наметавонам, ки оё application_name дар ин рӯйхат аст. Ман фикр мекунам, ки ман ӯро дар он ҷо дидам. Мо ҳама параметрҳои якхеларо муқаррар мекунем. Бо як дархост, маҷмӯа ҳама чизеро, ки муштарӣ ҳангоми оғозёбӣ насб кардааст, иҷро мекунад.

Ташаккур ба шумо, Андрей, барои гузориш! Гузориши хуб! Ман шодам, ки Одиссей ҳар дақиқа тезтар ва тезтар инкишоф меёбад. Ман мехоҳам, ки ҳамин тавр идома диҳам. Мо аллакай аз шумо хоҳиш кардем, ки пайвасти бисёрҷониба-манбаи додаҳо дошта бошед, то Odyssey тавонад ҳамзамон ба пойгоҳи додаҳои гуногун, яъне ғуломи асосӣ пайваст шавад ва пас аз нокомӣ ба таври худкор ба устоди нав пайваст шавад.

Бале, ба назарам ин мубохисаро дар хотир дорам. Холо якчанд анборхо мавчуданд. Аммо байни онҳо ҳеҷ гуна тағирот вуҷуд надорад. Аз ҷониби мо, мо бояд аз сервер пурсед, ки он ҳанӯз зинда аст ва фаҳмем, ки хатогӣ рух додааст, ки pg_recovery -ро даъват мекунад. Ман як тарзи стандартӣ дорам, ки мо ба назди устод наомадаем. Ва оё мо бояд бо кадом роҳе аз хатогиҳо бифаҳмем ё чӣ? Яъне, идея ҷолиб аст, мавриди баррасӣ қарор дорад. Шарҳҳои бештар нависед. Агар шумо коргароне дошта бошед, ки C-ро медонанд, ин хеле хуб аст.

Масъалаи васеъ кардани миқёси репликаҳо низ барои мо ҷолиб аст, зеро мо мехоҳем қабули кластерҳои такроршавандаро барои таҳиягарони барнома то ҳадди имкон содда кунем. Аммо дар ин ҷо ман мехоҳам шарҳҳои бештаре дошта бошам, яъне маҳз чӣ тавр ин корро кардан, чӣ гуна онро хуб кардан.

Савол инчунин дар бораи нусхабардорӣ аст. Маълум мешавад, ки шумо усто ва якчанд нусхабардорӣ доред. Ва маълум аст, ки онҳо нисбат ба устод барои пайвастшавӣ ба реплика камтар мераванд, зеро онҳо метавонанд фарқиятҳо дошта бошанд. Шумо гуфтед, ки тафовути маълумот метавонад ба он андоза бошад, ки он тиҷорати шуморо қонеъ накунад ва то он даме, ки он такрор нашавад, ба он ҷо намеравед. Дар айни замон, агар шумо муддати тӯлонӣ ба он ҷо нарафтед ва пас аз он ба рафтан шурӯъ кунед, он гоҳ маълумоте, ки лозим аст, фавран дастрас нахоҳад шуд. Яъне, агар мо пайваста ба усто равем, пас кэш он ҷо гарм мешавад, аммо дар реплика кэш каме ақиб мемонад.

Бале дуруст аст. Дар pcache блокҳои додаҳои шумо, ки шумо мехоҳед, нахоҳед дошт, кэши воқеӣ дар бораи ҷадвалҳое, ки шумо мехоҳед маълумот надорад, нақшаҳо дархостҳои таҳлилшуда надоранд, ҳеҷ чиз умуман нахоҳад буд.

Ва вақте ки шумо як навъ кластер доред ва шумо дар он ҷо як нусхаи нав илова мекунед, пас ҳангоми оғоз шудани он ҳама чиз дар он бад аст, яъне кэши онро зиёд мекунад.

Ман фикр кардам. Равиши дуруст ин иҷро кардани фоизи ками дархостҳо дар реплика мебошад, ки кэшро гарм мекунад. Тахминан, мо шарт дорем, ки аз устод на бештар аз 10 сония акиб монем. Ва ин ҳолат ба як мавҷ дохил намешавад, аммо барои баъзе муштариён осон аст.

Бале, вазнро зиёд кунед.

Ин фикри хуб аст. Аммо аввал мо бояд ин қатъкуниро амалӣ кунем. Аввал мо бояд хомӯш кунем, ва он гоҳ мо дар бораи он фикр мекунем, ки чӣ тавр фурӯзон кунем. Ин як хусусияти олиҷанобест, ки ба осонӣ фаъол созад.

Nginx ин интихобро дорад slowly start дар кластер барои сервер. Ва ӯ тадриҷан бори зиёд мекунад.

Бале, идеяи олӣ, вақте ки мо ба он наздик мешавем, онро кӯшиш мекунем.

Манбаъ: will.com

Илова Эзоҳ