Я планирую использовать AWS IoT для своих устройств в полевых условиях для подключения к моим микро-службам в облаке. Идея в том, что устройства будут публиковаться в темах, на которые будут подписываться микросервисы. А микросервисы будут публиковать темы, на которые подписано устройство.
Так, например, есть 2 устройства d1 и d2. И 2 микросервиса ms1 и ms2. d1 подпишется на устройства / тему d1 d2 подпишется на тему устройства / d2, а ms1 подпишется на тему services / ms1. ms2 подпишется на тему services / ms2
Когда d1 хочет отправить информацию в ms1, тогдаd1 будет публиковать в теме services / ms1 и отправлять информацию в ms2, d1 будет публиковать в теме services / ms2 и т. д. Точно так же, когда ms1 хочет отправлять информацию в d1, ms1 будет публиковать в теме устройств / d1 и т. д. Я прикрепилизображение того, как я это представляю.
Меня беспокоит то, что микросервис может иметь несколько запущенных экземпляров одновременно. Таким образом, все экземпляры ms1 будут подписаны на раздел services / ms1. И когда устройство публикует сообщение по этой теме, как мы можем обеспечить обработку только одного экземпляра, а не нескольких экземпляров? Я понимаю, что один из способов справиться с этим - использовать Lambda, где сообщение передается в Lambda, и Lambda может вызывать REST API на микросервисе. Однако у Lambda могут быть ограничения на масштаб, который я хотел бы достичь (100 000 устройств с 1000 сообщений в час).
Итак, хотелось бы посмотреть, есть ли лучший способ сделать это.