OpenWhisk и двоичные данные из Google Flatbuffers
У нас есть данные, создаваемые имитируемым устройством, которое подключается к сети с помощью NanoMSG с полезной нагрузкой Google FlatBuffers (двоичный файл).
Мы бы хотели запускать шаблоны этих данных с помощью OpenWhisk и отвечать закодированными ответами Flatbuffer.
Предположим, что задержка и пропускная способность не являются большой проблемой здесь.
Какой подход мы можем использовать:
Напишите ретранслятор, который преобразует Flatbuffer в JSON (для этого у FB есть утилита), а затем поместите данные на шину AMQP, которую слушает OpenWhisk? (у нас есть знакомые с AMQP, но не Kafka
Попробуйте что-то сделать с Kafka, который, кажется, (возможно, это только версия IBM) напрямую обрабатывает двоичные Flabuffers (вероятно, все еще требуется переход от NanoMSG к Kafka. Например,
Как вызвать действие OpenWhisk из платформы IoT в Bluemix
Не уверен, что нам все еще не нужен десериализатор и сериализатор JavaScript Flatbuffers для преобразования двоичных данных на основе64 в JavaScript в JSON
Изучите Kakfa, а затем преобразуйте полезную нагрузку NanoMsg (Flatbuffers в JSON).
Что-то другое?
Кто-нибудь имеет непосредственный опыт в этом?
Обновить
Спасибо, Джеймс, это точечные ссылки. Но это поднимает некоторые второстепенные вопросы:
- Если данные находятся в схеме Google FlatBuffers, то, по-видимому, нет никакого преимущества в использовании двоичного преобразования Kafka, так как mux/demux из base64 по-прежнему необходимо выполнять на уровне javascript.
- Немного тревожно, что Kafka (которая известна своей низкой задержкой) пакетирует события. Это влияет на задержку, когда у человека есть Iot (данные датчика), на которые нужно реагировать в замкнутом контуре на исполнительные механизмы (датчик-> управление-> исполнительные механизмы), - это обычная модель робототехники, и это в значительной степени близко к тому, что мы делает. На данный момент мы не выдвигаем проблему задержки, но я вижу новые случаи, когда нам понадобится низкая задержка. Что думают в сообществе провайдеров Kafka Whisk по этому поводу?
- Я должен что-то упустить, но провайдер AMQP говорит, что использует RHEA https://github.com/amqp/rhea. Это, кажется, обеспечивает все, что нужно для написания простого триггера / правил для работы с данными потока датчика. Зачем использовать OpenWhisk?
1 ответ
Любой вариант имеет смысл. Действия OpenWhisk получают и возвращают сообщения JSON. Двоичные данные, передаваемые в эти функции, должны быть в кодировке Base64.
Если вы используете ленту AMQP, вы можете вручную преобразовать двоичные данные в JSON.
Поставщик фидов Kafka поддерживает автоматическое кодирование двоичных входных значений (используя параметры isBinary*).
Kafka направляет пакеты сообщений в действия OpenWhisk. Это отличается от очереди сообщений, которая будет выдвигать одно сообщение за раз. Этот провайдер каналов встроен в OpenWhisk.
Здесь есть внешний провайдер сообщества для AMQP. Для этого вам нужно установить и запустить его вручную.