sql >> Base de Datos >  >> NoSQL >> Redis

¿Es posible redis en Heroku sin un complemento?

Ejecutar redis en un banco de pruebas es una idea interesante. Probablemente necesitará crear un paquete de compilación redis para que sus dynos puedan descargar y ejecutar redis. Como "redis no tiene más dependencias que un compilador GCC y libc en funcionamiento", esto debería ser técnicamente posible.

Sin embargo, aquí hay algunos problemas con los que puede encontrarse:

  1. Heroku dynos no tiene una dirección IP estática

    "los dynos no tienen direcciones IP estáticas... nunca se puede acceder a un dyno directamente por IP"

    Incluso si configura y ejecuta Redis en un banco de pruebas, no conozco una forma de ubicar esa instancia de banco de pruebas y enviarle solicitudes de redis. Esto significa que su servidor Redis probablemente tendrá que ejecutarse en el mismo banco de pruebas que su servidor web/aplicación principal.

    Esto también significa que si intenta escalar su aplicación creando más dinamómetros web, también creará más instancias locales de redis. No se compartirán datos entre ellos. Esto no me parece un diseño particularmente escalable, pero si su aplicación es lo suficientemente pequeña como para requerir solo un dinamómetro web, puede funcionar.

  2. Heroku dynos tiene un sistema de archivos efímero

    "Ningún archivo escrito es visible para los procesos en ningún otro banco de pruebas y cualquier archivo escrito se descartará en el momento en que se detenga o reinicie el banco de pruebas"

    De forma predeterminada, Redis escribe su archivo RDB y el registro AOF en el disco. Deberá hacer una copia de seguridad de estos en algún lugar con regularidad para poder recuperarlos y restaurarlos después de que se reinicie el banco de pruebas. Consulte la documentación sobre la persistencia de Redis.

  3. Los dynos de Heroku se reinician con frecuencia

    "Los dinamómetros se ciclan al menos una vez al día, o cada vez que el colector de dinamómetro detecta una falla en el hardware subyacente"

    Deberá poder iniciar su servidor redis cada vez que se inicie el banco de pruebas y restaurar los datos.

  4. Los dinamómetros Heroku tienen 512 MB de RAM

    "A cada banco de pruebas se le asignan 512 MB de memoria para operar dentro"

    Si su servidor Redis se ejecuta en el mismo banco de pruebas que su servidor web, reste la RAM necesaria para su aplicación principal. ¿Cuánta memoria Redis necesitas?

    Aquí hay algunas preguntas que intentan estimar y rastrear el uso de la memoria de Redis:

    • Redis:¿Tamaño de la base de datos a relación de memoria?
    • Perfiles de uso de memoria de Redis

--

General: Sugiero leer sobre 12 Factor Apps para comprender un poco más sobre el modelo de aplicación previsto de heroku.

La versión corta es que los dynos están destinados a ser trabajadores independientes que se pueden crear y descartar fácilmente para satisfacer la demanda, y que los dynos acceden a varios recursos para leer o escribir datos y servir su aplicación. Una instancia de redis es un ejemplo de un recurso. Como puede ver en los elementos anteriores, al usar un complemento redis, obtiene algo que está garantizado como estático, estable y accesible.

Material de lectura:

  1. http://www.12factor.net/ - específicamente Procesos y Servicios
  2. El modelo de proceso de Heroku
  3. Blog de Heroku:el modelo de proceso