Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / акка или кафка? / 25 сообщений из 192, страница 1 из 8
11.07.2020, 14:03
    #39978411
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
такая задача. есть приложенька.
как обычно слева юзеры посередке бэк справа постгрес.
логика приложения проста - юзер приходит с данными, бэк по ним что-то там считает-собирает с разных источников - выдает ответ юзеру и параллельно сохраняет результат в базу если вдруг когда-нибудь юзер захочет эти данные пересмотреть.

с некоторых пор у приложения появились затыки по производительности. а именно - по связке база-бэк. база дохнет и быстро. ну много данных много запросов много инсертов. при этом сами бэк-приложения бодрячком.

так как в большинстве пользвоательских сценариев в сохраненные коллекции данных юзеры ходят редко я особо не вижу проблемы например, связку бэк-база сделать асинхронной. типа - юзер пришел с данными, бэк их принял в обработку, сформировал ответ - выплюнул юзеру а потом когда-нибудь позже сбросил результат в базу. можно даже со значительным лагом.

итого, как я вижу асинхронку тут? мы сформировали ответ, и один экземпляр бросили клиенту, второй экземпляр - в очередь. перед базой стоит что-то что эту очередь планомерно выгребает и складывает результаты в базу.

и здесь опции указанные выше - мы юзаем кафку. там ясно понятно работает. мониторится замечательно. но.. как то новый инструмент.
либо вариант два - мы юзаем акку (приложение на плее там акка уже под капотом) но акка это не совсем очередь все же на мой взгляд.

итого я пока имею по одному плюсу для каждого подхода и по одному минусу:
+акка: она уже есть, минимум накладных расходов на рефакторинг.
-акка: без понятия как мониторить очередь или че там, без понятия как ее тротлить если база дохнет. без понятия как сбросить очередь куда-нибудь если сервис в ребут ушел (данные не особо критичные, но терять их не очнеь желательно все-равно)
+кафка: полноценная очередь, все смотрится мониторится, кучи настроек, ничего не теряется вроде как.
-кафка: надо тащить новый инструмент, надо делать рефак глубже. а на выходе все ее плюшки в противовес акки может и не понадобятся вовсе :)
...
Рейтинг: 0 / 0
11.07.2020, 15:00
    #39978422
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Сколько инсертов в минуту?
...
Рейтинг: 0 / 0
11.07.2020, 15:28
    #39978434
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
mayton
Сколько инсертов в минуту?

600 в секунду и всё заваливается.
...
Рейтинг: 0 / 0
11.07.2020, 15:29
    #39978435
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Zzz79
andreykaT,у нас это реализовано через отельный сервис в микросервистой архитектуре

сервис 1- общается с клиентом + бизнес логика

сервис 2 - общается с сервис 1 и бд

естественно сообщения между сервис1 и сервис 2 происходят по кафке ,которую ты можешь настроить так чтобы твоя база не падала например в пиковое время

это всё равботает до тех пор пока тебе клиенту скажем не надо вернуть айдиху сущности которую назначает база.
...
Рейтинг: 0 / 0
11.07.2020, 16:48
    #39978449
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Zzz79
andreykaT
пропущено...

это всё равботает до тех пор пока тебе клиенту скажем не надо вернуть айдиху сущности которую назначает база.

а зачем клиенту в реал тайме id сущности? ты же сам сказал что сервис твой обрабатывает запрос - отдает клиенту и пишет в бд
а потом там когда то надо если выдаст запись
ну и в чем проблема реализовать две очереди? одна на запись ,другая на выдачу? можно вообще два сервиса поднять запись/выдача - будут работать раздельно

клиенту возможно нужен айди чтоб создать новую сущность которая имеет связь с ранее созданной и сохраненной.
...
Рейтинг: 0 / 0
11.07.2020, 16:56
    #39978452
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Zzz79
andreykaT

клиенту возможно нужен айди чтоб создать новую сущность которая имеет связь с ранее созданной и сохраненной.

ну так в чем проблема кидай в кэш и в бд пиши

в твоей схеме айди не будте получен пока его не отдаст бд. что в кэш кидать будем? сущность без айди по которому к ней можно было бы обратиться?
...
Рейтинг: 0 / 0
11.07.2020, 18:16
    #39978480
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
andreykaT
mayton
Сколько инсертов в минуту?

600 в секунду и всё заваливается.

А там commit нужен через каждую вставку?

600 в секунду это не очень много. На tpc тестах 2010 года например oracle показывал 250 000 в секунду.
...
Рейтинг: 0 / 0
11.07.2020, 20:19
    #39978492
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
ну я хз. у меня в реальном трафике ж еще и селекты. селекты плюс инсерты инсерты где то треть. как обычно но там и парой тысяч не пахнет. железка неплохая. а ты про 250к говоришь.
...
Рейтинг: 0 / 0
11.07.2020, 20:20
    #39978493
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Zzz79
andreykaT,тоода включай батчинг

