Микро-сервисы и AWS-IoT - PullRequest
       37

Микро-сервисы и AWS-IoT

0 голосов
/ 02 ноября 2019

enter image description here

Я планирую использовать 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 сообщений в час).

Итак, хотелось бы посмотреть, есть ли лучший способ сделать это.

1 Ответ

0 голосов
/ 02 ноября 2019

Я бы порекомендовал потратить время на ознакомление с всеми доступными действиями в AWS IoT. Вы упомянули об использовании Lambda в качестве посреднической услуги, но правильно указали, что там могут быть возможные проблемы. Двумя службами, которые лучше подойдут для вашего варианта использования, являются Kinesis и SQS. Вы можете настроить темы IoT для отправки сообщений либо в поток Kinesis, либо в очередь SQS, а затем ваши микросервисы могут подписаться на них, чтобы они могли обрабатывать сообщения индивидуально, а не каждый экземпляр микросервиса, получая копию каждого сообщения.

...