supervaleha
@supervaleha
Web-development

Какие оптимальные технологии и методы для разработки аукциона?

Всем привет.

Коллеги, стоит задача написания достаточно громоздкого сайта-аукциона. Основная фишка - конечно же, мега-быстрое обновление данных real-time на странице и в админке и т.д. Т.е. я сделал ставку и максимально быстро данные обновились у всех посетителей этой страницы.

Backend пишется на Yii2, БД - MySQL - тут без вариантов, ибо система комплексная - состоит не из одного сайта.

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

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

UPD:
Doc, спасибо за поправку. На самом деле, уровень нагрузки пока не ясен - но он не будет слишком велик, т.к. аукцион проводится среди ограниченного круга посетителей. Структура БД достаточно тяжелая и громоздкая.

Спасибо!
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
sayber
@sayber
Да, я программирую на PHP и еще асинхронно!
Вам потребуется бд с горячими данными, с материализованными и т.д.
Вы не описали самого главного, объем данных, кол-во связей, кол-во запросов в минуту и т.п.
Все остальное, это просто выбор технологий, который может быть любым.
Такие проекты обычно зависят только от БД.

upd:
Что в вашем понимании громоздкая?
Суть в том, если в какой либо таблице при больших связях лежит больше 6кк данных, то таблица будет тормозить.
Пока идет выборка из большой таблицы и индексы тупят, будут блокироваться другие сущности.
Соответственно это не даст реал-тайм работы.
Для этого надо думать над архитектурой БД. Выше я привел примеры.
Шардирование по определенному ключу можно применять.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
Можно и на php. Храните данные в хорошо доступном хранилище - redis/memcached и вынимайте их в обход php - например модули nginx для работы с memcached/redis - это позволит иметь горячие и доступные данные независимо от тормозов бакенда.
Важно понимать, что эти данные - кеш и этот кеш должен писаться в момент изменения/сохранения данных, а не в момент запроса; т.е. кеш должен быть всегда горячим и генерируемым при сохранении данных, не иметь expires и изменятся только событийно.
При такой архитектуре ваши данные будут всегда доступны из быстрого хранилища напрямую из nginx (в нем можно использовать например ssi для получения этих данных в контент страниц).
Оповещение js-фронтенда в realtime можно реализовать на websocket-ах, примеров массы, но я бы советовал не гонять очень много данных через него - только события о факте изменения и минимальные данные (всё что нужно можно забрать аяксом тогда когда нужно).
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
Не надо плодить реалтайм сервера на PHP. Используйте что-то другое более подходящее, например Erlang
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы