Как обрабатывать журналы аудита пользователя (или другие частые действия на стороне клиента) в веб-приложении? - PullRequest
0 голосов
/ 02 ноября 2018

Архитектурный вопрос здесь. У меня есть веб-приложение (HTML5 / Javascript / AngularJS), которое регистрирует активность пользователя в серверной базе данных через веб-API. Эта функция довольно часто запускается при таких событиях, как «Меню» и «Щелчки кнопок» во всем приложении. Выполнение вызова API для каждого такого события кажется обширным, и мне было интересно, каковы лучшие практики для такого рода обновлений, или Как это реализуется с помощью службы, такой как Google Analytics, в их клиентских сценариях?

1 Ответ

0 голосов
/ 06 ноября 2018

Я смотрел на что-то очень похожее, где я работаю. Во-первых, вы действительно хотите, чтобы данные, отправляемые в ваш API-интерфейс, были как можно меньшего размера, чтобы отправка всех этих событий не использовалась с большой пропускной способностью. Следующим, что мы поняли, было использование какой-либо очереди, RabbitMQ, Azure Service Bus, MSMQ или Amazon SQS или чего-то подобного.

Конечная точка API должна просто взять данные и поместить их в очередь. Затем найдите другую программу или службу, которая затем читает сообщения в очереди в своем собственном темпе и выполняет любые вставки в базы данных.

В пиковые периоды времени вы не должны видеть никакого снижения производительности от API, единственное, что произойдет, когда ваша система будет взломана, - это то, что данные могут занять от нескольких секунд до нескольких минут для вставки в DB.

По сути, вы выполняете пакетирование в очереди и вам не нужно беспокоиться о пакетировании на стороне клиента

...