Я получаю события от устройств Интернета вещей. Эти события / соединения сбалансированы по нагрузке для нескольких экземпляров службы, обрабатывающей их.
Однако я хочу гарантировать, что события, исходящие от одного и того же устройства, обрабатываются последовательно (во входящем порядке). Они не обязательно должны обрабатываться одним и тем же экземпляром службы, если предыдущее событие устройства завершило обработку до того, как начнется обработка следующего события от этого устройства.
Каковы хорошие архитектуры или решения, чтобы гарантировать последовательная обработка в системе распределения на основе общего тега или полосы (например, серийного номера устройства)?
Некоторые предыдущие размышления об этом:
- Я знаю, как это сделать это локально в одном экземпляре с полосой службы исполнителя https://www.javaspecialists.eu/archive/Issue206.html
- Я знаю о Sticky Sessions , которые балансируют запросы на основе сеанса. Но мои устройства Интернета вещей используют необработанный TCP и не имеют сеансов. Можно ли адаптировать HAProxy для анализа и извлечения токена из необработанного TCP?
Есть ли более общая распределенная служба или архитектура с чередованием?