sql >> Databáze >  >> NoSQL >> Redis

Je možné redis na Heroku bez addonu?

Spustit redis na dyno je zajímavý nápad. Pravděpodobně budete muset vytvořit redis buildpack, aby si váš dynos mohl stáhnout a spustit redis. Protože "redis nemá žádné jiné závislosti než funkční kompilátor GCC a knihovnu libc", mělo by to být technicky možné.

Zde jsou však některé problémy, se kterými se můžete setkat:

  1. Heroku dynos nemá statickou IP adresu

    "dynos nemá statické IP adresy... nikdy nemůžete přistupovat k dyno přímo pomocí IP"

    I když nastavíte a spustíte Redis na dyno, nevím o způsobu, jak najít instanci dyno a odeslat jí požadavky redis. To znamená, že váš server Redis bude pravděpodobně muset běžet na stejném dyno jako váš webový server/hlavní aplikace.

    Toto také znamená, že pokud se pokusíte škálovat svou aplikaci vytvořením více webových dynos, vytvoříte také více místních instancí redis. Data mezi nimi nebudou sdílena. Nepřipadá mi to jako obzvlášť škálovatelný design, ale pokud je vaše aplikace dostatečně malá na to, aby vyžadovala pouze jedno webové dyno, může to fungovat.

  2. Heroku dynos mají efemérní souborový systém

    "žádné zapsané soubory nejsou viditelné pro procesy v žádném jiném dyno a všechny zapsané soubory budou zahozeny v okamžiku zastavení nebo restartu dyna"

    Ve výchozím nastavení zapisuje Redis svůj soubor RDB a protokol AOF na disk. Budete je muset někde pravidelně zálohovat, abyste je mohli načíst a obnovit po restartu vašeho dyno. Viz dokumentaci k Redis persistence.

  3. Heroku dynos se často restartují

    "Dyno jsou cyklovány alespoň jednou denně nebo kdykoli dyno rozdělovač detekuje chybu v základním hardwaru"

    Budete muset být schopni spustit váš redis server při každém spuštění dyno a obnovit data.

  4. Heroku dynos má 512 MB RAM

    "Každému dynu je přiděleno 512 MB paměti pro provoz"

    Pokud váš server Redis běží na stejném dyno jako váš webový server, odečtěte RAM potřebnou pro vaši hlavní aplikaci. Kolik paměti Redis potřebujete?

    Zde je několik otázek, které se snaží odhadnout a sledovat využití paměti Redis:

    • Redis:Poměr velikosti databáze k paměti?
    • Profilování využití paměti Redis

--

Celkově: Doporučuji přečíst si 12 Factor Apps, abyste pochopili trochu více o zamýšleném aplikačním modelu heroku.

Krátká verze je taková, že dynos jsou zamýšleni jako nezávislí pracovníci, které lze snadno vytvořit a vyřadit, aby uspokojili poptávku, a že dynos mají přístup k různým zdrojům pro čtení nebo zápis dat a obsluhu vaší aplikace. Instance redis je příkladem zdroje. Jak můžete vidět z položek výše, pomocí doplňku redis získáte něco, co je zaručeně statické, stabilní a přístupné.

Čtený materiál:

  1. http://www.12factor.net/ – konkrétně Procesy a služby
  2. Procesní model Heroku
  3. Blog Heroku – model procesu


  1. Jak $set Update Operator funguje v MongoDB

  2. Jak převést z datového typu řetězec na datum?

  3. Nechte nový ClusterControl zabezpečit vaše nasazení MongoDB

  4. Musím ukončit instanci klienta redis uzlu pomocí .quit()?