Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Ist Redis auf Heroku ohne Addon möglich?

Das Ausführen von Redis auf einem Prüfstand ist eine interessante Idee. Sie müssen wahrscheinlich ein Redis-Buildpack erstellen, damit Ihre Dynos Redis herunterladen und ausführen können. Da „redis außer einem funktionierenden GCC-Compiler und libc keine Abhängigkeiten hat“, sollte dies technisch möglich sein.

Hier sind jedoch einige Probleme, auf die Sie stoßen könnten:

  1. Heroku Dynos haben keine statische IP-Adresse

    "Prüfstände haben keine statischen IP-Adressen. Sie können niemals direkt über die IP auf einen Prüfstand zugreifen"

    Selbst wenn Sie Redis auf einem Dyno einrichten und ausführen, ist mir keine Möglichkeit bekannt, diese Dyno-Instanz zu lokalisieren und ihr Redis-Anforderungen zu senden. Das bedeutet, dass Ihr Redis-Server wahrscheinlich auf demselben Dyno laufen muss wie Ihr Webserver/Ihre Hauptanwendung.

    Dies auch bedeutet, dass Sie, wenn Sie versuchen, Ihre App zu skalieren, indem Sie mehr Web-Dynos erstellen, auch mehr lokale Redis-Instanzen erstellen. Daten werden nicht zwischen ihnen geteilt. Dies scheint mir kein besonders skalierbares Design zu sein, aber wenn Ihre App klein genug ist, um nur einen Web-Dyno zu benötigen, kann es funktionieren.

  2. Heroku Dynos haben ein kurzlebiges Dateisystem

    "Keine geschriebenen Dateien sind für Prozesse in einem anderen Dyno sichtbar und alle geschriebenen Dateien werden verworfen, sobald der Dyno gestoppt oder neu gestartet wird"

    Standardmäßig schreibt Redis seine RDB-Datei und das AOF-Protokoll auf die Festplatte. Sie müssen diese regelmäßig irgendwo sichern, damit Sie sie abrufen und wiederherstellen können, nachdem Ihr Prüfstand neu gestartet wurde. Siehe die Dokumentation zur Redis-Persistenz.

  3. Heroku Dynos werden häufig neu gestartet

    "Dynos werden mindestens einmal pro Tag oder immer dann, wenn der Dyno-Verteiler einen Fehler in der zugrunde liegenden Hardware feststellt, einem Zyklus unterzogen"

    Sie müssen in der Lage sein, Ihren Redis-Server bei jedem Start des Prüfstands zu starten und die Daten wiederherzustellen.

  4. Heroku Dynos haben 512 MB RAM

    „Jedem Prüfstand werden 512 MB Arbeitsspeicher für den Betrieb zugewiesen.“

    Wenn Ihr Redis-Server auf demselben Prüfstand wie Ihr Webserver läuft, ziehen Sie den für Ihre Haupt-App benötigten RAM ab. Wie viel Redis-Speicher benötigen Sie?

    Hier sind einige Fragen, mit denen versucht wird, die Redis-Speichernutzung abzuschätzen und zu verfolgen:

    • Redis:Verhältnis von Datenbankgröße zu Arbeitsspeicher?
    • Profiling der Redis-Speichernutzung

--

Insgesamt: Ich schlage vor, 12 Factor Apps zu lesen, um etwas mehr über das beabsichtigte Anwendungsmodell von heroku zu erfahren.

Die Kurzversion besagt, dass Dynos unabhängige Worker sein sollen, die einfach erstellt und verworfen werden können, um den Bedarf zu decken, und dass Dynos auf verschiedene Ressourcen zugreifen, um Daten zu lesen oder zu schreiben und Ihre App bereitzustellen. Eine Redis-Instanz ist ein Beispiel für eine Ressource. Wie Sie den obigen Elementen entnehmen können, erhalten Sie durch die Verwendung eines Redis-Add-Ons etwas, das garantiert statisch, stabil und zugänglich ist.

Lesematerial:

  1. http://www.12factor.net/ - insbesondere Prozesse und Dienste
  2. Das Heroku-Prozessmodell
  3. Heroku-Blog – Das Prozessmodell