Estoy explorando un caso de uso alternativo para el plugin de chat de Discourse y tengo algunas preguntas sobre sus límites de rendimiento, específicamente en lo que respecta a la retención de datos y el uso intensivo de la API.
Para proporcionar algo de contexto, estamos buscando un sistema de comentarios con hilos. La función de “respuestas en hilo” dentro del plugin de chat proporciona una experiencia de usuario mucho más cercana a nuestras necesidades que la estructura estándar de tema/publicación. Por esta razón, estamos considerando usar canales de chat como hilos de comentarios persistentes.
Debido a este caso de uso, necesitaríamos mantener el historial del chat indefinidamente. Esto lleva a nuestra principal preocupación: el rendimiento a una escala muy grande.
Nuestro uso proyectado es alto:
Mensajes Totales: Entre 1 y 10 millones de mensajes.
Canales: Aproximadamente 150 a 200 canales.
Nuestras preguntas principales son:
¿Es posible deshabilitar completamente la retención del chat o aumentarla para soportar el número de mensajes mencionado? Por ejemplo, estableciendo el período de retención en 0 o un número muy grande.
¿Cómo se vería afectada la seguridad de la API? Planeamos usar intensivamente las API del plugin de chat para integrarnos con nuestro sistema externo. Nuestro patrón de acceso principal sería la obtención de mensajes en orden cronológico (de más reciente a más antiguo) tanto para los canales principales como para los hilos. ¿Crearía este tipo de sondeo frecuente de API en canales con historiales masivos una carga significativa en el servidor?
¿Cuál sería el impacto general del rendimiento en el servidor y la base de datos de almacenar millones de mensajes de chat de forma permanente? Específicamente, ¿cómo afectaría esto a:
Uso de CPU y RAM del servidor?
Capacidad de respuesta general del sitio?
¿Existen puntos de quiebre conocidos o límites blandos donde el rendimiento del sistema comienza a degradarse significativamente bajo este tipo de carga?
Entendemos que este es un uso poco convencional del plugin de chat y que deshabilitar la retención no es una buena práctica. Nuestro objetivo es determinar los límites arquitectónicos del sistema, tanto en la interfaz de usuario como a través de la API, antes de comprometernos con este enfoque.
Cualquier información del equipo o de los miembros de la comunidad que hayan ejecutado el chat a gran escala sería increíblemente valiosa.
Hola @Nima1, puedo empezar a responder algunas de estas preguntas:
Sí, es posible. Puedes establecer los días de retención del canal de chat en “0” para retener mensajes para siempre, pero dada la escala de lo que estás haciendo, tienes razón al preguntarte sobre los impactos en el rendimiento. También anotaré que actualmente no admitimos la búsqueda de mensajes de chat (lo tenemos en mente pero no está planeado actualmente). Esto significa que incluso si retienes mensajes para siempre, dado tu alto uso del proyecto, puede que no sea factible que los miembros encuentren mensajes específicos.
No estoy seguro de las respuestas a estas preguntas, déjame consultar con algunos de los ingenieros que más han trabajado en el chat para ver qué opinan.
También me encantaría saber más sobre tu caso de uso: ¿estarías dispuesto a compartir más detalles sobre lo que estás intentando lograr?
Gracias por la respuesta y por consultar con el equipo de ingeniería. Estaré encantado de compartir más sobre nuestro caso de uso.
Estamos construyendo una comunidad para entusiastas de las criptomonedas. Para cada activo criptográfico importante, queremos crear un canal dedicado y persistente para la discusión en tiempo real.
Descubrimos que el modelo estándar de tema/publicación no es ideal para esto porque:
Ritmo y Formato: Las conversaciones son rápidas y consisten en mensajes cortos, actualizaciones y reacciones, lo que encaja naturalmente con el formato de chat.
Flujo de Información: Nuestros usuarios necesitan ver primero los mensajes más nuevos y desplazarse hacia arriba para ver el historial reciente, que es el comportamiento predeterminado en el chat. En contraste, los temas están diseñados para ser leídos cronológicamente de más antiguo a más nuevo.
Las respuestas en hilo y la visualización en orden cronológico inverso del plugin de chat son una combinación perfecta para la experiencia de usuario que queremos crear.
Nuestro principal desafío es la escala. Como tendremos un canal para cada activo, anticipamos necesitar cientos de canales, cada uno potencialmente con un historial muy largo. Es por eso que estamos tan interesados en los límites de rendimiento.
Estamos comprometidos a usar Discourse debido a sus potentes funciones de moderación, gestión de usuarios y gamificación, que son críticas para construir una comunidad saludable.
Espero tener noticias de lo que piensan los ingenieros. ¡Gracias de nuevo!
¡Gracias por compartir más sobre lo que esperas hacer, @Nima1!
Después de hablar con nuestro equipo, me temo que no podemos hablar con certeza sobre cómo se vería afectada el rendimiento por este volumen de mensajes: no tenemos muchas personas usando el chat en este momento a esta escala y dónde elijas alojar tu sitio tendrá un gran impacto.