Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Czy redis na Heroku jest możliwy bez dodatku?

Uruchamianie redisa na hamowni to ciekawy pomysł. Prawdopodobnie będziesz musiał stworzyć pakiet redis buildpack, aby twoje hamownie mogły pobierać i uruchamiać redis. Ponieważ „redis nie ma żadnych zależności innych niż działający kompilator GCC i biblioteka libc”, powinno to być technicznie możliwe.

Oto jednak kilka problemów, które możesz napotkać:

  1. Hamownie Heroku nie mają statycznego adresu IP

    "hamownia nie ma statycznych adresów IP... nigdy nie można uzyskać dostępu do hamowni bezpośrednio przez IP"

    Nawet jeśli skonfigurujesz i uruchomisz Redis na hamowni, nie znam sposobu na zlokalizowanie tej instancji hamowni i wysłanie jej żądań redis. Oznacza to, że Twój serwer Redis będzie prawdopodobnie musiał działać na tej samej hamowni, co serwer WWW/główna aplikacja.

    To również oznacza, że ​​jeśli spróbujesz skalować swoją aplikację, tworząc więcej hamowni internetowych, będziesz również tworzyć więcej lokalnych instancji redis. Dane nie będą między nimi udostępniane. Nie wydaje mi się to szczególnie skalowalnym projektem, ale jeśli Twoja aplikacja jest na tyle mała, że ​​wymaga tylko jednej hamowni internetowej, może działać.

  2. Hamownie Heroku mają efemeryczny system plików

    "żadne zapisane pliki nie są widoczne dla procesów w żadnej innej hamowni, a wszelkie zapisane pliki zostaną odrzucone w momencie zatrzymania lub ponownego uruchomienia hamowni"

    Domyślnie Redis zapisuje swój plik RDB i dziennik AOF na dysku. Będziesz musiał regularnie tworzyć ich kopie zapasowe, aby móc je pobrać i przywrócić po ponownym uruchomieniu hamowni. Zobacz dokumentację dotyczącą trwałości Redis.

  3. Hamownie Heroku są często restartowane

    „Dyno są uruchamiane co najmniej raz dziennie lub za każdym razem, gdy kolektor hamowni wykryje usterkę w sprzęcie bazowym”

    Musisz mieć możliwość uruchamiania serwera redis za każdym razem, gdy hamownia się uruchamia i przywracania danych.

  4. Hamownie Heroku mają 512 MB pamięci RAM

    „Każda hamownia ma przydzielone 512 MB pamięci do działania”

    Jeśli serwer Redis działa na tej samej hamowni co serwer WWW, odejmij pamięć RAM potrzebną do głównej aplikacji. Ile pamięci Redis potrzebujesz?

    Oto kilka pytań próbujących oszacować i śledzić wykorzystanie pamięci Redis:

    • Redis:stosunek rozmiaru bazy danych do pamięci?
    • Profilowanie wykorzystania pamięci Redis

--

Ogólnie: Proponuję przeczytać 12 Factor Apps, aby dowiedzieć się nieco więcej o zamierzonym modelu aplikacji heroku.

Krótka wersja jest taka, że ​​hamownie mają być niezależnymi pracownikami, których można łatwo tworzyć i odrzucać w celu zaspokojenia popytu, oraz że hamownie mają dostęp do różnych zasobów w celu odczytywania lub zapisywania danych i obsługi aplikacji. Przykładem zasobu jest instancja redis. Jak widać z powyższych elementów, korzystając z dodatku redis, otrzymujesz coś, co na pewno będzie statyczne, stabilne i dostępne.

Materiały do ​​czytania:

  1. http://www.12factor.net/ – w szczególności procesy i usługi
  2. Model procesu Heroku
  3. Blog Heroku — model procesu


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest właściwy sposób obsługi połączenia Redis w Tornado? (Asynchroniczny — Pub/Sub)

  2. Redis jest jednowątkowy, więc jak wykonuje współbieżne operacje we/wy?

  3. poczekaj, aż wszystkie obietnice skończą się w nodejs z bluebird

  4. Przecięcie dwóch lub więcej posortowanych zbiorów

  5. Synchronizacja Node.js i Redis / hget