मेरे पास एक ऐसी प्रणाली है जिसका उपयोग हम यहां काम पर करते हैं जो सेवाओं के साथ बहुत अच्छी तरह से काम करता है। हमारे तैनात सिस्टम में किसी भी समय लगभग 20-30 सेवाएं हैं। काम पर हम टॉपशेल्फ़ नामक एक उत्पाद का उपयोग करते हैं, जिसे आप यहां देख सकते हैं http://topshelf-project.com/
मूल रूप से टॉपशेल्फ सेवा से संबंधित कई सामानों को संभालता है। सेवा की cmd लाइन से सभी को इंस्टॉल करना, अनइंस्टॉल करना आदि। डीबगिंग के लिए कंसोल के रूप में चलाने की क्षमता बहुत उपयोगी सुविधाओं में से एक है। आप एक सेवा बनाते हैं, और एक अलग सीएमडी लाइन शुरू करने के साथ आप सेवा के आउटपुट को देखने के लिए इसे कंसोल के रूप में चला सकते हैं। हमने इस सॉफ्टवेयर में एक कस्टम फीचर जोड़ा है जो हमें पहले से प्रोफाइल कॉन्फ़िगर करने देता है। असल में हमारी प्रोफाइल लॉगिंग, संसाधन स्थान इत्यादि जैसी कुछ चीजों को कॉन्फ़िगर करती हैं ताकि हम किसी भी कोड को पुन: प्रकाशित किए बिना उन सभी को नियंत्रित कर सकें। हमें बस की तरह
डी एक कमांड चलाया जाता है: \ सेवाएं \ ServiceName.exe Core.Profiles.Debug या
डी: \ सेवाएं \ ServiceName.exe Core.Profiles।अलग-अलग लॉगिंग कॉन्फ़िगरेशन प्राप्त करने के लिए उत्पादन
।
हमारी बिल्ड स्क्रिप्ट हमारी प्रत्येक सेवा के लिए install.cmd और uninstall.cmd स्क्रिप्ट बनाता है जो हम करते हैं, हम फ़ाइलों को सर्वर पर प्रतिलिपि बनाते हैं और स्क्रिप्ट चलाते हैं। अगर हम डीबग आउटपुट देखना चाहते हैं तो हम सेवा को रोकते हैं और एक्सई पर डबल क्लिक करते हैं और हमें सभी आउटपुट पढ़ने के लिए कंसोल मिलता है।
एक और चीज जो टॉपशेल्फ़ है जिसका हम उपयोग नहीं करते हैं क्योंकि यह आवश्यक नहीं है शेल्विंग की अवधारणा है (इसके लिए इस वेबसाइट पर दस्तावेज़ीकरण है)। यह आपको "पुनरारंभ" किए बिना सेवा को अपडेट करने की अनुमति देता है लेकिन आपको तब तक फ़ाइलों को मैन्युअल रूप से कॉपी करने की आवश्यकता होती है जब तक कि आप इसके लिए स्वचालित सिस्टम नहीं बनाते।
हालांकि, अगर आपको 100% सेवा उपलब्धता की आवश्यकता है तो मेरा सुझाव एक अनावश्यक प्रणाली है। कोई फर्क नहीं पड़ता कि आप अपडेट के लिए अपनी सेवा को कैसे कॉन्फ़िगर करते हैं, आप स्वचालित विफलता प्रणाली के बिना डाउनटाइम के कारण हार्डवेयर विफलता से बच नहीं सकते हैं। यदि कहा गया था कि सिस्टम स्थापित किया गया था तो मेरी अनुशंसित अद्यतन रणनीति 1 नोड को बंद करने, अपडेट करने, परीक्षण करने, दूसरे नोड को बंद करने, अद्यतन करने, परीक्षण करने और दूसरी नोड को चालू करने के लिए चालू होगी। आप यह सब एक सरल लिपि के साथ कर सकते हैं। यह आपकी आवश्यकता से अधिक जटिल प्रणाली हो सकती है, लेकिन यदि आप एक साधारण पुनरारंभ के लिए ऑफ़लाइन सेवा नहीं ले सकते हैं जिसमें 5 सेकंड लगते हैं तो आपको हार्डवेयर समस्याओं से निपटने के लिए वास्तव में कुछ सिस्टम की आवश्यकता होती है क्योंकि मैं गारंटी दे सकता हूं कि यह अंत में होगा।
भी देखें http://stackoverflow.com/questions/4002462/how-can-i-write-a-java-application-that-can-update-itself-at-runtime/4002465#4002465 –