Изпълнението на redis на dyno е интересна идея. Вероятно ще трябва да създадете redis buildpack, така че вашият dynos да може да изтегля и стартира redis. Тъй като „redis няма други зависимости освен работещ GCC компилатор и libc“, това би трябвало да е технически възможно.
Въпреки това, ето някои проблеми, които може да срещнете:
-
Heroku dynos няма статичен IP адрес
"dynos нямат статични IP адреси .. никога не можете да получите достъп до dyno директно чрез IP"
Дори ако настроите и стартирате Redis на dyno, аз не знам начин да намеря този dyno екземпляр и да му изпратите заявки за redis. Това означава, че вашият Redis сървър вероятно ще трябва да работи на същия dyno като вашия уеб сървър/основно приложение.
Товасъщо означава, че ако се опитате да мащабирате приложението си, като създадете повече уеб dynos, вие също така ще създавате повече локални копия за редис. Данните няма да се споделят между тях. Това не ми се струва особено мащабируем дизайн, но ако приложението ви е достатъчно малко, за да изисква само един уеб dyno, може да работи.
-
Heroku dynos имат ефимерна файлова система
"никои записани файлове не се виждат за процеси в който и да е друг dyno и всички записани файлове ще бъдат изхвърлени в момента, в който dyno бъде спрян или рестартиран"
По подразбиране Redis записва своя RDB файл и AOF журнал на диск. Ще трябва редовно да ги архивирате някъде, за да можете да извлечете и възстановите след рестартирането на вашия dyno. Вижте документацията за устойчивостта на Redis.
-
Heroku dynos се рестартира често
„Dynos се циклира поне веднъж на ден или всеки път, когато dyno колекторът открие неизправност в основния хардуер“
Ще трябва да можете да стартирате вашия Redis сървър всеки път, когато dyno стартира и да възстановявате данните.
-
Heroku dynos имат 512MB RAM
„Всяка динамометрия има разпределени 512 MB памет, за да работи в рамките на“
Ако вашият Redis сървър работи на същия dyno като вашия уеб сървър, извадете RAM, необходима за вашето основно приложение. Колко Redis памет ви трябва?
Ето някои въпроси, които се опитват да оцените и проследите използването на паметта на Redis:
- Redis:Съотношение размер на базата данни към памет?
- Профилиране на използването на Redis памет
--
Като цяло: Предлагам да прочетете 12 Factor Apps, за да разберете малко повече за предвидения модел на приложение на heroku.
Кратката версия е, че dynos са предназначени да бъдат независими работници, които могат лесно да бъдат създадени и изхвърлени, за да отговорят на търсенето, и че dynos имат достъп до различни ресурси за четене или запис на данни и обслужване на вашето приложение. Екземпляр на redis е пример за ресурс. Както можете да видите от горните елементи, с помощта на добавка за redis получавате нещо, което гарантирано е статично, стабилно и достъпно.
Материал за четене:
- http://www.12factor.net/ – по-специално процеси и услуги
- Процесният модел на Heroku
- Блог Heroku – моделът на процеса