600 запросов разбивай по 40 грубо говоря вместо 600 инсертов получишь 15

какой батчинг? я не с файлика данные копирую.
...
Рейтинг: 0 / 0
11.07.2020, 21:51
    #39978500
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Андрей. Ради Христа.

Если ты просто хочешь внедрять, мать ее кафку или Акку - внедряй!

Но не надо подводить под это основание бедный Postgres который ни в чем не виноват.

Я тебя прошу
...
Рейтинг: 0 / 0
11.07.2020, 23:03
    #39978513
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
mayton
andreykaT
пропущено...

600 в секунду и всё заваливается.

А там commit нужен через каждую вставку?

600 в секунду это не очень много. На tpc тестах 2010 года например oracle показывал 250 000 в секунду.

А подробности про 250000 в секунду можно?
...
Рейтинг: 0 / 0
11.07.2020, 23:33
    #39978517
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
SpringMan
mayton
пропущено...

А там commit нужен через каждую вставку?

600 в секунду это не очень много. На tpc тестах 2010 года например oracle показывал 250 000 в секунду.

А подробности про 250000 в секунду можно?


Кафка свободно держит, правда туда бабла немеряно было влито. Кластер стоял на сорока серверах.

Вот что пишет Амазон по этому поводу

авторThat's a three broker cluster with 1-2 CPU (depending on the cloud) and 4GB RAM per instance. On Amazon Web Services, this plan handled about 135,000 messages per second while the same plan on Google Cloud Platform and Azure handled around 70,000.

У меня есть даже статья в блоге как мы делали нагрузку
https://vyatkins.wordpress.com/2016/07/30/velociraptor/ к слову сказать статья довольно древняя.
...
Рейтинг: 0 / 0
11.07.2020, 23:34
    #39978518
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
SpringMan
mayton
пропущено...

А там commit нужен через каждую вставку?

600 в секунду это не очень много. На tpc тестах 2010 года например oracle показывал 250 000 в секунду.

А подробности про 250000 в секунду можно?

Раньше я находил инфу о бенчмарках вот на этом ресурсе http://www.tpc.org/

К сожалению он сейчас в отключке и судьба его мне не известна.

Собственно чорт с ним. Мы можем найти любой другой бенчмарк транзакций в секунду
для трехзвенок где 2-3 звенья будут Java-Postgres или Java-ЛюбаяDBMS просто для сравнения.
...
Рейтинг: 0 / 0
11.07.2020, 23:41
    #39978519
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Что там за железо чтоб тащить 250ксек?
Майтон я все понимаю за постгрес но его потенциал роста вверх в моем случае исчерпан. Вот и чешу репу чтоб и два горошка скушать и на стул сесть
...
Рейтинг: 0 / 0
11.07.2020, 23:43
    #39978520
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
С учетом, что автору нафиг не нужна транзакционность (он ее и так уже похерил), то ожидать пару десятков тысяч инсертов в секунду - нормально практически для любой БД. Разумеется blob'ы и записи >килобайта в расчет не берем )))
...
Рейтинг: 0 / 0
11.07.2020, 23:46
    #39978521
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Sergunka
SpringMan
пропущено...

А подробности про 250000 в секунду можно?


Кафка свободно держит, правда туда бабла немеряно было влито. Кластер стоял на сорока серверах.

Ну вот я могу поверить про кластер кафки или какой-нить касандры, которые держат 250000 в секунду. Вот с ораклом уже верится сложнее. В tpc бенчмарках видел цифры этих порядков. Но как я понимаю, там разговор про такое количество запросов в минуту и на серверах с 100+ ядер. Судя по 600 запросов в секунду, у andreykaT обычный сервак в районе SSD + 16 ядер
...
Рейтинг: 0 / 0
11.07.2020, 23:48
    #39978522
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
p.s. это, разумеется, если делать без всяких кафок, акк и прочих ненужных извращений
...
Рейтинг: 0 / 0
11.07.2020, 23:49
    #39978523
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
andreykaT, я говорю сейчас своё ИМХО основываясь на твоём первом эмоциональном посте
в котором нет практически ничего об архитектуре системы. Что за операции ты делаешь.
Какой % select/dml там работает? Было ли кеширование? Были ли оптимизации? Что говорят
статистики по базе? Какой самый горячий запрос?

Хочешь кафку - да бери кафку. Ты просто сделаешь другую систему с другими свойствами
где будут возможно другие требования по ACID. Более ослабленные наподобие CQRS.
Без транзакций вообще. Или основываясь на слабом предположении о eventual consistency.
...
Рейтинг: 0 / 0
11.07.2020, 23:54
    #39978524
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
mayton

где будут возможно другие требования по ACID

