|
акка или кафка?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Если 600 записей накапливать в буффере и скидывать в PostgreSQL раз в 0.1 sec, а то и раз в 0.2 sec. То это получается "батч" размером в 50-100 записей О батче не говорил разве что ленивый. Но надо просто посмотреть что для системы такое провисание бизнес-операции в пачке не приведет к неконсистентной логике со стороны БД которая может уже запросить сведенья по операции (баланс посмотреть). Такое вполне возможно если представить что есть другая система которая ходит в БД но о батчах ничего не знает ИЛИ часть ЭТОЙ системы которая еще не была адаптирована. Вобщем мы в топике заняты любимым нашим делом. Придумыванием новых требований. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 14:25 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andreykaT Насчет инсертов. У меня может быть 2-3 инсерта. Где результат одного это данные (ФК) для другого. Причем в зависимости от типа данных это может быть как 1 инсерт так и 2-3-4 Я шизею дорогая редакция. И как это соотносится с начальным постом: Тот-же-авторлогика приложения проста - юзер приходит с данными, бэк по ним что-то там считает-собирает с разных источников - выдает ответ юзеру и параллельно сохраняет результат в базу если вдруг когда-нибудь юзер захочет эти данные пересмотреть. логика действительно проста. просто автор сего приложения на каком то этапе решил что данные надо сохранять в нескольких таблицах а не одной. поэтому да. для некоторых наборов данных кидаем всё в 2 таблицы для других в 3-4 таблицы. так сложилось. исторически. в смысле логики приложение никсколько не усложняется от этого. можно было бы в одну таблицу всё кидать. просто полей было бы много. или вообще монгу ибо реляций чуть больше 1й. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 14:25 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
mayton забыл ник Я тоже не понимаю смысла вопроса. Если нагрузка на систему вырастатет, то сюрприз! надо ее переписывать. Как показывает практика если разница в объемах обработки увеличивается на порядок, то прежние архитектурные принципы уже не подходят, и их надо пересматривать. Что у тебя за приложение и что оно делает совершенно непонятно, поэтому это тебе лучше знать. Что можно точно сказать - то все эти, вот тут подкрутим, там добавим, поменяем технологию, но не будем трогать основную логику - это развод для лохов, оно так не работает. Можно ли построить систему на кафка и акка? Можно. Будет ли она лучше чем существующая? Да хз, смотря что надо. Вообще по скупому описанию я бы смотрел в сторону CQRS и возможно двумя хранилищами, одно оптимизированное на инсерт, второе на селект. Но опять же непонятны условия fault tolerance, resilence, availability и eventual consistency, а без всего этого - как пальцем в небо +1 к CQRS. Но это надо обсуждать а уровне бизнес-постановки. Требования - сильно поменяются. тоже склоняюсь к этому. и да. это требует пересмотреть ээээ требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 14:29 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
mayton О батче не говорил разве что ленивый. Но надо просто посмотреть что для системы такое провисание бизнес-операции в пачке не приведет к неконсистентной логике со стороны БД которая может уже запросить сведенья по операции (баланс посмотреть). Такое вполне возможно если представить что есть другая система которая ходит в БД но о батчах ничего не знает ИЛИ часть ЭТОЙ системы которая еще не была адаптирована Откуда может взяться неконсистентность со стороны БД ? Или весь батч накатился, или весь батч откатился. До COMMIT'а данные все равно никто не увидит. Или увидят старый баланс или увидят новый баланс с учетом всего батча. По исходному сообщению, у меня сложилось ощущение, что данные напоминают некий лог. Т.е. можно записать, можно записать с задержкой, в крайнем случае, можно даже и утерять. Единственное, что не устраивает, скорость записи постгрескл, что и не удевительно. Т.к. 1-3 инсерта в отдельных транзакциях x 600 паралельных потоков - это мусор и помойка, а не нормальный потом данных для обработки СУБД. Написать на входе мультиплексор и системе явно должно получшеть на порядки (хотя х.з. как там сейчас работа с СУБД устроена). Подобные системы видел и сам делал. Цифра 600 одновременных соединений в секунду - много 600 insert'ов - для практически любой СУБД на офисном железе, не много 600 сообщений/синхронизаций - для приложения на Java, вообще ничтожно мало. Как я сказал, даже раздумывать над типом коллекции смысла нет. ArrayList и synchronized C кафка не сталкивался. Но подозреваю, все что сделает кафка в исполнении той же команды разработчиков, это из мусора сделает еще больше мусора, но в кластере ))) Но еще, конечно, принесет: экспиренс, запись в резюме и много удовольствия ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 15:02 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
кто сказал про 600 соединений в секунду? кто сказал про 600 параллельных потоков? точно я? я сказал про 600 инсертов в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 15:18 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
А сколько потоков пишут в базу? И сразу следующей вопрос: а точно ли это база загибается, а не просто на уровне приложения идет ожидание? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 15:27 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
andreykaT кто сказал про 600 соединений в секунду? кто сказал про 600 параллельных потоков? точно я? я сказал про 600 инсертов в секунду. PS. не нужно путать количество вставок в секунду и количество коммитов в секунду, тем более с участием FK. Со вставками в приличных системах речь действительно может идти про миллионы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 15:39 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
SpringMan А сколько потоков пишут в базу? И сразу следующей вопрос: а точно ли это база загибается, а не просто на уровне приложения идет ожидание? база. сам слик начинает писать варнингами типа ответ занял 1000 мс, ответ занял 10000 мс ответ занял 100000мс и т.п. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 16:06 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
andreykaT SpringMan А сколько потоков пишут в базу? И сразу следующей вопрос: а точно ли это база загибается, а не просто на уровне приложения идет ожидание? база. сам слик начинает писать варнингами типа ответ занял 1000 мс, ответ занял 10000 мс ответ занял 100000мс и т.п. )) А если из стека технологий выкинуть slick и работать на уровне JDBC? Хотя-бы для 1 конкретного hot-sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 16:08 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
Профайлинг и администрирование на уровне "бог" IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 16:18 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Профайлинг и администрирование на уровне "бог" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 16:53 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Не, ну можно конечно взять каффка, акка, какую нибудь NoSQL и радоваться (заниматься сексом) с ними полгодика, а то и год.... молодежно и "весело задорно" ( C ) Ну, нормально. Секс он не для стариков. Leonid Kudryavtsev Тут уже не 20% прирост, а думаю вполне можно ожидать прирост раз в 10. Ну ты не знаешь как у него там всё устроено, может после этих insert'ов ему вернётся пачка id, а там еще 10 insert'ов, на каждом по 2 триггера, штук 5 вложенок сверху, а потом select по половине базе. Поможет ему в таком случае твой батч. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 17:03 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Leonid Kudryavtsev Профайлинг и администрирование на уровне "бог" а причем тут графана. ну хотят графану пусть шатают графану. приложению то пофиг. может вкарячил своего прометея оно его и гребет. а можешь и не корячить. я вот не хочу например возиться с оптимизацией. так как это надо быть на нее сильно заточенным. и заниматься только ей. нюансов не очень много но где их взять и как набить я хз да мне и не интересно. а тыкать пальцем в небо можно до бесконечности. ща я бабахну 100500 часов и впилю прослойку для батчинга а на выхлопе окажется шиш да моленько. потому что не все предусмотрели и ваши рассуждения на тему батчинга хороши для кейса А и совершенно бесполезны для кейса Б. подскажи о добрый человек, куда мне дописать пару строчек чтоб оно работало не на 600 запросов а хотя бы на 6000? ведь это же просто. как в стековерфлоу - ктрл-ц ктрл-в и всё работает. ведь это же так просто исходя из твоих слов? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 17:36 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
crutchmaster Leonid Kudryavtsev Не, ну можно конечно взять каффка, акка, какую нибудь NoSQL и радоваться (заниматься сексом) с ними полгодика, а то и год.... молодежно и "весело задорно" ( C ) Ну, нормально. Секс он не для стариков. Leonid Kudryavtsev Тут уже не 20% прирост, а думаю вполне можно ожидать прирост раз в 10. Ну ты не знаешь как у него там всё устроено, может после этих insert'ов ему вернётся пачка id, а там еще 10 insert'ов, на каждом по 2 триггера, штук 5 вложенок сверху, а потом select по половине базе. Поможет ему в таком случае твой батч. нету вложенок никаких. всё тупо как топор. можно прилагу как бенчмарк использовать вполне. к инсертам примешивается некоторое кличество селектов ну примерно в 1-2хкратном размере и всё. причем часть этих селектов вполне можно вынести на какой-нибудь редис. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 17:38 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
andreykaT а причем тут графана. ну хотят графану пусть шатают графану. приложению то пофиг. может вкарячил своего прометея оно его и гребет. а можешь и не корячить. andreykaT я вот не хочу например возиться с оптимизацией. так как это надо быть на нее сильно заточенным. и заниматься только ей. нюансов не очень много но где их взять и как набить я хз да мне и не интересно. а тыкать пальцем в небо можно до бесконечности. ща я бабахну 100500 часов и впилю прослойку для батчинга а на выхлопе окажется шиш да моленько. потому что не все предусмотрели и ваши рассуждения на тему батчинга хороши для кейса А и совершенно бесполезны для кейса Б. andreykaT подскажи о добрый человек, куда мне дописать пару строчек чтоб оно работало не на 600 запросов а хотя бы на 6000? ведь это же просто. как в стековерфлоу - ктрл-ц ктрл-в и всё работает. ведь это же так просто исходя из твоих слов? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 17:59 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
crutchmaster вадя !!! Что? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 17:59 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT, Не помогут тебе кафки. Всё прётся в базу, рано или поздно она опять ляжет по этой или другой причине. Можно накачивать твою бд стероидами, но ты уже понял, что проще придумать что-то, чтобы этого не делать. дядь ты вообще видимо не понимаешь что такое каффка) каким образом там что упрется в базу то? в его случае это раешается батчингом без каких то плясок с бубном - а вообще раз такая ситуация у него то генерировать id нужно не в бд а на бэке и класть в кэш и далее в кафку - тогда и база не лопнет и id получит мгновенно пс.у нас есть сервис с нагрузкой раз в 10 больше чем его 600 инсертов в секунду - батчитнг работает отлично и база постгрес через жука ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:00 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
andreykaT подскажи о добрый человек, куда мне дописать пару строчек чтоб оно работало не на 600 запросов а хотя бы на 6000? ведь это же просто. как в стековерфлоу - ктрл-ц ктрл-в и всё работает. ведь это же так просто исходя из твоих слов? если хочешь можно в тимс я тебе покажу решение на 6000 инсертов - но его писал не я ,могу только код показать) - но там батчинг ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:03 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
asv79 в его случае это раешается батчингом без каких то плясок с бубном - а вообще раз такая ситуация у него то генерировать id нужно не в бд а на бэке и класть в кэш и далее в кафку - тогда и база не лопнет и id получит мгновенно пс.у нас есть сервис с нагрузкой раз в 10 больше чем его 600 инсертов в секунду - батчитнг работает отлично и база постгрес через жука ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:03 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
andreykaT подскажи о добрый человек, куда мне дописать пару строчек чтоб оно работало не на 600 запросов а хотя бы на 6000? ведь это же просто. как в стековерфлоу - ктрл-ц ктрл-в и всё работает. ведь это же так просто исходя из твоих слов? Мне кажется что с тебя надо стрясти SQL-запрос. План. И статистика которую видит Постгрес. И отчот Java Flight Recorder за проблемный период. И memory dump. Да и еще. Самый пустяк. Исходные коды. А-то вдруг ты там Thread.sleep(1) вставил. Просто чтоб гонок не было. Я такое видел. Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:07 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
Андрей Панфилов этот фокус пройдет с чистым jdbc? жук тут не прокатит или любая другая имлементация JPA? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:11 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
вадя asv79 в его случае это раешается батчингом без каких то плясок с бубном - а вообще раз такая ситуация у него то генерировать id нужно не в бд а на бэке и класть в кэш и далее в кафку - тогда и база не лопнет и id получит мгновенно пс.у нас есть сервис с нагрузкой раз в 10 больше чем его 600 инсертов в секунду - батчитнг работает отлично и база постгрес через жука вадя ты о чем) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:13 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
mayton Да и еще. Самый пустяк. Исходные коды. А-то вдруг ты там Thread.sleep(1) вставил. Просто чтоб гонок не было. Я такое видел. Да. андреич по классике сделал - сначала thread.interapt() потом thread.sleep() ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:17 |
|
акка или кафка?
|
|||
---|---|---|---|
#18+
asv79 этот фокус пройдет с чистым jdbc? жук тут не прокатит или любая другая имлементация JPA? https://www.postgresql.org/docs/12/wal-async-commit.html Asynchronous commit is an option that allows transactions to complete more quickly, at the cost that the most recent transactions may be lost if the database should crash. In many applications this is an acceptable trade-off. andreykaT имеет желание сделать то же самое, но только через жопу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:17 |
|
|
start [/forum/topic.php?fid=59&msg=39979126&tid=2120741]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 241ms |
total: | 401ms |
0 / 0 |