Вот моя топология потоковой аналитики
EventHubSource => Job A (HoppingWindow every second) => EventHubA
EventHubSource => Job B (HoppingWindow every second) => EventHubB
- У каждой работы есть своя группа потребителей в EventHubSource.
- Каждая работа смущающе параллельна и потребляет только 14% ресурсов SU.
При тестировании JobA и JobC разница между windowEnd и исходным временем события составляет всего несколько миллисекунд (~ 300), что нормально(задержка от моего производителя + eventhub + время обработки аналитики потока).
Но когда я объединяю оба потока в новом задании C, как это:
EventHubA
\
=> Job C (Join Datediff = 0 and timestamp by windowEnd)
/
EventHubB
Это производит некоторый вывод, нопроблемы возникают здесь:
Реальные события разнесены на несколько минут, даже если они были одновременно переданы заданиями A и B (то же самое окноEnd)
Когда я проверяю поступающие данныевне EventHub A и B разница между windowEnd и временной меткой реального события составляет от 39 до 44 минут для всех из них.Но при тестировании, как упомянуто выше, это было только 300 мс.
Хуже всего здесь то, что когда я запускаю его в prod, он генерирует только несколько десятков событий и останавливается, даже если счетчик ввода все ещетысячами.
Уже несколько недель я работаю над этим, и каждый раз, когда я сталкиваюсь с каким-то загадочным поведением из ASA, моя топология довольно проста, и я использую только простые скачкообразные окна перехода 1 с,это не должно занять несколько недель ошибок настройки и проб, даже не понимая, что происходит.
Для людей, которые использовали аналитику ASA и AWS Kinesis, вам показалось, что с аналитикой Kinesis проще работать?Что меня раздражает в ASA, так это непредсказуемое поведение и проблемы без сообщений об ошибках (я активировал аналитику журналов, и там не было ошибок ...)