2012-03-13 3 views
9

के लिए जावा वेब एप्लिकेशन पहली बार (उम्मीद है कि आखिरी नहीं) मेरे जीवन में मैं एक ऐसा एप्लीकेशन विकसित करूँगा जिसमें उपयोगकर्ताओं की एक बड़ी संख्या (लगभग 5000) को संभालना होगा और बहुत सारे डेटा प्रबंधित करना होगा। मैंने एक ऐसा एप्लीकेशन विकसित किया है जो बहुत सारे डेटा (लगभग 100 ~ जीबी डेटा का प्रबंधन करता है, आपके कई मानकों से इतना ज्यादा नहीं), लेकिन उपयोगकर्ता की गणना बहुत कम थी (लगभग 50)।5000 ~ उपयोगकर्ता

यहाँ उपकरण/चौखटे की सूची मुझे लगता है कि मैं का उपयोग किया जाएगा है:

  • Vaadin यूआई ढांचे
  • हाइबरनेट
  • PostgreSQL
  • अपाचे बिलाव
  • Memcached (सत्र से निपटने के लिए)

आवेदन मुख्य रूप से बी होगा ई एक कंपनी नेटवर्क के अंदर भागो। यह सर्वर के क्लस्टर पर चलाया जा सकता है या नहीं, इस बात पर निर्भर करता है कि कंपनी अपने जीवन को आसान बनाने के लिए कितना पैसा खर्च करना चाहती है।

तो आप मेरे विकल्पों के बारे में क्या सोचते हैं और मुझे सावधानी बरतनी चाहिए?

चीयर्स

+3

क्या आप कुल 5000 उपयोगकर्ताओं के बारे में बात कर रहे हैं, 5000 समवर्ती उपयोगकर्ता या 5000 समवर्ती अनुरोध? कुल मिलाकर – beny23

+0

5000 ~ उपयोगकर्ता, वे सभी एक ही समय क्षेत्र में हैं, इसलिए मुझे लगता है कि उनमें से अधिकतर एक ही समय में आवेदन का उपयोग करेंगे –

उत्तर

9

उत्तर, जैसा कि सभी प्रदर्शन/स्केलिंग से संबंधित मुद्दों के साथ है: यह निर्भर करता है।

आपकी पसंद के ढांचे में कुछ भी नहीं है जो मुझे लगता है कि यह बड़ी मात्रा में उपयोगकर्ताओं को संभालने में सक्षम नहीं होगा। लेकिन यह जानने के बिना कि आप वास्तव में क्या करना चाहते हैं या आपका बजट क्या है, एक तकनीक चुनना असंभव है।

