Estoy pensando en el sistema que notificará a múltiples consumidores sobre eventos que suceden a una población de objetos. Cada suscriptor debe poder suscribirse a los eventos que suceden a cero o más de los objetos, múltiples suscriptores deben poder recibir información sobre los eventos que suceden a un solo objeto.Solución de puesta en cola de mensajes para millones de temas
Creo que algún sistema de colas de mensajes será apropiado en este caso, pero no estoy seguro de cómo manejar el hecho de que tendré millones de objetos, usar un tema separado para cada uno de los objetos no suena bien [¿o está bien?].
¿Puede sugerir el enfoque que debería tomar y tal vez incluso algún sistema de cola de mensajes de código abierto que sería razonable?
algunos detalles más:
- habrá miles de abonados [es decir, no un montón de ellos],
- suscriptores suscribirse a decenas o cientos de objetos cada uno,
- habrá ~ 5 -20 millones de los objetos,
- mismos eventos no tienen que llevar ningún mensaje. la información sólo que ese objeto se ha cambiado es suficiente,
- gran mayoría de los objetos nunca será suscrito,
- eventos ocurren a la velocidad máxima de unos cientos por segundo,
- ideal es que el servidor debe ejecutar en Linux, ya sea capaz de integrarse con el resto del ecosistema a través de http long-poll [utilizando el nodo js? continuaciones bajo embarcadero?].
Gracias de antemano por sus comentarios y lo siento por algo tan vaga pregunta!
Este es un problema fundamentalmente difícil de resolver de forma escalable, como lo demuestran, por ejemplo, los problemas que Twitter ha tenido. Puede usar un modelo estándar de suscriptor de tema y usar un truco para limitar el número de temas: por ejemplo, un id-tema podría ser un módulo de id de mensaje 1000. Entonces los oyentes de los temas solo filtrarían los mensajes que les interesan. acerca de. (Solo una idea) –
@Aapo Kyrola - gracias por la pista. ¿puedes enviar tu comentario como respuesta? ¿también puede sugerir un servidor de cola de mensajes particular? – pQd
¿has mirado en http://aws.amazon.com/sqs/? Y en todas las herramientas que podrían proporcionar (notificaciones, etc.) – Resh32