Sistemas de recomendación de eventos
Diseño de Negocios
- Diseñar un sistema de recomendación de eventos basado en la personalización para la búsqueda de eventos.
Instrucción General
- Diseñe un servicio web con
RESTful APIs
en Java para manejar solicitudes y respuestas HTTP - Frontend: una página web interactiva con tecnología
AJAX
implementada con HTML
, CSS
y JavaScript
. El sitio web de recomendación de eventos realiza tres funciones principales:- Buscar eventos alrededor de los usuarios
- Favorecer los eventos que les gustan y también eliminar los eventos que ya no les gustan.
- Obtenga recomendaciones de eventos según su historia favorita y la distancia al lugar donde se llevarán a cabo los eventos.
- Backend: utilice
Java
para procesar solicitudes lógicas y algunos soportes son los siguientes:- Construido con una base de datos relacional y una base de datos NoSQL (
MySQL
y MongoDB
) para admitir el almacenamiento de datos de los usuarios y elementos buscados en la API de TicketMaster. - Diseñar un algoritmo de recomendación basado en contenido para la recomendación de eventos.
- Implementar un servidor de sitio web en
Amazon EC2
: sistema de recomendación de eventos - Analice el tráfico del sitio web tanto en línea como fuera de línea con ELK (
ElasticSearch
, Logstash
y Kibana
) y MapReduce
en MongoDB
Diseño de infraestructura
- Arquitectura de 3 niveles
- Nivel de presentación: HTML, CSS, JavaScript
- Nivel de datos: MySQL, MongoDB
- Nivel lógico: Java
- Entorno de desarrollo local y remoto.
Entorno de desarrollo local
Entorno de desarrollo remoto
Diseño API
- Nivel lógico (Java Servlet a RPC)
- Buscar
- buscarelementos
- API de Ticketmaster
- analizar y limpiar datos, saveItems
- respuesta de devolución
- Historia
- obtener, configurar y eliminar elementos favoritos
- consultar base de datos
- respuesta de devolución
- Recomendación
- recomendar artículos
- obtener historial favorito
- buscar eventos similares, ordenar
- respuesta de devolución
- Acceso
- OBTENER: verifique si la sesión está iniciada
- POST: verificar el nombre de usuario y la contraseña, establecer la hora de la sesión y marcar como conectado
- consultar base de datos para verificar
- respuesta de devolución
- Cerrar sesión
- OBTENER: la sesión no es válida si existe y redirige a
index.html
- PUBLICAR: lo mismo que OBTENER
- respuesta de devolución
- Registro
- Establecer un nuevo usuario en la tabla/colección de usuarios en la base de datos
- respuesta de devolución
Diseño de API en nivel lógico
- Documento oficial de TicketMasterAPI: API de descubrimiento
- Diseño de algoritmos de recomendación.
- Recomendación basada en contenido : busque categorías del perfil de artículos favoritos de un usuario y recomiende artículos similares con las mismas categorías.
- Presentar elementos recomendados con ranking basado en distancia (geolocalización de usuarios)
Proceso de solicitud de recomendación
Diseño de base de datos
- mysql
- usuarios : almacena información del usuario.
- artículos : almacena información del artículo.
- categoría - relación artículo-categoría de la tienda
- historial - almacenar el historial favorito del usuario
Diseño de base de datos MySQL
- MongoDB
- usuarios : almacena información del usuario y el historial de favoritos. = (usuarios + historial)
- artículos : almacena información del artículo y la relación entre categoría y artículo. = (artículos + categoría)
- registros : almacena información de registro
Detalles de implementación
- patrón de diseño
- Patrón de construcción :
Item.java
- Cuando convierta eventos de TicketMasterAPI a elementos de Java, utilice el patrón de creación para agregar campos libremente.
- Patrón de fábrica :
ExternalAPIFactory.java
, DBConnectionFactory.java
-
ExternalAPIFactory.java
: admite múltiples funciones como recomendación de eventos, restaurantes, noticias, trabajos... simplemente enlace a diferentes API públicas como TicketMasterAPI. Mejorar la capacidad de extensión. -
DBConnectionFactory.java
: admite múltiples bases de datos como MySQL y MongoDB. Mejorar la capacidad de extensión.
- Patrón singleton :
MySQLConnection.java
, MongoDBConnection.java
- Solo cree un número específico de instancias de la base de datos, y la clase puede controlar la instancia misma y otorgar acceso global a la clase externa.
Análisis del comportamiento del usuario
- En línea ( ElasticSearch , Logstash , Kibana )
- Use Logstash para recuperar el registro (en forma similar a NoSQL), luego almacene datos en ElasticSearch, finalmente use Kibana para analizar los datos en ElasticSearch, obteniendo algunas tablas y gráficos como el uso de API, el estado de las solicitudes, la geolocalización de los visitantes, etc.
Entorno de desarrollo remoto
- Sin conexión ( MapReduce en MongoDB )
- Copie y pegue algunos registros del servidor Tomcat
- Purifique los datos de registro y guárdelos en MongoDB
- Hacer
mapreduce()
en MongoDB - Obtenga una lista de recuento de períodos de tiempo en orden descendente y luego encuentre el momento pico de tráfico del sitio web