6

जब मैं हेरोोकू पर एपॉक्सी सरलवर्कर पाया तो मैं देरी से ऊपर उठने और अपने ऐप पर चलने वाला था।Delayed_job बनाम Appoxy SimpleWorker

ऐपॉक्सी का कहना है कि यह बड़े पैमाने पर समानांतर है और यह लागत को कम करने के लिए श्रमिकों को ऊपर और नीचे स्केल करता है। हालांकि, मुझे लगता है कि HireFire के साथ, देरी_job भी है। मेरा प्रश्न यहां है: जो आप चुनते हैं: delayed_job + हायरफायर या सरलवर्कर? (और क्यों?)

https://github.com/tobi/delayed_job
http://hirefireapp.com/
http://addons.heroku.com/simple_worker

मेरा ऐप पल में छोटा है - मात्रा कम होती है और एप्लिकेशन की संख्या एक अच्छा समय के लिए असाधारण रूप से अधिक नहीं होना चाहिए।


कहीं और दोनों सेवाओं के संस्थापकों से सीधे जवाब प्राप्त करने की उम्मीद क्यों कर सकता है? धन्यवाद माइकल और ट्रैविस!

उत्तर

5

हाय

मैं सेवाओं के बीच मतभेद के बारे में कुछ जानकारी प्रदान करने की कोशिश करेंगे (इस HireFire के लेखक)। सुनिश्चित नहीं है कि यह आपके निर्णय के साथ बहुत मदद करेगा, लेकिन कम से कम यह कुछ है!

