У нас есть 2 производителя и 1 потребитель, наша обработка данных от кинезиса отстает на 24 часа с использованием KCL. Как мы можем улучшить производительность.Обработка кинезитов отстает на 24 часа
ответ
Понятно, что вы делаете что-то неправильно в потребителе. 24-часовой лаг является убийцей для Kinesis, поскольку данные удаляются с серверов Amazon после этого интервала.
Чтобы улучшить свой опыт, вы должны делать что-то в своем конвейере.
Если задержка между 2 записями на стороне производителя составляет 7 секунд, а время на обработку 1 записи на потребительском приложении составляет более 7 секунд; вы не можете использовать Kinesis. Это очевидно. Но если ваша потребность в бизнесе требует такого подхода, вам, возможно, придется подумать о других стратегиях. Возможно, вам помогут обработка (вычисление интенсивных) задач на удаленном сервере, за исключением потребительского приложения. Может быть, посылка потребляемых записей на платформу обмена сообщениями для обработки в другом месте? Но это похоже на анти-шаблон (т. Е. «Почему вы используете Kinesis, если вам нужно использовать другую систему обмена сообщениями?»).
Сделайте меньше у потребителя. Если вам действительно нужно потратить столько времени на запись, попробуйте распараллелить процесс потребления. Я буду использовать предыдущий пример снова, если 1 запись занимает 15 секунд для обработки, и если вы получаете 3 запроса в этом интервале; использование или более 3 рабочих потоков на стороне потребителя. Если вы используете KCL, вы можете использовать больше осколков, чтобы улучшить распараллеливание. Насколько я знаю, каждый класс IEmitter (реализация) работает в своем потоке. И для каждого осколка вызывается новый IEmitter. Кроме того, проверьте свои хэш (разделы); что помогает однородному распределению ваших записей среди осколков.
Пакетная обработка на потребителе также является опцией. Например, предположим, что у вас есть записи, содержащие «id: 1, имя: John, фамилия: Doe», «2, Jason, Will», «3, Mary, Poppin» и т. Д. И скажем, вам нужно написать все это как infortmation как вставки в MySQL. Каждая вставка стоит дорого (каждый раз открывать соединение, писать, фиксировать, закрывать соединение.). Но если вы пишете эти записи во временном файле-заполнителе для массовой обработки, вы можете сделать 1 запрос вставки в MySQL с 3 наборами значений. Это избавит вас от сетевых накладных расходов.
Если вы объясните свой бизнес-пример, модель данных и т. Д., Возможно, мы сможем помочь больше.
Спасибо.
- 1. разделите NSTimeInterval на 24 часа
- 2. TimeSpan> 24 часа
- 3. 24 часа значений
- 4. Отложить функцию A на 24 часа
- 5. Как установить TimePickerDialog на 24 часа?
- 6. Как повернуть часы часов на 24 часа?
- 7. Запрос MySQL на 24 часа, 00.00 - 23.59
- 8. Xamarin iOS 24 часа timepicker
- 9. , которая меняется каждые 24 часа?
- 10. Узел статистики за 24 часа
- 11. данные обновляются каждые 24 часа
- 12. Расписание с интервалом 24 часа
- 13. Пройдите 24 часа в сутки?
- 14. JFreeChart - TimeSeries последние 24 часа
- 15. Вычитание строки времени 24 часа
- 16. MySql 24 часа интервалы выбора
- 17. Почтовый файл все 24 часа
- 18. Показать 24 часа в сутки
- 19. SQLITE следующие 24 часа данные
- 20. Почему мой журнал ошибок PHP отстает на 2 часа?
- 21. PHP MYSQL Выберите данные за последние 24 часа и предыдущие 24 часа
- 22. iOS время в 24 часа формат
- 23. работает задача php каждые 24 часа
- 24. 24 часа/12 часов часы проблема
- 25. график MySQL таблица пуста каждый 24 часа
- 26. Как считать, что прошло 24 часа
- 27. Mysqli :: real_connect() сломанная труба каждые 24 часа
- 28. Состояние читателя потока кинезитов
- 29. Добавить случайное число каждые 24 часа
- 30. Отклонение приращения счетчика каждые 24 часа
Возможно, вы читаете из TRIM_HORIZON вместо LATEST (http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html#API_GetShardIterator_RequestSyntax) – Guy