Где там ACID ? Если топик стартер собирался заказчику говорить, что все хорошо, а потом ассинхронно писать в БД.
ACID даже и не пахнет.
Я уж не говорю про "данные не особо критичные, но терять их не очнеь желательно все-равно"
...
Рейтинг: 0 / 0
12.07.2020, 00:00
    #39978526
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
mayton

Собственно чорт с ним. Мы можем найти любой другой бенчмарк транзакций в секунду
для трехзвенок где 2-3 звенья будут Java-Postgres или Java-ЛюбаяDBMS просто для сравнения.

Вот для postgres-а нашел
...
Рейтинг: 0 / 0
12.07.2020, 00:09
    #39978527
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
SpringMan
Sergunka
пропущено...


Кафка свободно держит, правда туда бабла немеряно было влито. Кластер стоял на сорока серверах.

Ну вот я могу поверить про кластер кафки или какой-нить касандры, которые держат 250000 в секунду. Вот с ораклом уже верится сложнее. В tpc бенчмарках видел цифры этих порядков. Но как я понимаю, там разговор про такое количество запросов в минуту и на серверах с 100+ ядер. Судя по 600 запросов в секунду, у andreykaT обычный сервак в районе SSD + 16 ядер


На самом деле кассандра столько не потянет так как сложно угадать пиковую нагрузку там может обычно в разы пик пойти. Т.е. архитектура обычно (покрайне мере у нас на платформе) буфер имплементирован на кафке и за кафкой идет кассандра.
...
Рейтинг: 0 / 0
12.07.2020, 00:16
    #39978530
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
SpringMan
mayton

Собственно чорт с ним. Мы можем найти любой другой бенчмарк транзакций в секунду
для трехзвенок где 2-3 звенья будут Java-Postgres или Java-ЛюбаяDBMS просто для сравнения.

Вот для postgres-а нашел

Примерно 450 000 tpm. На графике. Это транзакций в минуту.

Значит в секунду это будет 450 000 / 60 = 7500.

Но это достаточно эксклюзивная конфигурация. Там всё подстроено для симуляции этого теста.
На реальном приложении будет помедленнее. Особенно с неидеальной сетью.
...
Рейтинг: 0 / 0
12.07.2020, 10:30
    #39978565
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Leonid Kudryavtsev
С учетом, что автору нафиг не нужна транзакционность (он ее и так уже похерил), то ожидать пару десятков тысяч инсертов в секунду - нормально практически для любой БД. Разумеется blob'ы и записи >килобайта в расчет не берем )))

я попробую снять стату с базы. у меня в среднем летит 300 рест запросов что порождает 600-900 инсертов и какое то количество селектов (минимум 300). далее, не понял, при чем тут транзакционность? и откуда выводы что я ее похерил? атомарные операции (по логике атомарные) у меня выполняются внутри транзакций. это вроде как очевидная вещь о которой говорить и не следует.

по поводу конфиги. у меня бд не ссд (я хз что еще оказывается не ссд бывает но так девопсы сказали) 24 ядра хз сколько оперативки.
при озвучанных выше значениях начинает просто каждый последующий инсерт вставляться все дольше и дольше и так до 5-ти минут на простой инсерт!
...
Рейтинг: 0 / 0
12.07.2020, 10:33
    #39978567
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Leonid Kudryavtsev
mayton

где будут возможно другие требования по ACID

Где там ACID ? Если топик стартер собирался заказчику говорить, что все хорошо, а потом ассинхронно писать в БД.
ACID даже и не пахнет.
Я уж не говорю про "данные не особо критичные, но терять их не очнеь желательно все-равно"

то что в кавычках - поясняю. если пропадет 1% данных - то это не будет страшно. если пропадет 50% данных - то это плохо.
асинхронно писать - потому что я не вижу особо выхода. либо вертикально скейлить бд, либо думать всякую фигню с репликами. либо переписывать код. всё.
...
Рейтинг: 0 / 0
12.07.2020, 10:39
    #39978569
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
акка или кафка?
Sergunka
SpringMan
пропущено...

Ну вот я могу поверить про кластер кафки или какой-нить касандры, которые держат 250000 в секунду. Вот с ораклом уже верится сложнее. В tpc бенчмарках видел цифры этих порядков. Но как я понимаю, там разговор про такое количество запросов в минуту и на серверах с 100+ ядер. Судя по 600 запросов в секунду, у andreykaT обычный сервак в районе SSD + 16 ядер


На самом деле кассандра столько не потянет так как сложно угадать пиковую нагрузку там может обычно в разы пик пойти. Т.е. архитектура обычно (покрайне мере у нас на платформе) буфер имплементирован на кафке и за кафкой идет кассандра.

ну я по-сути хочу что-то такое же.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / акка или кафка? / 25 сообщений из 192, страница 1 из 8
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]