Size: a a a

Архитектура ИТ-решений

2020 November 25

N

Nikolay in Архитектура ИТ-решений
Gennadiy Kruglov
Почему активных?
Нужно держать Локи, а Локи держит сессия. Т.е такое решение работает для очень маленького числа консьюмеров.в oracle есть такие очереди.
источник

N

Nikolay in Архитектура ИТ-решений
Phil Delgyado
Да и для нереляционок все не просто. Там еще и процессор надо эффективно утилизовать и так далее.
В общем, 10K нормальных ACID транзакций на одном узле - это все еще тяжко.
Ssd это уже тянет . Зайдите в чат по pg , например.  Там есть люди ,которые проводили такие  тесты.
источник

N

Nikolay in Архитектура ИТ-решений
Phil Delgyado
А вот плохо реляционки используют возможности быстрых SSD. Просто не рассчитаны, увы.
Т.е. из 100 000 IOS реально готовы загрузить где-то 4000, не больше.
Так что не факт, что optane спасет (
А кто хорошо использует 100k io?
источник

N

Nikolay in Архитектура ИТ-решений
Про платежи. Это всегда делали на workflow. Почти все банковские системы так построены. У платежа много состояний. В очереди платежу сидеть не нужно для того ,что бы ждать свой обработки. Он ждёт в определенном статусе. Приходит событие - меняется статус. Это как конечный автомат.
источник

N

Nikolay in Архитектура ИТ-решений
Может это и хороший подход с миллионом очередей , но такого никогда не видел.  ни в одном продукте или решении. Поэтосу выглядит для меня подозрительным. Есть ли примеры в каких то продуктах ?
источник

AM

Andrei Moiseev in Архитектура ИТ-решений
Phil Delgyado
Угу, я это хорошо знаю. Вот и ищу альтернативу, которая была бы удобной.
Я то и на кафке понимаю как сделать, но это тоже слишком костыльно получается.
А можешь схематично написать, как на кафке ты делал бы? Я сейчас использую похожую модель поверх базы и пока мне в обозримой перспективе по нагрузке этого хватает. Но если в будущем появятся сущности с более высокими требованиями к нагрузке, то хочется иметь в запасе масштабируемое решение.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Nikolay
Нужно держать Локи, а Локи держит сессия. Т.е такое решение работает для очень маленького числа консьюмеров.в oracle есть такие очереди.
В моём представлении, число очередей не равно числу сессий. Очереди могут быть неактивны (сущности не меняются в данный момент). Нужно дизайн целиком смотреть.
источник

N

Nikolay in Архитектура ИТ-решений
Gennadiy Kruglov
В моём представлении, число очередей не равно числу сессий. Очереди могут быть неактивны (сущности не меняются в данный момент). Нужно дизайн целиком смотреть.
Сессии на deque. На извлечение из очереди. Мы же сообщение должны заложить в базе , что бы его не считали другие пользователи .
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Nikolay
Сессии на deque. На извлечение из очереди. Мы же сообщение должны заложить в базе , что бы его не считали другие пользователи .
У меня некая сущность не меняется год, мне для её очередей сессии открытыми год держать? При чём здесь deque?
источник

N

Nikolay in Архитектура ИТ-решений
Gennadiy Kruglov
У меня некая сущность не меняется год, мне для её очередей сессии открытыми год держать? При чём здесь deque?
Нет, конечно. Но вот вы делаете deque, что подразумевает , что эта функция вернёт вам следующий элемент из очереди. Вы же его в таблице залочите ? что бы другие знали ,что вы с ним работаете . И если все успешно , то вы его удалите и закомитите , а если не успешно ( у вас клиент, например упал ), то произойдет rollback и запись вновь станет доступной для обработки. Т.е Лок нужен только от начала извлечения записи и до комита. Если не так, о как иначе вы предполагаете ?
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Nikolay
Нет, конечно. Но вот вы делаете deque, что подразумевает , что эта функция вернёт вам следующий элемент из очереди. Вы же его в таблице залочите ? что бы другие знали ,что вы с ним работаете . И если все успешно , то вы его удалите и закомитите , а если не успешно ( у вас клиент, например упал ), то произойдет rollback и запись вновь станет доступной для обработки. Т.е Лок нужен только от начала извлечения записи и до комита. Если не так, о как иначе вы предполагаете ?
Мы на разных уровнях абстракции общаемся
источник

p

pragus in Архитектура ИТ-решений
Phil Delgyado
И? Что это даст?
Странный вопрос. Там же написано про dax и mmap.  Идея в том, чтобы выкинуть page cache и block layer из i/o path.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Nikolay
1k примерно будет из-за коммитов, а они батчуются. Поэтому в эти 300 влезут 1000.
Эээ, ну не получается иметь заметно больше TPS, нежели IOPS. Обычно как раз меньше получается, увы.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Nikolay
Ssd это уже тянет . Зайдите в чат по pg , например.  Там есть люди ,которые проводили такие  тесты.
Хм, а есть какие-то ссылки на реальные результаты? Т.е. для той же FDB и по 50K tps на узел тесты показывают, но вот на PG получить 10K сложных транзакций на простой узел - хочется посмотреть (при том, что IOPSов там будет, подозреваю, больше 100K)
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Nikolay
Про платежи. Это всегда делали на workflow. Почти все банковские системы так построены. У платежа много состояний. В очереди платежу сидеть не нужно для того ,что бы ждать свой обработки. Он ждёт в определенном статусе. Приходит событие - меняется статус. Это как конечный автомат.
Ну, банковские системы даже 1K Payment-per-second тянут очень с трудом, а 10K - просто никак.
Ну и описание сложных платежей через конечный автомат - очень сложное и очень тяжело меняемое. Ну и с взаимодействием с пользователем там все грустно.
Я то как раз про платежи и говорю в основном, но не только про банк, а про произвольную платежку
источник

N

Nikolay in Архитектура ИТ-решений
Phil Delgyado
Эээ, ну не получается иметь заметно больше TPS, нежели IOPS. Обычно как раз меньше получается, увы.
Такое может быть только если отключен батчинг специально. В том же оракле он по умолчанию включен. На какой у вас базе не получается? Или может  быть у вас транзакции генерят очень много данных для WAL и условный log writer тратит время на это. Или еще что-то. это надо смотреть на конкретную конфигурацию. У меня на оракле было 1K+ обычно.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Nikolay
Может это и хороший подход с миллионом очередей , но такого никогда не видел.  ни в одном продукте или решении. Поэтосу выглядит для меня подозрительным. Есть ли примеры в каких то продуктах ?
Ну, я на таком делал платежку, даже на дешевом железе на Pg спокойно получал 100 payment-per-second (сложных сквозных платежей, которые банки вообще обычно не умеют) и быструю разработку.
источник

p

pragus in Архитектура ИТ-решений
Phil Delgyado
Эээ, ну не получается иметь заметно больше TPS, нежели IOPS. Обычно как раз меньше получается, увы.
смотря какого устройства iops. wal унести на отдельное быстрое устройство, например.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Andrei Moiseev
А можешь схематично написать, как на кафке ты делал бы? Я сейчас использую похожую модель поверх базы и пока мне в обозримой перспективе по нагрузке этого хватает. Но если в будущем появятся сущности с более высокими требованиями к нагрузке, то хочется иметь в запасе масштабируемое решение.
Ну, можно иметь одну партицию в кафке на несколько очередей, те события, что сейчас еще рано обрабатывать - просто перекладывать в конец.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Nikolay
Сессии на deque. На извлечение из очереди. Мы же сообщение должны заложить в базе , что бы его не считали другие пользователи .
Ну, реально, конечно, число соединений нужно как число воркеров, а их много не нужно, но зависит от транзакционности обработки сообщения и вообще времени обработки сообщения. На 10K воркеров и 10ms получим 1mln MPS
источник