Introducción a la Arquitectura de MallChat
MallChat es un sistema de código abierto que integra funcionalidades de comercio electrónico con comunicaciones en tiempo real, diseñado con Java y SpringBoot. Su arquitectura modular aborda desafíos clave como la gestión de conexiones, el procesamiento de mensajes diversos y la escalabilidad en entornos de alto tráfico.
Desafíos en el Mensajería Instantánea para Comercio Electrónico
Los sistemas tradicionales a menudo carecen de interacción en tiempo real, lo que limita la experiencia del usuario. MallChat soluciona estos problemas mediante:
- Soporte para notificaciones instantáneas y tipos de mensajes multimedia.
- Mecanismos de alta concurrencia y seguridad para datos sensibles.
- Diseño extensible para futuras funcionalidades.
Pila Tecnológica Principal
| Categoría | Tecnología | Función |
|---|---|---|
| Framework Web | SpringBoot 2.6.7 | Desarrollo de APIs RESTful |
| Base de Datos | MySQL 8.0 con MyBatisPlus | Almacenamiento relacional y ORM |
| Caché | Redis y Caffeine | Caché distribuida y local |
| Comunicación en Tiempo Real | Netty WebSocket | Gestión de conexiones de alto rendimiento |
| Cola de Mensajes | RocketMQ | Procesamiento asíncrono |
| Almacenamiento de Objetos | MinIO | Almacenamiento de archivos |
| Autenticación | JWT y OAuth2.0 de WeChat | Verificación de identidad |
Módulos Funcionales Clave
Motor de Comunicación en Tiempo Real
Basado en Netty, implementa WebSocket para conexiones persistentes. Incluye detección de latidos, protocolos de mensajes personalizados y gestión eficiente de miles de conexiones concurrentes.
Sistema de Usuarios y Permisos
Facilita el inicio de sesión mediante OAuth, utiliza JWT para autenticación sin estado, y maneja listas negras y sistemas de inventario de usuarios.
Procesamiento de Mensajes Multimodales
Soporta mensajes de texto, imágenes, archivos, voz y del sistema, adaptándose a diversas necesidades de comercio electrónico.
Gestión de Grupos y Miembros
Incluye estadísticas de usuarios en línea, paginación optimizada con ZSet, actualizaciones de estado en tiempo real y funcionalidades de mención (@).
Optimización de Rendimiento y Seguridad
La arquitectura emplea estrategias como pools de conexiones con HikariCP, caché multinivel, procesamiento asíncrono mediante colas y reutilización de conexiones WebSocket. Para seguridad, implementa filtrado de palabras sensibles con algoritmos AC/DFA, control de frecuencia con anotaciones, prevención de inyección SQL y protección XSS.
Implementación Técnica Profunda
Gestión de Conexiones WebSocket con Netty
El manejador de WebSocket gestiona el ciclo de vida de las conexiones. Ejemplo de código con nombres y estructura modificados:
public class ManejadorWebSocket extends SimpleChannelInboundHandler<TextWebSocketFrame> {
@Override
public void channelActive(ChannelHandlerContext ctx) {
// Lógica para establecer conexión autenticada
}
@Override
public void channelInactive(ChannelHandlerContext ctx) {
// Lógica para limpiar recursos al desconectar
}
}
Almacenamiento y Distribución de Mensajes
Los mensajes se almacenan en capas: caché en memoria para acceso rápido, Redis para datos calientes, y MySQL para persistencia histórica.
Control de Concurrencia con Bloqueos Distribuidos
Utiliza Redisson para bloqueos distribuidos en escenarios de alta demanda. Ejemplo con lógica reestructurada:
@RedissonLock(clave = "#salaId", tiempoEspera = 5)
public void enviarMensaje(Long salaId, SolicitudMensaje solicitud) {
// Procesamiento de envío de mensaje con validaciones
}
Casos de Uso Prácticos
MallChat se adapta a múltiples escenarios, como sistemas de atención al cliente en plataformas de e-commerce, aplicaciones de comercio social para compartir ofertas, o herrameintas de colaboración interna en empresas.
Direcciones Futuras
El proyecto planea incorporra funciones como videollamadas, asistentes inteligentes basados en IA, arquitectura de microservicios, clientes multiplataforma y mejoras completas en el flujo de compras.