दोनों समाधान एक अलग दृष्टिकोण लेते हैं। जब आवश्यक हो तो हायरफायर केवल आपके हेरोकू वेब और कार्यकर्ता डायनोस को स्केल करता है। आपको अपने मौजूदा कोड-बेस में कुछ भी बदलने की ज़रूरत नहीं है, आप बस विलंबित नौकरी का उपयोग सामान्य के रूप में करते हैं। आपको एक अलग पर्यावरण/मंच के लिए कोड भेजने/लिखने की आवश्यकता नहीं है क्योंकि इसे तैनाती पर हेरोकू के मंच पर एक स्लग के रूप में संकलित किया गया है, और जब कोई नया वेब या वर्कर डिनो स्पिन करता है, तो स्लग का उपयोग किया जाता है और तुरंत चलता है (आपके सभी को एनवी चर/सेटिंग्स

सरलवर्कर की तुलना में हायरफ़ीयर का नकारात्मक हिस्सा यह है कि हायरफ़ीयर हेरोकू-विशिष्ट है। इसलिए यदि आप कभी भी हेरोकू से स्विच करते हैं उदाहरण के लिए इंजनयार्ड या वीपीएस/समर्पित बॉक्स, तो हायरफ़ीयर काम नहीं करेगा, लेकिन SimpleWorker चूंकि यह सख्ती से हेरोकू से बंधे नहीं है। हालांकि, गैर-पैस प्लेटफ़ॉर्म (तुलनात्मक रूप से) पर होस्ट करने के लिए शायद यह बहुत सस्ता है, इसलिए ऑटो-स्केलिंग की आवश्यकता उतनी ही आवश्यक नहीं होगी जितनी अधिक या बिल्कुल।

I HireFire और टी विकसित करने से पहले SimpleWorker का एक ग्राहक रहा है हिंग मैं व्यक्तिगत रूप से नापसंद था कि मुझे अपने कोड-बेस का हिस्सा सरलवर्कर में भागना था, और मेरे रेल पर्यावरण में लोड करना था, डेटाबेस से अपने सर्वर स्थान से फिर से कनेक्ट करना था और हर बार जब मैं भेजना चाहता हूं तो एपीआई अनुरोध (?) भी करता था क्लाउड के लिए एक नौकरी (हालांकि यह अब बदल सकता है, इसलिए मैं आपको यह सुनिश्चित करने के लिए स्वयं को जांचने के लिए प्रोत्साहित करता हूं, और शायद यह मेरे लिए एक मुद्दा नहीं है क्योंकि यह मेरे लिए था)। मेरे लिए यह हर बार बहुत ही परेशानी/परीक्षण और त्रुटि थी जब भी मैं नई नौकरी कक्षाएं जोड़ना चाहता था और मुझे अपने ऐप और मेरे रत्नों से कोड के सभी अलग-अलग टुकड़ों में लोड करना था, जबकि नौकरी कक्षा फाइलों में ही, heroku ps:workers 1 चला रहा था या heroku ps:scale worker=2 तुरंत एक कार्यकर्ता या दो को स्पिन करेगा और मेरे कोड बेस पर शून्य संशोधनों के साथ प्रसंस्करण शुरू कर देगा, ठीक उसी तरह जब मैं इसे स्थानीय रूप से चलाता हूं, क्योंकि मेरा पूरा ऐप पहले से ही हेरोकू पर एक स्लग के रूप में संकलित है, यह केवल मेरे एनवी सहित चर और अन्य सेटिंग्स/एडॉन्स, और यह तेजी से फैलता है।

HireFire साथ

आप बस, अपने Gemfile को the hirefireapp gem जोड़ने अपने Heroku खाता जोड़ने के लिए/HireFire वेब इंटरफेस के लिए आवेदन, अपने स्केलिंग जरूरतों को अनुकूलित Heroku के लिए आपके आवेदन की तैनाती की जरूरत है, और बस इतना ही। आपके अनुप्रयोगों की लगातार निगरानी और प्रबंधन/समायोजित किया जाएगा (मिनट या उससे कम तक)।

हायरफ़ीयर नौकरियों और उनकी स्थिति (चलने/समाप्त/असफल/आदि) के साथ एक चिकना इंटरफ़ेस के साथ नहीं आता है (इसमें वर्तमान वेब/कार्यकर्ता dynos की वर्तमान मात्रा का एक सिंहावलोकन है और प्रत्येक ऐप के लिए कतारबद्ध नौकरियां हैं बेशक, और अनुकूलन स्केलिंग सेटिंग्स), हालांकि यह वास्तव में कार्यकर्ता पुस्तकालय का काम ऐसी कार्यक्षमता प्रदान करने के लिए है। जो मुझे पता है उससे विलंबित नौकरी में एक या दो छोटे व्यवस्थापक इंटरफेस हैं जिनका आप उपयोग कर सकते हैं (ओपन सोर्स) जो कि हायरफायर से बंधे नहीं हैं। क्योंकि SimpleWorker यह एक होस्टेड सेवा, साथ ही साथ एक वर्कर लाइब्रेरी दोनों में, वे आपको एक वेब इंटरफेस भी प्रदान करते हैं।

हायरफ़ीयर में आपके वेब डिनो को स्केल करने की क्षमता भी है, न केवल आपके कार्यकर्ता dynos।

दोनों सेवाओं में समानांतर में बहुत सी नौकरियों को संसाधित करने की क्षमता है, क्योंकि हेरोोकू और सरलवर्कर दोनों जो मुझे समझते हैं, उससे दूसरे के लिए प्रो-रेटेड हैं। तो क्या आप 6 सेकंड के लिए 10 कार्यकर्ता डायनोस को स्पिन करते हैं, या 60 सेकंड के लिए 1 लागत में कोई फर्क नहीं पड़ता (या मुश्किल से)।

मैंने खुद को हायरफ़ीयर जारी करने के बाद सरलवर्कर का उपयोग नहीं किया है, जो कुछ समय पहले था इसलिए मुझे यकीन नहीं है कि सरलवर्कर इन दिनों क्या प्रदान करता है या यदि वे तब से प्रक्रिया को सरल बनाते हैं, तो मुझे यकीन नहीं है कि क्या मेरे द्वारा किए गए उपरोक्त बयान अभी भी इस समय मान्य हैं।

आशा है कि इससे मदद मिलती है!

+0

माइकल, आपके विस्तृत उत्तर के लिए बहुत बहुत धन्यवाद! – sscirrus

+0

आपका स्वागत है! –

4

हाय (SimpleWorker के संस्थापक),

माइकल यह काफी अच्छी तरह से अभिव्यक्त किया है, लेकिन मैं Heroku श्रमिक और SimpleWorker, जरूरी नहीं कि HireFire के बीच कुछ अंतर जोड़ देंगे।

  • हरोकू में अधिकतम 24 कर्मचारी एक समय में हैं जिसका मतलब है कि केवल 24 नौकरियां एक साथ चल सकती हैं। SimpleWorker के साथ, आप किसी भी बदलाव के बिना 1000 बार (और जैसे ही हम बढ़ते हैं) चला सकते हैं।
  • सरलवर्कर के साथ स्केलिंग के लिए कोई प्रयास करने की आवश्यकता नहीं है क्योंकि आपका आवेदन बढ़ता है, आपको कुछ भी बदलने की ज़रूरत नहीं है, बस हमारे तरीके को और अधिक नौकरियां फेंकते रहें।
  • हेरोकू चार्ज करता है कि आप श्रमिकों का उपयोग कर रहे हैं या नहीं, SimpleWorker नहीं करता है। यह समस्या हैयरफायर हल करता है हालांकि यदि आप हायरफायर का उपयोग कर रहे हैं तो यह कोई मुद्दा नहीं है।
  • SimpleWorker शेड्यूलिंग शेड्यूलिंग है ताकि आपको अपने काम को दूर करने के लिए क्रॉन या कुछ भी की आवश्यकता न हो।
  • प्रबंधन इंटरफ़ेस तो आप अपने सभी कार्यकर्ताओं/नौकरी आदि

नकारात्मक पक्ष यह कल्पना कर सकते हैं, त्रुटियाँ नजर आती हैं, अपने सभी नौकरियों के लिए त्रुटि अलर्ट, दृश्य लॉग मिलता है, कि उसे कुछ अतिरिक्त SimpleWorker का उपयोग करने के बारे में सोचा लेता है चूंकि यह आपके पूर्ण रेल पर्यावरण नहीं चला रहा है। आपको अपने श्रमिकों को एक अलग प्रणाली (जो वे हैं) पर चल रही अलग-अलग संस्थाओं के रूप में सोचना है। सरल चीजों के लिए पृष्ठभूमि में एक ईमेल भेजना या यहां अपने सामने के अंत से कुछ चीजों को ऑफ़लोड करना, हेरोोकू वर्कर्स शायद एक अच्छी पसंद है। यदि आप कोई बड़ी बैच नौकरियां करते हैं, शेड्यूलिंग, लंबी दौड़ वाली नौकरियां, अपनी नौकरियों में अधिक दृश्यता चाहते हैं, तो आप सरलवॉकर को आज़मा सकते हैं।

Btw, हम हाल ही में कुछ नए वीडियो ताकि आप यह कैसे काम करता की एक विचार प्राप्त कर सकते हैं डाल दिया और उपयोग करने के लिए कितना आसान है: http://www.simpleworker.com/how_it_works/videos

आशा है कि मदद करता है! और SimpleWorker के बारे में आपके कोई प्रश्न पूछने के लिए स्वतंत्र महसूस करें।

+0

मेरी यादों को संक्षेप में करने के लिए धन्यवाद! शेड्यूलिंग निश्चित रूप से एक अच्छी सुविधा है, जबकि हेरोकू के साथ आप क्रॉन के लिए $ 5 का भुगतान करेंगे, और यह लगभग सरल नहीं है जैसा कि सरलवर्कर प्रदान करता है। * ध्यान देने योग्य बात यह है कि वेब इंटरफ़ेस पर हेरोकू का वेब/वर्कर डिनो स्लाइडर केवल 24 तक स्लाइड करता है, यदि आप कमांड लाइन (हेरोकू मणि) का उपयोग करते हैं तो आप कुछ सेकंड में सैकड़ों श्रमिकों को स्पिन कर सकते हैं। '$ heroku ps: स्केल वर्कर = 100' उदाहरण के लिए आपके कार्यकर्ता की मात्रा को' 100' पर सेट कर देगा। (यह उनके नए "सेलाडॉन सीडर" स्टैक के साथ काम करता है, पिछले स्टैक के साथ इसका परीक्षण नहीं किया है: "खराब बांस") –

+0

@TRavisR - आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! आप दोनों लोगों से सुनना बहुत अच्छा है। – sscirrus

+0

में अब तक अधिकतम अधिकतम 24 श्रमिक वक्तव्य को सही करने का समय होना चाहिए था ... – oma

0

मैं देरी से काम का उपयोग और उसके बाद एक रेक काम मैं या नहीं, वहाँ मेरे डेटाबेस में किसी delayed_jobs हैं के आधार पर मेरे Heroku कार्यकर्ताओं पैमाने पर करने के लिए उपयोग किया जाने:

namespace :heroku do 
    namespace :workers do 
    desc "stop heroku workers" 
    task :stop do 
     p ['stopping workers for', CONFIG['heroku_project']] 
     Heroku::Client.new(ENV['HEROKU_EMAIL'], ENV['HEROKU_PASSWORD']).set_workers(CONFIG['heroku_project'], 0) 
    end 

    desc "start heroku workers" 
    task :start do 
     p ['starting workers for', CONFIG['heroku_project']] 
     Heroku::Client.new(ENV['HEROKU_EMAIL'], ENV['HEROKU_PASSWORD']).set_workers(CONFIG['heroku_project'], 1) 
    end 

    desc "starts workers if the are items in the queue, otherwise, stops them." 
    task :check_queue => :environment do 
     p ["Env: ", Rails.env] 
     count = DelayedJob.find_pending.count 
     p ['Pending delayed jobs: ', count] 
     if count > 0 
     Rake::Task['heroku:workers:start'].invoke 
     else 
     Rake::Task['heroku:workers:stop'].invoke 
     end 
    end 
    end 
end 
साथ अनुसूचक ऐड-ऑन मैं जाँच कर सकते हैं

लागत कम रखने के लिए हर 10 मिनट में मेरे श्रमिकों पर।

मुझे यह समाधान पसंद है क्योंकि मैं देरीएड जोब (जिसे मैं परिचित हूं) का उपयोग कर सकता हूं, और एक और प्लगइन या तीसरे पक्ष का उपयोग करने के बजाय मुझे केवल एक ही रेक रेक कार्य है जो हरोकू पर लागत सीमित करने के लिए है और अनिवार्य रूप से केवल उस चीज़ के लिए भुगतान करता है मैं उपयोग करता हूं।

+0

हाय गेबोडेस, मुझे आपका दृष्टिकोण पसंद है और मैं इसे आजमा देना चाहता हूं। क्या आप इस काम को बनाने के तरीके पर विस्तार से बता सकते हैं? मेरे पास डीजे स्थापित है और काम कर रहा है। मैंने एक रेक कार्य बनाया। मैं ENV ['HEROKU_EMAIL'], ENV ['HEROKU_PASSWORD'] और CONFIG ['heroku_project'] कहां सेट करूं? क्या वे मान हार्डकोड हैं? – Alex

संबंधित मुद्दे