|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Есть очередь транзакций, ожидающих применения к целевой БД. Есть две возможности: 1) Ставить новую транзакцию в очередь только после того, как было подтверждено применение предыдущей; 2) Не ожидать подтверждения и завивать очередь транзакциями по мере их получения. В первом случае ошибка при применении транзакции остановит весь процесс, данные в БД будут устаревшими, но гарантированно целостными (поскольку при следующем запуске репликации она будет продолжена с того же места хотя, возможно, опять упадёт с той же ошибкой). Во втором случае транзакция с ошибкой будет пропущена и её данные могут бесследно испариться. Но производительность этого варианта гораздо выше, чем первого и работа не встанет. Какой из вариантов предпочтительнее с точки практического применения? Сразу оговорюсь, что ключ конфигурации, управляющий поведением, возможен, но только как крайнее средство. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2019, 17:16 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovКакой из вариантов предпочтительнее с точки практического применения?представь, что лично тебе придется разгребать после очередного "конца света" результат работы варианта 2, когда не не пойдет какая-нибудь отчетность по базе-реплике. Как по мне так вариант 2 не годится вообще никак. Если пришли к тому ч на истотчнике транзакция прошла, а на реплике обломалась (причем повторно), то капец уже наступил и боржоми пить уже поздно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2019, 18:05 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyЕсли пришли к тому ч на истотчнике транзакция прошла, а на реплике обломалась (причем повторно), то капец уже наступил и боржоми пить уже поздно. И это нормально класть весь кластер одной (возможно, злодейски сформированной) транзакцией? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2019, 18:36 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovИ это нормально класть весь кластер одной (возможно, злодейски сформированной) транзакцией?Как только перетасуешь порядок следования транзакций, огребешь проблем куда больше, чем решишь. Без ДБА репликация все едино будет жить не долго, хотя может начать и весело. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2019, 22:41 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
DS> Есть очередь транзакций, ожидающих применения к целевой БД. А она многопоточная или однопоточная? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2019, 17:04 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамА она многопоточная или однопоточная? Пока не выявлено, что модуль Apply является узким местом - однопоточная. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2019, 18:27 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Дык если однопоточная, и очередь FIFO - то какая разница? Или мы по-разному понимаем "ожидать подтверждения" и "ставить в очередь", и ты хочешь исполнять (а не ставить в очередь) TxN, даже если обломалась TxN-1 (не пытаясь её повторить/"устранить ошибку" и пр.) ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2019, 20:24 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Смотри: в очереди стоят транзакции 1,2,3,4. Транзакция 1 обломалась. Что делать? Вариант 1: запротоколировать, забыть. Вариант 2: поставить снова в очередь в надежде, что где-то в 2,3 или 4 придёт что-то, устраняющее ошибку и транзакция 1 применится после 4 успешно. Вариант 3: с шумом упасть, и больше ничего не делать. Текущий реализованный вариант - номер 3 и Иван утверждает, что он - единственно правильный. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2019, 22:10 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Разумеется. Можно ещё попытаться выполнить её повторно, через N секунд, но в остальном - только третий вариант, только хардкор. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 17:38 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСмотри: в очереди стоят транзакции 1,2,3,4. Транзакция 1 обломалась. Что делать?Ты не говоришь почему она обломилась Dimitry Sibiryakovвозможно, опять упадёт с той же ошибкойЕсли ошибка с консистентностью данных, то главный вопрос: как она смогла отработать на источнике? У меня была мысль сделать на несколько массовых таблиц не имеющих ссылающихся на них ФК отдельный асинхронный репликатор, отдельный лог, отдельный комплект кода, разгребающий этот лог независимо от основного потока, даже заготовил кое-какой код, но потом забил, уж больно муторно отслеживать, появится зависимость и все весело стопорнется. Решили проблему более свирепым железом и оставили все в один поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 22:10 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyЕсли ошибка с консистентностью данных, то главный вопрос: как она смогла отработать на источнике? Наитривиальнейший пример: на одной ноде добавили мастер-запись, отреплицировали на вторую, там добавили деталь-запись, потом эти две транзакции пошли на третью, но вторая успела чуть-чуть раньше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 22:27 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
> Если ошибка с консистентностью данных, то главный > вопрос: как она смогла отработать на источнике? Это же не 2PC, а репликация с задержкой. Пока шло накопление и накат транзакции с источника на целевую БД, данные в ней уже изменились и привет - самое банальное это нарушения UK и FK. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 22:29 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
DS> вторая успела чуть-чуть раньше. Это как раз твой косяк - мог бы время/номера отслеживать. А вот если на третьей будет нарушение FK/UK/триггеров - это автоматом уже не обработаешь, только вручную. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 22:31 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЭто как раз твой косяк - мог бы время/номера отслеживать. Теоретически я могу и время отслеживать, но ребром встаёт вопрос: как отличить несуществующую транзакцию от ещё не дошедшей. Собственно топик возник как раз при ловле бага, когда транзакция отправлялась на apply сразу после её прихода из network, поскольку она имела как раз подходящий для этого номер (следующий после последней применённой). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 22:46 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Я в свое время делал репликацию по диапазону с перекрытиями. 1. Каждые 20 сек - заливка онлайн продаж (по счетчику) 2. Каждые 10 мин обмен между вокзалами проданных и использованных билетов. Т.к. транзакции по оформлению могли завершаться в пределах 5 минут, то обмен (merge) шел с перекрытием в 10 мин. 2010 год. 75 000 чел/сутки. 6 вокзалов. Работало 2.5 года до внедрения корпоративной системы на оракле. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 09:52 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
pastor, ну у Димы случай посложнее будет. Одно дело когда ты сам накладываешь как разрешать конфликты для конкретной бизнес-модели, совсем другое сделать это универсальным. Сомневаюсь что это вообще возможно, наверное лучше дать некий инструмент которым можно подлезть и настроить способ разрешения конфликта. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 10:07 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
"При наличии отсутствия пропитанных шпал, это будет не трамвай, а одно горе!" (С) без ДБА ни одна реализация разрешения конфликтов не даст 100% гарантии. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 11:57 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Мимопроходящий"При наличии отсутствия пропитанных шпал, это будет не трамвай, а одно горе!" (С) без ДБА ни одна реализация разрешения конфликтов не даст 100% гарантии. Есть и такие реализации. При возникновении сомнений - все решения в пользу клиента. Было даже три эшелона принятия решения - при потере серверов - пускать по любому билету, при живых серверах и потере связи с кассами других вокзалов - по контрольной сумме и по билетам, похожим на онлайн продажи :) ТЗ по сценариям отказов прописывать надо тщательнее, только и всего. Опасность и безнадежность (с) рулит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 12:08 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
06.05.2019 12:08, pastor пишет: > Есть и такие реализации. При возникновении сомнений - все решения в пользу клиента. оно конечно, лучше про#бать бабки, чем платить зарплату ДБА... зы: сам с таким сталкивался (не только в РФ) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 12:15 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНаитривиальнейший пример: на одной ноде добавили мастер-запись, отреплицировали на вторую, там добавили деталь-запись, потом эти две транзакции пошли на третью, но вторая успела чуть-чуть раньше.Мы разрулили тем, что пишем документ ровно на одном сервере, ты уже смеялся над этим. Но тем не менее, у меня работает и не схлестывается. Готов послушать твой вариант решения проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 12:27 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Мимопроходящий06.05.2019 12:08, pastor пишет: > Есть и такие реализации. При возникновении сомнений - все решения в пользу клиента. оно конечно, лучше про#бать бабки, чем платить зарплату ДБА... зы: сам с таким сталкивался (не только в РФ) В Ваши годы, любезный :), такая категоричность непростительна. 1. Цена разбора конфликта превышает стоимость ПОТЕНЦИАЛЬНОГО ущерба. 2. Анализ постфактум таки подтвердил добросовестность пассажиров. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 12:33 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
иди, иди, окучивай Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 12:39 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyГотов послушать твой вариант решения проблемы. Если бы у меня было решение проблемы, я бы не начинал этот топик. На данный момент есть два костыля: 1) Реализованный. В очереди может быть только по одной транзакции от каждой ноды. При некоторых ошибках транзакции даётся второй шанс: она снова ставится в конец очереди. Если транзакции с других нод из очереди сделают что-то, решающее проблему, прежде чем данная вернётся - хорошо. Нет - падаем с шумом. При этом последовательность транзакций одной ноды сохраняется. 2) Планируемый. При нарушении FK обработка транзакций этой ноды приостанавливается и посылается запрос пирам "пришлите недостающую мастер-запись". Этот вариант опробован softwarer-ом, который утверждает, что он работоспособен. У меня есть теоретической подозрение, что в худшем случае он может надолго приостановить применений транзакций вообще. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 12:55 |
|
Асинхронная репликация: архитектурная дилемма
|
|||
---|---|---|---|
#18+
06.05.2019 12:55, Dimitry Sibiryakov пишет: > 2) Планируемый. При нарушении FK обработка транзакций этой ноды приостанавливается и > посылается запрос пирам "пришлите недостающую мастер-запись". Этот вариант опробован > softwarer-ом, который утверждает, что он работоспособен. не верь. Саша Просторов (aka softwarer) чистый дельфятник-прикладник, RDBMS не его парафия. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 13:02 |
|
|
start [/forum/topic.php?fid=40&fpage=23&tid=1560719]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 155ms |
0 / 0 |