Size: a a a

Чат конференции HighLoad++

2020 September 02

SB

Sergey Bezrukov in Чат конференции HighLoad++
Вряд ли кто возьмётся сейчас предсказать какие варианты физического перемещения между странами будут возможны в начале ноября.
источник

OB

Oleg Bunin in Чат конференции HighLoad++
Vladislav Shpilevoy
Здравствуйте. Как обстоят дела с докладчиками не из России? Из Германии, например. Будет ли возможность сделать доклад онлайн, если авиасообщение не будет возобновлено? Или есть какие-то способы проехать не самолетом, или транзитом через третью страну? Организаторы уже возможно исследовали этот вопрос?
Да, онлайн-трансляцию мы сможем сделать.
Докладчики из Европы и даже США есть.

По конкретному способу приезда к нам будем смотреть ближе к делу, слишком быстро всё меняется, сейчас просто объективно рано.
источник

VS

Vladislav Shpilevoy in Чат конференции HighLoad++
Отлично, спасибо за информацию
источник

S

Sergei in Чат конференции HighLoad++
Подскажи плиз по такой теме: Делаем проект, где забираются данные из кафки, дополняются существующими данными и отправляются дальше. Автор проекта реализовал базовый концепт так, что данные из кафки обрабатываются один за одним, все эвенты ждут пока в один эвент не добавятся все нужные данные через http API-вызовы, если вызов фейлится то в бесконечном цикле вызывается заново - блокирующий режим. По мне это какая-то дебильная концепция:
1. блокирующий режим
2. апи-вызовы по текстовому протоколу.
Нужно обрабатывать несколько тысяч эвентов в секунду. Я озвучил мнение, что такая система ущербная и не будет работать. Можете подсказать насколько прав или нет, а то экспертизы по хайлоаду мало, но и херню делать не хочется :)
источник

SR

SDKiller Ru in Чат конференции HighLoad++
> дебильная концепция

в точку

> в бесконечном цикле вызывается заново

как минимум нужен разумный лимит (3-5 попыток) и потом переходить к следующему
источник

SR

SDKiller Ru in Чат конференции HighLoad++
в любом случае в однопоточном режиме вы объективно упретесь в какой-то потолок
источник

S

Sergei in Чат конференции HighLoad++
> как минимум нужен разумный лимит (3-5 попыток) и потом переходить к следующему
источник

S

Sergei in Чат конференции HighLoad++
ну там вроде че-то подразумевается, как=ая-то стратегия)
источник

S

Sergei in Чат конференции HighLoad++
у меня возникли вопросы, существуют ли случаи, что в высоконагруженных системах делают блокирующий режим для чего-нибудь. И насколько приемлемым является использование http api вызовов. Я посмотрел что многие системы хранения данных используют свой протокол поверх tcp
источник

SR

SDKiller Ru in Чат конференции HighLoad++
блокирующий режим может быть нужен например, если события должны быть отправлены в определенной последовательности
источник

SR

SDKiller Ru in Чат конференции HighLoad++
есть события с кодами 1, 2, 3
2 и 3 не должны отправляться, если не был отправлен 1
источник

S

Sergei in Чат конференции HighLoad++
спасибо
источник

S

Sergei in Чат конференции HighLoad++
А как насчет апи вызовов и хттп? избегать если есть возмонжность?
источник

SR

SDKiller Ru in Чат конференции HighLoad++
но тут нужна логика, чтобы фейлить цепочку событий
источник

S

Sergei in Чат конференции HighLoad++
это вы про последовательность?
источник

VP

Vladimir P in Чат конференции HighLoad++
saga..почитайте, может вам подойдет
источник

S

Sergei in Чат конференции HighLoad++
Спасибо
источник
2020 September 03

PD

Phil Delgyado in Чат конференции HighLoad++
Можно задачу описать поподробнее?
Есть последовательность событий, нужно их брать из очереди в строгом порядке, обогащать данными из разных внешних сервисах и передать в другую очередь?
При этом никакая параллельность обработки недопустима, пока не обработано событие, брать следующие нельзя?
источник

S

Sergei in Чат конференции HighLoad++
Phil Delgyado
Можно задачу описать поподробнее?
Есть последовательность событий, нужно их брать из очереди в строгом порядке, обогащать данными из разных внешних сервисах и передать в другую очередь?
При этом никакая параллельность обработки недопустима, пока не обработано событие, брать следующие нельзя?
Спасибо, что проявили интерес. Задача такая. В микросервисной архитектуре происходят пользовательские события, н-р логин, регистрация, изменение данных. Эти события нужно доставлять в систему аналитики. Микросервисы ничего не знают про эту систему, они отправляют данные о событиях в кафку. Соответственно события независимые, т.е. понятно, что обычно происходит регистрация, а уже потом изменение данных н-р, но сейчас последовательность не важна. Чтобы система аналитики могла работать с эвентом, его нужно обогатить пользовательской информацией, которую достают через http API-call.
Текущая реализация такая что, есть один большой сервис, который:
- забирает событие из кафки [Обработка других событий блокируется, т.к. нужно в кафку закоммитить что эвент прочитан, это происходит только когда успешно завершится его обработка]
- лезет в redis-кэш за пользовательскими данными [Если данных не хватает, делается API-call, и результат складывается в redis. Вопрос устаревания кэша решается тем, что если пользовательские данные изменились, должен быть обработан кафка-эвент, откуда берутся новые значения и обновляется кэш. Если API-call падает, то происходит его перезапуск. Пока неясно, сколько раз автор планирует его перезапускать. Но в качестве примера подобного успешного решения он приводит другой свой проект с функцией retryForever, где delay между ретраями начинается с 15 сек и в максимуме достигает 2 мин]
- насыщает событие,
- отправляет в аналитику.
источник

AE

Alexey Er in Чат конференции HighLoad++
Sergei
А как насчет апи вызовов и хттп? избегать если есть возмонжность?
Http между сервисами используется вовсю. Помимо всяких самодельных JSONRPC/SOAP/GraphQL он применяется и для работы с "общеупотребительными" движками: RabbitMQ, Clickhouse и т.п. Про Кафку не помню, но не исключено, что и там.

Другое дело, что это часто HTTP/2 или 3, уже допиленные для быстрой многопоточной работы.
источник