Системы рекомендаций по событиям
Бизнес-дизайн
- Разработать системы рекомендаций по событиям на основе персонализации для поиска событий.
Общая инструкция
- Разработайте веб-службу с помощью
RESTful APIs
на Java для обработки HTTP-запросов и ответов. - Фронтенд: интерактивная веб-страница с технологией
AJAX
, реализованная с помощью HTML
, CSS
и JavaScript
. Веб-сайт рекомендаций мероприятий реализует три основные функции:- Поиск событий вокруг пользователей
- Любимые события, которые им нравятся, а также удаление событий, которые им больше не нравятся.
- Получайте рекомендации о мероприятиях поблизости на основе их любимой истории и расстояния до места, где будут проводиться мероприятия.
- Серверная часть: используйте
Java
для обработки логического запроса, некоторые поддержки приведены ниже:- Построен как с реляционной базой данных, так и с базой данных NoSQL (
MySQL
и MongoDB
) для поддержки хранения данных пользователей и элементов, поиск которых осуществляется с помощью API TicketMaster. - Разработайте алгоритм рекомендаций на основе контента для рекомендаций по событиям
- Развертывание сервера веб-сайта на
Amazon EC2
: система рекомендаций по событиям - Анализируйте трафик веб-сайта как онлайн, так и оффлайн с помощью ELK (
ElasticSearch
, Logstash
и Kibana
) и MapReduce
в MongoDB.
Проектирование инфраструктуры
- 3-уровневая архитектура
- Уровень представления: HTML, CSS, JavaScript.
- Уровень данных: MySQL, MongoDB.
- Логический уровень: Java
- Локальная и удаленная среда разработки
Локальная среда разработки
Удаленная среда разработки
API-дизайн
- Логический уровень (Java-сервлет для RPC)
- Поиск
- поиск предметов
- API билетного мастера
- анализировать и очищать данные, saveItems
- обратный ответ
- История
- получить, установить, удалить избранные элементы
- база данных запросов
- обратный ответ
- Рекомендация
- рекомендовать предметы
- получить любимую историю
- поиск похожих событий, сортировка
- обратный ответ
- Авторизоваться
- GET: проверьте, зарегистрирован ли сеанс
- POST: проверьте имя пользователя и пароль, установите время сеанса и пометьте как вошедшего в систему.
- запросить базу данных для проверки
- обратный ответ
- Выход из системы
- GET: недействительный сеанс, если он существует, и перенаправление на
index.html
- POST: то же, что GET
- обратный ответ
- Зарегистрироваться
- Установите нового пользователя в таблицу/коллекцию пользователей в базе данных.
- обратный ответ
Проектирование API на логическом уровне
- Официальный документ TicketMasterAPI — Discovery API
- Разработка алгоритмов рекомендаций
- Рекомендация на основе контента : найдите категории в профиле товара из избранного пользователя и порекомендуйте похожие товары в тех же категориях.
- Представление рекомендуемых элементов с ранжированием на основе расстояния (геолокации пользователей)
Процесс запроса рекомендации
Проектирование базы данных
- MySQL
- пользователи - хранить информацию о пользователях.
- items - хранить информацию о предмете.
- Категория - отношение товара к категории магазина.
- история — сохранение избранной истории пользователя
Проектирование базы данных MySQL
- МонгоБД
- пользователи — храните информацию о пользователях и историю избранного. = (пользователи + история)
- items — храните информацию об элементе и взаимосвязь элемента и категории. = (предметы + категория)
- журналы – хранить информацию журнала
Детали реализации
- Шаблон проектирования
- Шаблон строителя :
Item.java
- При преобразовании событий из TicketMasterAPI в элементы Java используйте шаблон компоновщика, чтобы свободно добавлять поля.
- Фабричный шаблон :
ExternalAPIFactory.java
, DBConnectionFactory.java
-
ExternalAPIFactory.java
: поддержка нескольких функций, таких как рекомендации мероприятий, ресторанов, новостей, вакансий… просто свяжитесь с другим общедоступным API, например TicketMasterAPI. Улучшите возможности расширения. -
DBConnectionFactory.java
: поддержка нескольких баз данных, таких как MySQL и MongoDB. Улучшите возможности расширения.
- Шаблон Singleton :
MySQLConnection.java
, MongoDBConnection.java
- Создавайте только определенное количество экземпляров базы данных, и класс может управлять самим экземпляром и предоставлять глобальный доступ к внешнему классу.
Анализ поведения пользователей
- Онлайн ( ElasticSearch , Logstash , Kibana )
- Используйте Logstash для получения журнала (в форме, похожей на NoSQL), затем сохраните данные в ElasticSearch и, наконец, используйте Kibana для анализа данных в ElasticSearch, получая некоторые таблицы и графики, такие как использование API, статус запроса, геолокация посетителей и т. д.
Удаленная среда разработки
- Оффлайн ( MapReduce в MongoDB )
- Скопируйте и вставьте некоторые журналы с сервера Tomcat.
- Очистите данные журнала и сохраните их в MongoDB.
- Выполните
mapreduce()
в MongoDB - Получите список счетчиков времени в порядке убывания количества, а затем найдите пиковое время трафика веб-сайта.