¿Cuáles son las mejores prácticas para implementar un sistema de notificación similar a Quora / Facebook?

Como dijo Avi, es difícil establecer una arquitectura en una respuesta. Y sí, Quora hace un hermoso trabajo con su motor de notificaciones. Mientras reviso varios modelos para poner en marcha un motor de notificaciones, encontré estos términos clave (y algunos ejemplos) que debe tener en cuenta al redactar la arquitectura de su sistema:

1. WebSockets: hacen un trabajo increíble con notificaciones en tiempo real y sistemas de chat. Aunque si profundiza en cada uno de estos conceptos, todo está sondeando (algunos servidores muestran que tienen sockets activados por borde (como kqueue), algunos usan sockets activados por nivel (como epoll): puede que no sea demasiado bueno con los términos, es Ha pasado un tiempo desde que me ensucié las manos).

2. Modelo de PubSub: debe averiguar si está transmitiendo, unidifusión o multidifusión y crear el modelo de suscriptor de editor para el mismo. Esto se puede reutilizar en varios otros lugares y canales como notificaciones por correo electrónico, mensajes de texto, notificaciones móviles, etc.

3. Sistemas de bases de datos: como Avi, soy fanático de NoSQL, especialmente de las tiendas de documentos como Mongodb. Mantienen el código limpio, tiene la flexibilidad de escribir ORM sin sentido que son específicos de su marco, consultas más rápidas y demoras de respuesta insignificantes. Los encuentro perfectos para la creación de colas de entrega.

4. Mecanismo de entrega: integre su autenticación API al sistema de entrega que expulsa su código / datos json solo si el socket está activo y autenticado. Si el socket se apaga, el navegador muestra que las notificaciones no están activas (como lo hizo Quora en estos días)

5. Escalado: la mayoría de las implementaciones de websocket son escalables sobre el sistema distribuido y dependen del servidor subyacente (el chico más popular en el bloque es socket.io con nodejs). Puede escribir sus propios envoltorios o usar algunos de los que le ayudan a distribuir su carga horizontalmente.

No estoy muy seguro de si esto ayudaría, pero pensé en darle un vuelco al cerebro aquí. Las implementaciones están basadas en escenarios en la mayoría de los casos.

Esta es una especie de hilo antiguo, pero por el bien de la referencia, creo que nuestra nueva oferta le brindaría toda la funcionalidad que está buscando aquí. Acabamos de lanzar nuestro complemento de notificación en la aplicación (lo llamamos InBox). Básicamente es un complemento JS que le permite crear y administrar programas completos de notificación. Se puede configurar en unas pocas horas y los especialistas en marketing pueden hacer toda la creación del mensaje (y activar las reglas).

Puede obtener más información al respecto aquí: COMIENCE CON INBOX · Knowtify

Solo para agregar a la respuesta de Sushant:

La belleza de socket.io es que se degrada con gracia en el cliente si los websockets no son compatibles con el navegador del cliente. (desde tomas de flash a longpolling ordinario). Aunque vanilla socket.io del lado del servidor se implementa en Nodejs, existen varios puentes / implementaciones para otros idiomas del lado del servidor.

Otra opción es externalizar la infraestructura para notificaciones (Saas) usando http://pusher.com/ . En realidad no lo he intentado yo mismo, pero parece bien pensado. También hay un nivel libre bastante liberal para probarlo.

More Interesting

¿Cómo debo crear un documento / hoja para el requisito de contenido para el sitio web interno de nuestra empresa?

¿Cómo puedo desarrollar el diseño de mi sitio web a bajo precio en India?

¿Por qué muchas personas siguen prefiriendo Rails sobre Django para construir redes sociales, incluso después de las historias de éxito con Instagram y Pinterest?

¿Qué es mejor para desarrollar sitios para clientes, Bootstrap / plantillas personalizadas o escribir código usted mismo?

¿Cuál es el beneficio para el usuario de los navegadores que compiten en renderizado?

¿Cómo debería un desarrollador del lado del servidor comenzar a actualizar sus habilidades de IU web?

¿Dónde debo redirigir a los hackers que intentan acceder a archivos comunes como wp-config.php, o a usuarios como 'admin'?

¿Cuáles son los mejores cursos pagos en línea (o gratuitos, según la calidad) para aprender Node.JS, Angular.JS, MEAN Stack, Rest API?

¿Cuáles son algunas de las buenas empresas de desarrollo de Ruby on Rails en Europa del Este, especialmente Ucrania, que atienden a las startups?

¿Por qué se rompe un enlace si escribo '.jpg' en html en lugar de '.JPG'? ¿Hay alguna diferencia entre .jpg y .JPG?

¿Cuáles son los beneficios de una empresa de desarrollo de CMS?

¿Cuál es una buena prueba técnica para un programador PHP?

Cómo dividir un trabajo de desarrollo web en tareas para que pueda verificar cada paso que mi desarrollador ha realizado en una metodología de proyecto ágil

¿Cuáles son los aspectos positivos y negativos de trabajar como desarrollador web?

Cómo hacer un buen sitio web desde cero en unos pocos meses