Bueno, necesitaría las siguientes capas (cada capa está compuesta por varios servidores que hacen lo mismo):
1-Una capa de base de datos (algo obvio) podría ser mysql o mongodb o redis o lo que sea, el punto es que se requiere una base de datos.
2- una capa de servidor web, podría ser php o java o ruby o lo que sea.
- ¿Puedo obtener consejos sobre qué considerar antes de comenzar a desarrollar una aplicación? Tengo la idea, los detalles y un diseño aproximado.
- En una aplicación javascript, ¿es una práctica común definir mediante programación formas simples, o debería usar siempre vectores / mapas de bits (y por qué)?
- ¿Por qué una gran multinacional como Amazon tiene un sitio web tan feo y una aplicación híbrida que es tan lenta como fea?
- ¿Qué tipo de equipo debería contratarse para una red social, para dispositivos móviles, un buen diseño y una gran seguridad de código?
- ¿Existe una aplicación de código abierto donde pueda escanear recibos con OCR? Al igual que Lemon Wallet y muchos otros.
3- una capa de servidor de colas, las colas ejecutan código de forma asincrónica. Por ejemplo, cuando publica en Instagram, su publicación no se escribe inmediatamente en la base de datos principal, se coloca en una cola y el servidor de la cola decide enviar más tarde la solicitud de escritura a la base de datos, dependiendo de qué tan ocupada esté actualmente la base de datos, por lo que en realidad puede pasar algún tiempo antes de que se almacenen cosas, sin embargo esto se mantiene invisible para el usuario
4- capa de servidor de chat, también podría tener su propia base de datos separada para entregar mensajes fuera de línea
5- un servidor de archivos para fotos y videos. No puede almacenar fotos y videos dentro de los servidores web, ya que tendrá muchos servidores web, por lo que duplicaría el contenido en todos ellos (mala idea) y se encontrará con problemas de qué pasaría si el usuario subiera una foto al servidor web 1 mientras el usuario 2 su amigo envió una solicitud a esta foto en el servidor web 2 y la foto aún no está sincronizada? Por lo tanto, los servidores web que ejecutan su código no son viables para un gran servicio, necesita una capa de servidor de archivos centralizada que tome las fotos de todos los servidores web y las sirva al usuario (recomiendo amazon s3 para el menor dolor de cabeza)
Las notificaciones y eventos 6-Push pueden ser sus propios servidores o pueden mezclarse con los servidores de chat, ya que es básicamente un mensaje de chat, excepto que se envía desde el servidor, tendrá que sonar en su pantalla y llamar su atención como un mensaje lo haría … pero no sabría si lo convierten en un servidor
Capa 7-Caché, no todas las solicitudes deben llegar a su servidor web, y no todas las solicitudes deben generar consultas, por lo que necesita un caché de base de datos como memcached y / o un caché de servidor web como barniz.
descargo de responsabilidad: nunca antes construí un sistema grande como este, me ofrecieron hacerlo una vez, de ahí toda la investigación, pero nunca lo hice …