डायनो पर रेडिस चलाना एक दिलचस्प विचार है। आपको शायद एक रेडिस बिल्डपैक बनाने की आवश्यकता होगी ताकि आपके डायनोस रेडिस को डाउनलोड और चला सकें। चूंकि "रेडिस के पास काम कर रहे जीसीसी कंपाइलर और libc के अलावा कोई निर्भरता नहीं है" यह तकनीकी रूप से संभव होना चाहिए।
हालांकि, यहां कुछ समस्याएं हैं जिनका आप सामना कर सकते हैं:
-
Heroku dynos का कोई स्थिर IP पता नहीं होता
<ब्लॉकक्वॉट>"डायनो के पास स्थिर आईपी पते नहीं हैं .. आप कभी भी सीधे आईपी द्वारा डायनो तक नहीं पहुंच सकते"
यहां तक कि अगर आप एक डायनो पर रेडिस को स्थापित और चलाते हैं, तो मुझे उस डायनो इंस्टेंस का पता लगाने और इसे रेडिस अनुरोध भेजने के तरीके के बारे में पता नहीं है। इसका मतलब है कि आपके रेडिस सर्वर को शायद उसी डायनो पर चलाना होगा जिस पर आपका वेब सर्वर/मुख्य एप्लिकेशन चल रहा है।
यह भी इसका मतलब है कि यदि आप अधिक वेब डायनो बनाकर अपने ऐप को स्केल करने का प्रयास करते हैं तो आप अधिक स्थानीय रेडिस इंस्टेंस भी बना रहे होंगे। उनके बीच डेटा साझा नहीं किया जाएगा। यह मुझे विशेष रूप से स्केलेबल डिज़ाइन के रूप में प्रभावित नहीं करता है, लेकिन यदि आपका ऐप इतना छोटा है कि केवल एक वेब डायनो की आवश्यकता है तो यह काम कर सकता है।
-
Heroku dynos में एक अल्पकालिक फ़ाइल सिस्टम होता है
<ब्लॉकक्वॉट>"कोई भी फाइल जो लिखी गई है वह किसी भी अन्य डायनो में प्रक्रियाओं के लिए दृश्यमान नहीं है और किसी भी फाइल को लिखा गया है, जिस क्षण डायनो को रोका या फिर से शुरू किया जाएगा, उसे छोड़ दिया जाएगा"
डिफ़ॉल्ट रूप से Redis अपनी RDB फ़ाइल और AOF लॉग को डिस्क पर लिखता है। आपको इनका नियमित रूप से कहीं बैकअप लेना होगा ताकि आप अपने डायनो के पुनरारंभ होने के बाद प्राप्त कर सकें और पुनर्स्थापित कर सकें। Redis हठ पर दस्तावेज़ देखें।
-
Heroku dynos को अक्सर रीबूट किया जाता है
<ब्लॉकक्वॉट>"Dynos प्रति दिन कम से कम एक बार साइकिल चलाती है, या जब भी dyno कई गुना अंतर्निहित हार्डवेयर में खराबी का पता लगाता है"
आपको हर बार डायनो के शुरू होने और डेटा को पुनर्स्थापित करने के लिए अपना रेडिस सर्वर शुरू करने में सक्षम होने की आवश्यकता होगी।
-
Heroku dynos में 512MB RAM है
<ब्लॉकक्वॉट>"प्रत्येक डायनो को संचालित करने के लिए 512MB मेमोरी आवंटित की जाती है"
यदि आपका रेडिस सर्वर आपके वेब सर्वर के समान डायनो पर चल रहा है, तो अपने मुख्य ऐप के लिए आवश्यक रैम घटाएं। आपको कितनी रेडिस मेमोरी की आवश्यकता है?
यहाँ कुछ प्रश्न हैं जो Redis स्मृति उपयोग का अनुमान लगाने और उसे ट्रैक करने का प्रयास कर रहे हैं:
- Redis:डेटाबेस आकार से मेमोरी अनुपात?
- Redis मेमोरी उपयोग प्रोफाइलिंग
--
कुल: मेरा सुझाव है कि उसकेोकू के इच्छित एप्लिकेशन मॉडल के बारे में कुछ और समझने के लिए 12 फ़ैक्टर ऐप्स पर पढ़ें।
संक्षिप्त संस्करण यह है कि dynos स्वतंत्र कार्यकर्ता होने के लिए अभिप्रेत हैं जिन्हें आसानी से बनाया जा सकता है और मांग को पूरा करने के लिए त्याग दिया जा सकता है, और यह कि dynos डेटा को पढ़ने या लिखने और आपके ऐप की सेवा के लिए विभिन्न संसाधनों का उपयोग करते हैं। एक रेडिस उदाहरण एक संसाधन का एक उदाहरण है। जैसा कि आप ऊपर दिए गए आइटम से देख सकते हैं, रेडिस ऐड-ऑन का उपयोग करके आपको कुछ ऐसा मिल रहा है जो स्थिर, स्थिर और सुलभ होने की गारंटी है।
पठन सामग्री:
- http://www.12factor.net/ - विशेष रूप से प्रक्रियाएं और सेवाएं
- द हेरोकू प्रोसेस मॉडल
- हेरोकू ब्लॉग - प्रक्रिया मॉडल