सबसे पहले, मेरे पास एक वैचारिक सवाल है, क्या "वितरित" शब्द का अर्थ केवल यह है कि एप्लिकेशन एकाधिक मशीनों पर चलाया जाता है? या ऐसे अन्य तरीके हैं जहां एक आवेदन को वितरित माना जा सकता है (उदाहरण के लिए यदि कई स्वतंत्र मॉड्यूल टॉगर से बातचीत कर रहे हैं लेकिन उसी मशीन पर, क्या यह वितरित किया जाता है?)।वितरित जावा एप्लिकेशन कैसे बनाएं?
दूसरा, मैं एक प्रणाली बनाना चाहता हूं जो चार प्रकार के कार्यों को निष्पादित करे, वहां कई ग्राहक होंगे और प्रत्येक के पास समय-समय पर चलाने के लिए प्रत्येक प्रकार के कई कार्य होंगे। उदाहरण के लिए: ग्राहक 1 में task_type1 होगा, task_type2 दो दिनों के बाद और इसी तरह, ग्राहक 2 हो सकता है जिसके पास task1type1 को उसी समय निष्पादित किया जा सकता है जैसे ग्राहक 1 के task_type1। यानी समवर्तीता की आवश्यकता है। कार्यों को निष्पादित करने के लिए कॉन्फ़िगरेशन डीबी में संग्रहीत किया जाएगा और इन कार्यों के परिणामों को डीबी में भी संग्रहीत किया जा रहा है। ग्राहक सिस्टम के साथ बातचीत करने के लिए एक वेब ब्राउज़र (एचटीएमएल पेज) से सिस्टम का उपयोग करेंगे (मूल रूप से, कार्यों को कॉन्फ़िगर करें और परिणामों को देखें)। मैंने एक बाकी webservice (JAX-RS का उपयोग करके) का उपयोग करने के बारे में सोचा था, जहां HTML पृष्ठ समवर्ती निष्पादन के लिए बैकएंड उपयोग थ्रेड के साथ संवाद करेंगे। प्रश्न:
- यह आसान लगता है, लेकिन क्या मैं सही दिशा में जा रहा हूं? या मुझे उदाहरण के लिए जावा बीन्स जैसी अन्य तकनीकों या अवधारणाओं का उपयोग करना चाहिए?
2. यदि मेरा दृष्टिकोण ठीक है, तो मुझे जेएसपी जैसी स्क्रिप्टिंग भाषा का उपयोग करने की ज़रूरत है या मैं सीधे बाकी यूआरएल में एचटीएमएल फॉर्म जमा कर सकता हूं और परिणाम प्राप्त कर सकता हूं (उदाहरण के लिए जेएसओएन का उपयोग कर)?
- यदि मैं एप्लिकेशन को वितरित करना चाहता हूं, तो क्या यह मेरे विचार के साथ संभव है? यदि नहीं, तो मुझे क्या उपयोग करने की आवश्यकता होगी?
कई प्रश्न होने के लिए खेद है, लेकिन मैं वास्तव में इसके बारे में उलझन में हूं।
क्या आप वास्तव में उम्मीद करते हैं कि 'task_type1', 'task_type2', आदि बहुत सीपीयू-गहन होने जा रहे हैं? क्या आपने इसकी पुष्टि करने के लिए * परीक्षण * किया है? क्या वास्तव में एक ही समय में एप्लिकेशन का उपयोग करने वाले बहुत सारे उपयोगकर्ता होने जा रहे हैं? ऐसा हो सकता है कि एक सर्वर लोड को ठीक से संभाल सके और एप्लिकेशन को वितरित करने से केवल कोई अतिरिक्त लाभ न हो। दूसरा, मान लें कि आपको धागे की आवश्यकता नहीं है क्योंकि "कार्यों को एक ही समय में निष्पादित करने की आवश्यकता है"। जब तक आपको कई सीपीयू का लाभ उठाने की आवश्यकता नहीं होती है, तब तक एक सिंगल थ्रेड कार्य कतार से खींचने वाले कार्यों को शायद ठीक काम करेगा। –
@AlexD कार्यों स्वयं सीपीयू गहन नहीं हैं, लेकिन अगर मुझे कई कार्यों के साथ कई ग्राहक मिलते हैं तो यह भविष्य में एक समस्या हो सकती है, मैं भविष्य के लिए स्केलेबिलिटी पर विचार कर रहा हूं। मुझे लगता है कि एक सर्वर अब के लिए संभाल लेंगे। लेकिन मैं जानना चाहता था कि मुझे इसकी आवश्यकता होने पर इसे कैसे वितरित किया जाए। अर्थात।मैं वितरण की अवधारणाओं को समझना चाहता था। – Sami
@AlexD धागे के संबंध में, मुझे विशिष्ट समय पर कार्यों को निष्पादित करने की आवश्यकता है, उदाहरण के लिए, work1type1 को ग्राहक 1 के लिए 10:00 बजे निष्पादित किया जा सकता है और ग्राहक 2 के लिए अन्य task_type1 10:00 बजे भी हो सकता है। मुझे निष्पादन में कुछ प्रकार की सहमति की आवश्यकता है। i.e: समानांतर में दो कार्यों को संसाधित करना। – Sami