Tenemos una aplicación móvil con 5 millones de usuarios y ahora estamos tratando de diseñar noticias basadas en ES. El objetivo es tener la oportunidad de crear publicaciones, almacenarlas y suscribirse para otros usuarios. Entonces, debemos elegir publicaciones para todos según sus suscripciones.
Después de investigar y buscar en Google, encontré algunas formas populares que podrían usarse en nuestro caso de uso.
Creación de índice por usuario . Creo que no es una buena idea para nosotros, porque necesita insertar una nueva publicación para cada uno de los índices de suscriptores. Además, ¿y si tenemos 100 millones de usuarios?
Cree un índice para todas las publicaciones . Y luego, para cada usuario, podemos crear un alias con filtro por ID de usuario al que está suscrito. Pero luego tendremos que actualizar muchos fragmentos mientras creamos noticias para el usuario. Entonces hay 3 vías.
Enrutamiento por ID de usuario . Es similar a 2 vías, pero la diferencia es que creamos un alias por usuario con enrutamiento por su ID de usuario. La desventaja es que para cada publicación en nuestro índice habrá tantas copias como personas deberían tomarla.
Hay otros patrones, que he leído. Pero todavía no tengo una visión clara: cuál será la mejor práctica en nuestro caso de uso.
Además, tenemos una alternativa a ES: Cassandra. Pero la decisión aún está en proceso.
Tal vez alguien podría decir su experiencia en esta pregunta y dar un consejo. La crítica también es bienvenida.
Gracias de antemano.
Puede usar el patrón Observer, sus noticias se enviarán a todos sus suscriptores