2016-08-12 6 views
10

मेरे ग्राहकों के पास एक वेब एप्लिकेशन को तैनात करने के तरीके के बारे में बहुत सख्त आवश्यकताएं हैं। उन्हें इसे जावा सर्वर जैसे टोमकैट के भीतर WAR के रूप में तैनात करने की आवश्यकता होती है। हालांकि हमारा आवेदन गोलांग में लिखा गया है और एक निष्पादन योग्य सर्वर में संकलित करता है।क्या मैं एक युद्ध के भीतर एम्बेडेड गोलांग सर्वर प्रॉक्सी कर सकता हूं?

एकमात्र समाधान मैं बंद सोच सकता है होगा पृष्ठभूमि जो 8080 की तरह एक गैर मानक पोर्ट पर सुनता है में एक लंबा रहते थे golang प्रक्रिया शुरू हुई और फिर जावा में एक प्रॉक्सी के कुछ प्रकार डाल करने के लिए जो पारदर्शी रूप से सभी प्रॉक्सी होगा इस प्रक्रिया के लिए HTTP अनुरोध और प्रतिक्रियाएं।

मुझे इसे लागू करने के बारे में कैसे जाना चाहिए? मैं जावा सर्वलेट से परिचित नहीं हूं और पृष्ठभूमि में इस तरह की लंबी चल रही प्रक्रियाओं को चला रहा हूं। अगर कुछ इस तरह मानक है

मेरे मुख्य चिंता यह है,

  1. यह JVM के स्मृति उपयोग, आदि को प्रभावित करती है?
  2. क्या सर्वर मेरी गोलांग प्रक्रिया को आवश्यक स्मृति की आवंटित करने की अनुमति देगा?
  3. क्या JVM इसके प्रोसेसर उपयोग को ट्रैक करने में सक्षम होगा?

क्या ऐसा करने का कोई बेहतर तरीका है? किसी प्रकार की इंटर-प्रोसेस संचार तंत्र की तरह?

उत्तर

5

यदि HTTP एकमात्र एपीआई है तो आपका गो एप्लिकेशन खुलासा करता है, तो आप केवल जाने के लिए HTTP अनुरोध भेजने के विकल्प के साथ ही छोड़ दिए जाते हैं। हां आप ProcessBuilder का उपयोग कर JVM से बाल प्रक्रिया के रूप में गो निष्पादन योग्य प्रारंभ कर सकते हैं। लेकिन यह वास्तव में आपके युद्ध में एम्बेड नहीं हो रहा है। जावा से गो में देशी दिनचर्या का आह्वान करने के लिए आप जेएनआई (गो बाइंडिंग्स को GoJVM कहा जाता है) का उपयोग कर सकते हैं, लेकिन फिर आपको अपने गो कोड बेस में भी बहुत से समायोजन करना होगा।

जो आप शायद देख रहे हैं वह वास्तव में एक रिवर्स प्रॉक्सी है। यह अक्सर servlets/अनुप्रयोग सर्वर में नहीं किया जाता है, क्योंकि यह आमतौर पर लोड बैलेंसर्स में पहले से ही किया जाता है। तो आमतौर पर यह mod_rewrite के साथ एनजीआईएनएक्स या httpd होगा। एप्लिकेशन सर्वर के लिए, आप प्रॉक्सी सर्वलेट का उपयोग कर सकते हैं।

उदाहरण:

स्मृति पदचिह्न आम तौर पर, बुरा नहीं है, क्योंकि आप अनिवार्य रूप से केवल धाराओं कनेक्ट कर रहे हैं। JVM प्रोसेसर और मेमोरी उपयोग को ट्रैक करने में सक्षम होगा - अगर सही तरीके से कार्यान्वित किया जाता है और गो सर्वर निष्पादन योग्य उसी सर्वर पर चलता है। स्पष्ट रूप से जावा विशिष्ट आंकड़े अब और अधिक समझ नहीं लेते हैं, क्योंकि आप केवल अपने जावा सर्वर को पास-थ्रू के रूप में उपयोग कर रहे हैं।

लगता है जैसे आप परेशानी में होंगे। अगर मेरी सख्त आवश्यकता एक युद्ध-संग्रह था जिसे किसी एप्लिकेशन सर्वर पर तैनात किया जा सकता है, तो मैं अपने स्टैक में जोड़े गए किसी अन्य निष्पादन योग्य को स्वीकार नहीं करता। रिवर्स प्रॉक्सी या नहीं।

0

यदि वे युद्ध चाहते हैं, तो उन्हें युद्ध दें!

एक पतली परत वेब सेवा निष्पादन एक संसाधन जाने सेवा के माध्यम से यह जाना सर्वर ऊपर लाने के लिए निष्पादित करता है कि और स्वीकार करता है वेब कॉल और करता है एक पास के रूप में एम्बेडेड है कि लिखें।

कुछ भी नहीं मैंने सुना है आप कहते हैं कि प्राप्त होता? खैर, न ही उनकी मनमाने ढंग से आवश्यकता होती है जिसे शायद किसी ऐसे व्यक्ति द्वारा रखा जाता है जो लंबे समय से कंपनी छोड़ देता है, और/या क्योंकि उन्हें तैनाती के अन्य रूपों के साथ परिचालन से निपटने के लिए आत्मविश्वास/अनुभव/ज्ञान की कमी होती है। उचित परिचालन प्रक्रियाओं (आलस्य) स्थापित करने के लिए आवश्यक कार्य को छोड़कर आपकी सेवा को तैनात करने से इनकार करने का कोई विशेष कारण नहीं है।

बस भावना उनके नियमों का पत्र, नहीं पालन करें, और ईमानदारी से कहूं तो अगर आपके कार्यान्वयन के बारे में पूछा। वे दिमाग में नहीं होंगे।

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

+0

एक माइक्रो सेवा वातावरण, जो के बारे में एक सेवा परवाह करता है में जाओ, नोड में एक और, एक और Dropwizard संभवतः का उपयोग कर में लिखा जा रहा। सेवाएं वैसे भी छोटी हैं, और आसानी से प्रतिस्थापित किया जा सकता है यदि कोई भी भाषा या ढांचे से परिचित नहीं है। लेकिन अगर आप एक J2ee ढेर है, ऑप्स है कि यह और डेवलपर्स कि इसे बनाए रखने चलाते हैं, तो आप बस नहीं इसके साथ दूर होने की, जब तक आप इसके लिए बहुत अच्छा कारण था (और यह पहले से चर्चा की) किया है जा रहे हैं। यह मानते हुए कि ये कर्मचारी लंबे समय से चले गए हैं या यहां तक ​​कि मृत भी आपको दूर नहीं ले पाएंगे। सख्त आवश्यकताओं को पूरा नहीं करने का मतलब कोई वेतन या अदालत नहीं होगा। –

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

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