Можно ли создать что-то вроде очереди для записи данных в базу данных? [Pendent] - PullRequest
0 голосов
/ 03 апреля 2020

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

Задача: ГОЛОСОВАНИЕ ПРОБЛЕМА

enter image description here

В приведенном выше примере демонстрируется инфраструктура, состоящая из сервера базы данных, 2 веб-хостов и 1 LoadBalancer, который поддерживает общенациональные выборы приложение, в котором пользователи могут голосовать за кандидатов через inte rnet.

Факты:

  1. Есть 5 кандидатов для голосования и в общей сложности 100000 голосующих пользователей.
  2. База данных может хранить только 1 запись одновременно и не поддерживает транзакции. Если это значение превышено, база данных немедленно отвечает кодом ошибки = 68282.
  3. Когда пользователь голосует, он должен получить немедленный ответ о том, что голос принят.
  4. Может быть 100 + пользователи голосуют одновременно.

Проблема:

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

Мои решения:

  1. Я думал (не уверен, если возможно), если был Можно создать что-то вроде FIFO или очереди для базы данных, чтобы получать запросы, но обрабатывать ТОЛЬКО 1 за раз. Проблема здесь в том, что я не знаю, возможно ли такое.
  2. Создание эксклюзивных блокировок (X) для блокировки операций записи, и если какой-либо запрос приходит, и блокировка уже с другим запросом, он будет ждать, пока ресурс доступен для него.
  3. Использовать сериализацию с последовательным смещением, другими словами, обрабатывать запросы по одному.

Но, как я уже сказал, я не уверен, что мой ответ предложения правильные ... есть ли лучшие ответы на это? Я совершенно не прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...