Трудно дать правильный ответ, поскольку производительность зависит от многих факторов, особенно в сложных установках, в которых участвуют несколько компонентов, взаимодействующих между собой.Тем не менее, я постараюсь поделиться некоторыми мыслями и соображениями, основываясь на информации, которую вы предоставляете, и на своем предыдущем опыте.
Что касается Ориона, я бы рекомендовал вам ознакомиться с документацией понастройка производительности .Следуя указаниям на этой странице, вы можете увеличить производительность компонента.
Однако, сказав это, я не думаю, что Orion является причиной проблемы в вашем случае, основываясь на:
- Даже без оптимизации производительности Orion обычно достигает пропускной способностив порядке ~ 1000 тпс.Он должен справляться с обновлениями со скоростью 350 tps без проблем.
- Orion не показывает журналы ошибок.Насколько я понимаю, ваши журналы ошибок создаются компонентом IOTAgent.
Таким образом, фокусируясь на IOTA, возможно, было бы лучше использовать IOTA-UL вместоIOTA-JSON.Кодировка UL более эффективна, чем кодировка JSON, поэтому вы можете повысить эффективность.Кроме того, IOTA-UL позволяет отправлять мультимеры (используя #
в качестве разделителя), которые я не знаю, подходит ли это для вашего случая, но может рассматриваться как ограниченная форма пакетного обновления (см. Документация UL для получения более подробной информации).
Если это не сработает, можно отправить данные непосредственно в Orion, используя его NGSIv2 API .Это могло бы иметь несколько преимуществ:
- Упрощенная настройка (на две части меньше: MQTT-брокер и IOTAgent)
- При одинаковых условиях ресурсов собственная производительность Orion обычно выше, чем производительность IOTAgents (как яупоминание до ~ 1000 т / с или даже выше после применения оптимизации производительности)
- API NGSIv2 обеспечивает операцию пакетного обновления (см.
POST /v2/op/update
в приведенном выше документе спецификации NGSIv2)