Code Monkey home page Code Monkey logo

exercise6's Introduction

Ejercicio 6

Introducción

Gracias a las mejoras en disponibilidad que hemos implementado, el número de clientes de nuestro servicio va a incrementarse rápidamente. A partir de ahora, la aplicación tiene que ser capaz de gestionar una cantidad muy elevada de peticiones simultáneas de envío de mensajes.

1 - Dejando las cosas para luego

Para ser capaces de atender una mayor cantidad de peticiones y evitar una saturación de nuestra aplicación, vamos a implementar un sistema de procesamiento asíncrono basado en el encolado de las peticiones. Esta medida nos permitirá procesar cada conexión entrante con mucha más rapidez, por lo que podremos atender a más clientes.

  • Define e inicializa una instancia de redis en el sistema.
  • Implementa una cola de trabajos basada en redis (puedes desarrollar la implementación completa o usar una librería existente, lo que prefieras) y un proceso que se encargue de recoger los trabajos encolados (en orden de llegada) y procesar su envío.
  • Modifica nuestro endpoint /messages de forma que ahora encole los mensajes conforme los reciba, para su posterior procesado y envío. Piensa cómo debe ser la respuesta de este endpoint, ahora que el mensaje aún no fue procesado.

2 - ¿Cómo va lo mío?

Ahora el cliente que manda una petición de envío de mensaje no puede saber si el envío se realizó correctamente en el momento. Hay que ofrecer una sistema que permita consultar el estado de un mensaje (¿ha sido enviado correctamente o no? ¿está en espera de ser procesado? ¿ha ido algo mal?). Para esto, es necesario que todos los mensajes sean identificados de forma unica a su recepción en el sistema.

  • Asigna un identificador único a cada mensaje recibido en el endpoint /messages. De esta forma podemos consultar su estado más adelante.
  • Implementa un nuevo endpoint /message/:messageId/status con método GET que permita consultar el estado de un mensaje. Como parámetro para la consulta debe recibir el identificador único del mensaje en el path. Por ejemplo: http://127.0.0.1:9006/message/156656739486/status. La respuesta del endpoint será un JSON con un único campo status que contenga el estado del mensaje consultado.
  • Piensa en los posibles estados de un mensaje ahora que se procesan de forma asíncrona.
  • ¿Cómo afectan estos cambios a nuestro modelo de datos? ¿Qué queremos almecenar ahora? ¿Y cuándo?

exercise6's People

Contributors

mfgomezb avatar paulo avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.