Пакетная передача данных из Firebase в ElasticSearch - PullRequest
0 голосов
/ 14 апреля 2019

Я создаю приложение для мониторинга, которое использует Firebase в качестве решения для хранения / синхронизации данных в сочетании с ElasticSearch / Kibana для визуализации данных.

Мое приложение (iOS) используется для мониторинга и производит одну запись данных каждые 5 секунд. У меня есть единственный путь в базе данных в реальном времени Firebase, где я сохраняю свои данные, которые отслеживаются функцией Cloud (onCreate). Эта функция просто выполняет POST to ES при получении снимка.

Реалистичный сценарий для приложения должен быть развернут в автономном режиме - до 24 часов. Я провел небольшой стресс-тест, используя режим полета около 10 минут. После включения интернета все данные были хорошо синхронизированы с Firebase (395 записей), но я «потерял» 2 записи в ES. Журналы функций показали 2 ошибки, когда ES возвратил 502, я думаю, потому что он был засыпан большим количеством вызовов HTTPS в коротком окне.

Теперь у ES есть API для массовой записи, который я хотел бы использовать для управления нагрузкой, но я не уверен, как этого добиться с помощью облачных функций без состояния. Если бы я кодировал сервис, который подписывался на события onCreate, используя Rx, мое решение состояло бы в том, чтобы использовать что-то вроде оператора буфера - буферизировать события, пока вы не получите 100 записей или 5 секунд, а затем выполнить массовую запись. Но я хотел бы использовать облачные функции, потому что тогда мне не нужно управлять перезапусками служб и повторной подпиской.

У меня вопрос: какой будет хороший и надежный способ решения этой проблемы, используя либо базу данных в реальном времени, либо firestore + облачные функции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...