Мы используем Spark Streaming, подключенный к потоку AWS Kinesis, чтобы агрегировать (в минуту) показатели, которые мы получаем, и записывать агрегаты в infuxdb, чтобы сделать их доступными для панель управления в реальном времени.Как работают контрольные точки Kinesis искровой потоковой приемник
Все работает нормально, но теперь мы рассматриваем вопрос о том, как мы должны управлять приостановками развертывания и возможными сбоями системы.
Документы говорят, что библиотека интеграции Kinesis уже подготовлена к сбоям, контрольно-пропускным пунктам и т. Д., Но я хотел бы уточнить, как там работает контрольная точка.
Ресивер Kinesis создает входной сигнал DStream с использованием клиентской библиотеки Kinesis (KCL), предоставляемой Amazon в соответствии с лицензией на программное обеспечение Amazon Software License (ASL). KCL построен поверх Apache 2.0, лицензированного AWS Java SDK, и обеспечивает балансировку нагрузки, отказоустойчивость, контрольную точку через концепции рабочих, контрольно-пропускных пунктов и договоров об аренде.
Мы можем определить интервал контрольной точки для кинези, но насколько я понимаю, это просто используется для обозначения того, до какой точки потока мы потребляем метрики. Итак, нам все еще нужно использовать функцию контрольной точки от искрового потока, верно?
Поскольку мы собираем данные в минуту, наш пакетный интервал составляет 60 секунд, но за эти 60 секунд мы непрерывно получаем данные из потока.
Вот мои вопросы:
- Когда я исполняю JavaStreamingContext.stop (...) (для того, чтобы развернуть новую версию работы), приемник будет остановлен и контрольно-пропускной пункт будет обновляться в конце?
- Когда произойдет контрольная точка с искровым потоком? После каждого выполнения задания? До?
- Предполагая, что у нас есть оба контрольно-пропускных пункта, как мы можем гарантировать согласованность в случае отказа? Кажется, что каждый раз, когда происходит потоковая контрольная точка, необходимо одновременно проверять контрольную точку на кинезис, иначе мы снова можем снова прочитать одни и те же данные. Как мы можем справиться с этим?
- Если базовая услуга (в данном случае притока) не работает, что мне делать? Реализовать механизм повтора? Если это так, ему нужно прекратить повторную попытку через некоторое время, иначе у нас будет нехватка памяти.
Заранее благодарен!