Vadim
или CrunchyData, а то и сразу в ютуб писать как он принципиально сломан
Etki
Ох, сейчас доберемся до моей любимой мякотки
Stanislav
Etki
Вся эта SQL-дримтим знает только про 2PC или 3PC, который работает только в пределах одного сервера. Вне зависимости от протокола в какой-то момент серверам отправляется сообщение "закоммить, пожалуйста, вот это", на которое сервер должен реально добавить данные в рабочую копию. Если в этот момент моргнет сетка, кто-то упадет, или случится еще что-то - коммит на этом сервере не произойдет, и это и будет конфликт историй. Этого невозможно избежать, это лечится только либо единой историей на весь кластер (и здесь мы можем попрощаться с горизонтальным масштабированием на запись - де-факто это стандартный мастер-слейв), либо необходимо производить read repair при чтении и опрашивать как минимум большинство участников в кластере (привет, рафт). Ничего такого SQL-классика, конечно, не делает, поэтому можно сколько угодно апеллировать к крупным именам, да только это все равно что спорить с реальностью; кроме того, если вспомнить, что SQL подразумевает еще и MVCC, то жизнь имплементатора такого решения превращается просто в ад, и пока такого хоть в какой-то мере добились ребята из гугла (спаннер) и экс-ребята из гугла (cockroach db), все остальные ребята просто берут у вас большие деньги за ваше ощущение надежности.
Maksim
Вся эта SQL-дримтим знает только про 2PC или 3PC, который работает только в пределах одного сервера. Вне зависимости от протокола в какой-то момент серверам отправляется сообщение "закоммить, пожалуйста, вот это", на которое сервер должен реально добавить данные в рабочую копию. Если в этот момент моргнет сетка, кто-то упадет, или случится еще что-то - коммит на этом сервере не произойдет, и это и будет конфликт историй. Этого невозможно избежать, это лечится только либо единой историей на весь кластер (и здесь мы можем попрощаться с горизонтальным масштабированием на запись - де-факто это стандартный мастер-слейв), либо необходимо производить read repair при чтении и опрашивать как минимум большинство участников в кластере (привет, рафт). Ничего такого SQL-классика, конечно, не делает, поэтому можно сколько угодно апеллировать к крупным именам, да только это все равно что спорить с реальностью; кроме того, если вспомнить, что SQL подразумевает еще и MVCC, то жизнь имплементатора такого решения превращается просто в ад, и пока такого хоть в какой-то мере добились ребята из гугла (спаннер) и экс-ребята из гугла (cockroach db), все остальные ребята просто берут у вас большие деньги за ваше ощущение надежности.
Яросно плюсую)))
Andor
Ну и это не про sql, апро консистентность вообще
Sergey
Угу, про CAP в целом :)
Etki
...и что до большинства решений по постгре, до которых только руки дошли (столон и похожие, понятно, что это уровнем ниже, но все же) - там проверки уровня "пингануть сервак; заснуть на пять секунд; повторить", то есть вы свободно можете потерять все, что у вас там происходило последние пять секунд, и это вам будут продавать как ACID-compliant решение
Maksim
Stalon это кажись парочка master-slave с pgpool поверх рубашки
Sergey
Ну если копать в философию noSQL vs SQL - вот тут довольно хороший собственно ответ на эту тему https://softwareengineering.stackexchange.com/a/194408
Andor
Так или иначе если у тебя высокая связность данных, то ты не можешь расшардировать на независимые консистентные, и если требования к консистентности высокие и связность высокая, то ты так и так вернёшься к классике
Andor
И речь не про язык запросов в любом случае
Andrey
Коллеги, есть положительный опыт имплементации health check'ов Celery? Поделитесь?
G72K
Вся эта SQL-дримтим знает только про 2PC или 3PC, который работает только в пределах одного сервера. Вне зависимости от протокола в какой-то момент серверам отправляется сообщение "закоммить, пожалуйста, вот это", на которое сервер должен реально добавить данные в рабочую копию. Если в этот момент моргнет сетка, кто-то упадет, или случится еще что-то - коммит на этом сервере не произойдет, и это и будет конфликт историй. Этого невозможно избежать, это лечится только либо единой историей на весь кластер (и здесь мы можем попрощаться с горизонтальным масштабированием на запись - де-факто это стандартный мастер-слейв), либо необходимо производить read repair при чтении и опрашивать как минимум большинство участников в кластере (привет, рафт). Ничего такого SQL-классика, конечно, не делает, поэтому можно сколько угодно апеллировать к крупным именам, да только это все равно что спорить с реальностью; кроме того, если вспомнить, что SQL подразумевает еще и MVCC, то жизнь имплементатора такого решения превращается просто в ад, и пока такого хоть в какой-то мере добились ребята из гугла (спаннер) и экс-ребята из гугла (cockroach db), все остальные ребята просто берут у вас большие деньги за ваше ощущение надежности.
У нас уже был этот разговор:) если ждать подтверждения записи от другой ноды, то ничего не сломается. Если послал и забыл, то конечно хуже
Sergey
Etki
G72K
Sergey
Ну это чем-то похоже на consistency QUORUM/LOCAL_QUORUM на запись в кассандре. В этом случае да, но это по сути шардирование, а при шардировании к решению на SQL сразу возникают вопросы - JOIN-ы, констраинты, транзакции и далее по списку
G72K
Нет, не шардирование. У каждого слейва полна копия.
Sergey
Тогда вопрос к консистентности
G72K
Какой вопрос то? :) если подтверждение пришло, то на момент той транзакции все консистентненько
Etki
Да даже если подтверждение пришло, это про консистентность ничего не говорит. Два координатора с двух концов кластера послали команду на запись в один и тот же регистр, все подтверждения будут получены, но как-то так выйдет, что история не линеаризуется.
G72K
Etki
Ну там выше уже кассандра пошла, но самый сок в том, что отрезанный мастер обычно далеко не сразу знает, что он больше не мастер, и если там внутри госсип или что-нибудь такое, то веселья может быть очень много
Etki
Но все равно "ждать подтверждения" никак не влияет на то, что это может заработать. Просто потому что (повторяя предыдущий разговор) слейвы-то может и закоммитили, а мастер отрезало до прихода подтверждений - и вот снова истории разошлись. Или все слейвы закоммитили, а один не закоммитил - теперь транзакцию надо откатывать? А если в момент отката откажется работать еще один слейв?
No1
зачем нужна бд в кубернетесе? вопрос уже был такой?)
Sergey
В самом начале ))
Andrey
No1
так в чем идея/смысл такого решения?
Etki
Ну очевидно дешевле держать одну инфраструктуру, чем две
Sergey
Это зависит от количества костылей, которые нужно забить в эту инфраструктуру, чтобы конкретная база заработала как надо
Etki
нет, в одном случае мне кроме инструментов для куба придется держать еще Configuration Manager
Etki
не говоря уж о том, что база может и поместиться в существующую инсталляцию без дополнительных ресурсов
No1
Etki
окей, без покупки дополнительных ресурсов
No1
у вас сколько нод в среднем в кубернетесе?
No1
5 или 3?
G72K
No1
Когда у вас бд упадет в кубернетесе, а она упадет к гадалке не ходи и вы все протеряете - вопрос о доп.ресурсах быстро исчезнет. Экономьте в другом месте.
G72K
Бд упадет точно так же и без куба. Причем тут он?
No1
Деплойте в кубернетес то, что вы не боитесь потерять. Все остальное выносить - это нормальные реалии)
Sergey
G72K
Так вы аргументы давайте, что мнения то транслировать
G72K
Какой пуш? Как снес? Конкретнее
G72K
Ставьте pv reclaim policy Retain, если уж совсем параноить
No1
у вас точно в проде куб?
No1
Какой пуш? Как снес? Конкретнее
вы поменяли манифест деплоя, запушили свой кривой код, что не ново. Бд пересоздается с нуля, нухз что вы там написали, откатите, но бд ли?
G72K
Вы факты давайте )
G72K
Sergey
Я один раз потерял большое количество логов в стейджинге и получил даунтайм из-за опечатки при изменении конфигурации эластика. PV не смонтировалась, данные начали писаться в контейнерную ФС, нода умерла через денек из-за 100%-ной загрузки диска
No1
я ж написал, нухз что вы там написали - ошиблись pv/path хз
No1
выж девопс, какой код ревью, к примеру)
G72K
я ж написал, нухз что вы там написали - ошиблись pv/path хз
Максимум что может случиться, это как вон написали выше - рестартанул контейнер , начал писать хз куда. У меня хз куда спать не сможет, тау как ничего от рута не работает . PVC тоже только создавать можно, удалять нельзя . Менять в них куб и так ничего не дает, так что права на изменения у деплоилки есть (лейблы там проставить, аннотации)
Stanislav
G72K
Зато организовать staging на 99% похожий на прод, и который спустя пол года так и остается на 99% похожим на прод в кубе в десяток паз легче, что бы,такие ошибки не пролазили
No1
Policy Delete не?
No1
Максимум что может случиться, это как вон написали выше - рестартанул контейнер , начал писать хз куда. У меня хз куда спать не сможет, тау как ничего от рута не работает . PVC тоже только создавать можно, удалять нельзя . Менять в них куб и так ничего не дает, так что права на изменения у деплоилки есть (лейблы там проставить, аннотации)
у вас случился ппц, 1 из 3 нод работает, все переехало на одну ноду - вы четкий, все работает. но производительность хуже некуда - лучше бы не работало, чем позориться.
Etki
Sergey
а как по мне - проще взять hosted elastic / RDS (в случае клауда) или сделать по старинке ансиблом по уже готовому и обкатанному боями cookbook-у, поставить туда уже готовые сборщики метрик для специфичные для этой БД, запилить своими руками RAID и спать спокойно
AB 🇨🇾 🍉
Есть пачка сервисов, которым нужно общее дисковое пространство.
Vadim
AB 🇨🇾 🍉
Нужно быстро читать статику.
Вопрос, кто-нибудь в курсе как такое реализовать на DigitalOcean
Vadim
а виноваты продавцы snake oil, то есть витессы!
No1
подворачивайте штанцы, вставайте на гироскутер - и в кубернетес ) главное слюной не забудьте брызгать какой он крутой и вы) ну до момента когда что нибудь пойдет не так 🙂
Andor
Кубер - не серебряная пуля
No1
ктож спорит:)
No1
2ndquadrant/pgconsulting и сам И.Космодемьянский будут против крутить ~прод~ бд в докере/кубернетесе и не из соображении, что может все навернуться) Просто такие вещи лучше держать ближе к железке) Но вы можете это делать,как тру человек-оркестр-девопс 😂
Logan
Logan
и в продакшн его, в продакшн
Vadim
Logan
впрочем я знаю один финансовый сервис, который работает в хероку целиком. По-моему – до сих пор
No1
Простите, но с кубом реально подгорает:) Когда заказчик визжит, проект лежит, а супермегадевопс, который все поднял и это проработало еле еле пару месяцев исчезает.
Logan
Logan
и самое главное – не нанимайте идиотов
No1
и дело реально не в приложении/данных которые не страшно потерять - дело в бд, которая не бэкапится) надо же быстро,стильно,модно молодежно 🙂