सुनिश्चित करने के लिए कि आपके आवेदन स्केल करेगा/करते हैं, मैं निम्नलिखित पर विचार करेंगे:

  • प्रत्येक सत्र कम की स्मृति पदचिह्न रखें। उदाहरण के लिए, HttpSession में कैशिंग सामग्री आपके पास 50 हो सकती है, लेकिन आपके पास 5000 सत्र होने पर अच्छा विचार नहीं है।
  • डेटाबेस में जितना अधिक काम किया जा सकता है, उतना ही काम करें जितना कि स्थानांतरित किया जा रहा डेटा की मात्रा को कम करने के लिए (जैसे कि पंक्तियों के साथ तालिकाओं को देखते समय, सुनिश्चित करें कि आपके पास डेटाबेस में किया गया पेजिंग है (बल्कि राज्य है कि HttpSession अंदर रखा जाना कम करने के लिए वापस बिलाव 10,000 पंक्तियों हो रही है और फिर पहले 10 उठा ...)
  • प्रयास करें, यह बनाता क्लस्टर के लिए आसान है।

शायद सबसे महत्वपूर्ण सिफारिशें:

  • लोड का प्रयोग करें testi एनजी टूल्स अपने चरम भार और परे और परीक्षण अनुकरण करने के लिए। JMeter वह टूल है जिसका उपयोग मैं प्रदर्शन/लोड-परीक्षण के लिए करता हूं।

जब लोड परीक्षण, सुनिश्चित:

  • कि आप वास्तव में 5000 उपयोगकर्ताओं का उपयोग (ताकि 5000 HttpSession रों बनाई गई हैं) और डेटा की एक विस्तृत श्रृंखला का उपयोग करें (हमेशा कैश से टकराने से बचने के लिए)।

संपादित करें:

मुझे नहीं लगता कि 5000 उपयोगकर्ताओं है कि ज्यादा नहीं है और आप पा सकते हैं कि (प्रदर्शन के लिहाज से) आप केवल एक ही सर्वर की आवश्यकता (सर्वर के आकार और परिणाम पर निर्भर करता है लोड परीक्षण की, ज़ाहिर है, और आप फ़ेलओवर के लिए एक क्लस्टर समाधान वैसे भी लोड से निपटने (यानी अपने 5000 उपयोगकर्ताओं में से हर एक समवर्ती एक बटन मार दिया जाएगा नहीं करने के लिए विचार कर सकते हैं ...), आप लोड ऊपर जाने मिल जाएगा सुबह (यानी हर कोई लॉग इन करता है)

0

मैं अनुप्रयोग सर्वर के लिए Glassfish की सिफारिश अपाचे बिलाव सरल सामग्री उपलब्ध करा सकता है। और ग्लासफ़िश में जावा ईई विनिर्देश का पूर्ण कार्यान्वयन है।

+3

मुझे नहीं लगता कि इस तरह का एक विस्तृत विवरण मान्य है, आवश्यकताओं को जानने के बिना। वास्तव में यदि टोमकैट पर्याप्त है, तो सबसे सरल समाधान को ध्यान में रखना शायद एक अच्छी बात है क्योंकि इसमें पूर्ण जेईई स्टैक शामिल नहीं है। – beny23

+0

ग्लासफ़िश स्थिर सामग्री सर्वर (ग्रीज़ली) के साथ आता है। इसलिए, ईमानदार तुलना करने के लिए, किसी को ग्लासफ़िश के साथ पूरे बंडल, अर्थात् अपाचे HTTP सर्वर और इसके पीछे टोमकैट की तुलना करना होगा। – Rekin

5

आप अपने टोमकैट सर्वर के सामने एक अपाचे HTTP सर्वर पर विचार करना चाहेंगे। अपाचे प्रदान करेगा: संपीड़न, स्थैतिक कैशिंग, भार संतुलन और एसएसएल।

+2

मैं Nginx जैसे कुछ हल्के वजन का सुझाव दूंगा, उसके पास पहले से ही टोमकैट की शक्ति है। –

1

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

मैं अत्यधिक, इस ब्लॉग पोस्ट की सलाह देते हैं इसे और अधिक संक्षेप में यह कहते हैं की तुलना में मैं कर सकते हैं:

ORM is an anti-pattern

लेकिन मुझे माफ कर दो अगर मैं ORMs और विरोधी पैटर्न के बारे में है कि ब्लॉग से थोड़ा बोली:

कारण मैं ORM कहते हैं क्योंकि यह दो मापदंड AntiPatterns के लेखक मात्र बुरी आदतों से विरोधी पैटर्न भेद करने के लिए इस्तेमाल किया मेल खाता है एक विरोधी पैटर्न, है विशेष रूप से:

  • यह शुरू में लाभकारी प्रतीत होता है, लेकिन लंबे समय में अच्छा की तुलना में अधिक बुरे परिणामों
  • एक वैकल्पिक समाधान मौजूद है कि है साबित होता है और repeatable

आपका अन्य प्रौद्योगिकी विकल्पों लगते हैं ठीक। निजी तौर पर, मैं टोमकैट की तुलना में जेटी की तरफ झुकता हूं। एक कारण है कि Google इसे अपनी कई परियोजनाओं में एम्बेड करता है (लगता है कि जीडब्ल्यूटी और प्लेएन); यह एक छोटी codebase है और मैं अधिक सक्रिय रूप से अब है कि ग्रहण इस पर ले लिया है विकसित लगता है। बस मेरी विनम्र राय।

[अद्यतन] एक और लिंक, बहुत लंबा पढ़ा जाता है लेकिन वास्तुशिल्प निर्णय लेने पर, पढ़ना अच्छा होता है।

Object/Relational Mapping: The Vietnam of Computer Science

+0

जब आप इसे पूरी तरह समझने के बिना इसका उपयोग करते हैं तो हाइबरनेट खराब करें! याद रखें कि ** कोड ** की रखरखाव और परिवर्तन प्रबंधन आधुनिक दिन में भी एक प्रमुख चिंता है, कि कोई भी ** जेडीबीसी ** पर वापस क्यों जाना चाहता है। – ManuPK

3

Spring का उपयोग नहीं करने के लिए किसी भी कारण? यह वास्तव में उद्यम जावा अनुप्रयोगों में एक वास्तविक मानक बन गया।

वसंत लाखों डेवलपर्स द्वारा उपयोग किए जाने वाले आपके एंटरप्राइज़ जावा एप्लिकेशन विकास को बेहतर बनाने के लिए प्रौद्योगिकियों का एक अविश्वसनीय रूप से शक्तिशाली और लचीला संग्रह प्रदान करता है।

वसंत बहुत हल्का है और परतों की एक साफ जुदाई बनाने के द्वारा, एक मध्यम परत के रूप में रह सकते हैं vaadin जोड़ने और हाइबरनेट, वहाँ। वसंत लेनदेन प्रबंधन हाइबरनेट पर एक से भी बेहतर है। मैं सुझाव दूंगा कि आप इसके लिए तब तक जाएं जब तक आपके पास कोई मजबूत कारण न हो।

0

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

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