Использование функции шага для синхронизации первичного источника данных с вторичными источниками данных и запуска действий на основе обновлений данных - PullRequest
0 голосов
/ 02 января 2019

У меня есть приложение, которое действует как уровень данных и отвечает за выполнение всех операций CRUD в базе данных. Из-за проблемы доступности мы поддерживаем кэш Redis поверх него, который в конечном итоге будет выступать в качестве вторичного источника данных. Попадание в первичные источники данных часто приводит к проблемам с удушением и задержкой.

Некоторые действия также запускаются на основе обновлений, опубликованных в базе данных.

Я пытаюсь абстрагироваться от обновлений вторичного источника данных и действий, запускаемых на основе этих обновлений со уровня доступа к данным до безсерверная архитектура .

Подходит ли пошаговая функция для упомянутого варианта использования? Или мне стоит подумать о другой архитектуре?

Текущая архитектура

1 Ответ

0 голосов
/ 05 января 2019

Исходя из предложенной вами архитектуры, которая выглядит следующим образом, я не думаю, что пошаговые функции необходимы.

Proposed Architecture

Я бы использовал SNS для раздачи обновлений в несколько очередей SQS:

  • Очередь # 1 запускает лямбда-функцию, которая обновляет ваши данные в Redis
  • Очередь # 2 используется для клиентских обновлений (что бы это ни значило в вашем случае)

Я не вижу причины использовать здесь пошаговые функции, поскольку SQS гарантирует, что каждое сообщение обрабатывается как минимум один раз.

          +----------+
     +---->Primary DB|
     |    +----------+      +----------------+      +------------+    +-----+
     +                      |                |      |            |    |     |
Change                +----->  SQS-Queue #1  +------>   Lambda   +---->Redis|
     +                |     |                |      |            |    |     |
     |                |     +----------------+      +------------+    +-----+
     |    +-----------+
     |    |           |
     +---->   SNS     |
          |           |
          +-----------+
                      |     +----------------+
                      |     |                |
                      +-----> SQS-Queue #2   | <------ Clients
                            |                |
                            +----------------+

Я думаю, что SNS может быть более подходящим и для обновления ваших клиентов, так как SQS основан на запросах.

...