Skip to content
bloodmike edited this page May 8, 2015 · 4 revisions

Система заказов

Задача

Необходимо написать систему для работы с заказами.

Заказчик публикует заказ определенной стоимости.

Исполнитель видит ленту заказов, доступных для исполнения.

По клику "выполнить" пользователю начисляется сумма за вычетом комиссии системы.

Выполненный заказ исчезает из ленты.

Также должны быть доступны списки созданных заказов и выполненных заказов.

Технические ограничения

  • php без ООП
  • mysql
  • javascript без jquery

Уточнения

Заказчики = Исполнители = Пользователи.

Для хранения данных авторизации используется сессия. Считаем, что любая сессия доступна с любого веб-сервера. (Если не так - переписываем на куки).

Регистрацию в первой версии делать необязательно.

Решардинг делать не требуется.

Масштабирование

Считаем, что с любого веб-сервера есть доступ к любому серверу с базой.

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

Теоретически, все серверы с базой могут выполнять одинаковые функции. Но рекомендуется разделить серверы по ролям:

  • с информацией о шардах (users_shards, users_logins_shards, orders_digest_shards),
  • с дайджестом заказов (orders_digest),
  • с данными пользователей,
  • с данными заказов.

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