2012-04-26 41 views
9

मैं jboss7 पर एक नियमित जावा ईई एप्लिकेशन डाल रहा हूं जो डेटा स्तर में जेपीए का उपयोग करेगा। मैं इस एप्लिकेशन को ऐसा करना चाहता हूं कि यह लोड के साथ स्केल हो। हालांकि यह स्पष्ट है कि वेब स्तरीय को कैसे बढ़ाया जाए: अधिक मशीनें बनाएं और उन्हें लोड बैलेंसर के पीछे फेंक दें, डेटा स्तरीय स्केलिंग कम है।स्केलिंग और क्लस्टरिंग जेपीए

मैं शायद अपने डेटाबेस (MySQL) को क्लस्टर कर सकता हूं। Stil, जो जेपीए परत unclustered छोड़ देता है। आदर्श रूप में, जेपीए MySQL द्वारा समर्थित (क्लस्टर) मेमोरी कैशिंग में उपयोग करके स्केल करेगा।

जब मैं चारों ओर देखता हूं, जेपीए स्केलिंग के आसपास की सभी जानकारी 3-4 साल पुरानी प्रतीत होती है। लोग ehcache, memcached और infinispan के बारे में बात करते हैं। मुझे यकीन नहीं है कि यह अभी भी चालू है या नहीं।

क्या कोई मुझे जावा ईई क्लस्टरिंग और स्केलिंग में विशेष रूप से डेटा स्तर में कला की स्थिति बता सकता है।

+0

मुझे पियेटर और जेम्स से अद्भुत जवाब मिल गए।यह दुर्भाग्यपूर्ण एसओएफ केवल मुझे सही जवाब के रूप में चिह्नित करने देगा। दोनों के लिए धन्यवाद। इसके बाद, मुझे यह पता लगाने की ज़रूरत है कि कैशिंग में सबसे अच्छी नस्ल क्या है: मैं मेमकैड के अलावा कुछ भी क्यों उपयोग करूंगा। – Raj

उत्तर

6

विभिन्न कैशिंग रणनीतियों अभी भी जेपीए/हाइबरनेट को मापने का तरीका है (आपने मूल रूप से अपने प्रश्न में सबसे लोकप्रिय विकल्प नामित किए हैं)। जहां तक ​​मुझे पता है, इस क्षेत्र में 4-5 साल से कुछ भी असाधारण खुशी नहीं है। एक और विकल्प जिसका आपने उल्लेख नहीं किया है वह जेबॉस कैश है। तो जेपीए/हाइबरनेट के लिए दूसरा स्तर कैश अभी भी इस क्षेत्र में नियम करता है।

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

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

+0

हाय पियेटर, आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे जेडीबीसी टेम्पलेट हेल्पर्स के बारे में अधिक जानने में दिलचस्पी है। क्या कोई अच्छा पॉइंटर्स हैं? – Raj

+0

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jdbc.html एक अच्छा पढ़ा गया है। किताबें भी हैं, "स्प्रिंग इन एक्शन" ठीक है –

+0

लिंक के लिए धन्यवाद, पियेटर। – Raj

6

कई समाधान कर रहे हैं, समाधान की दो मुख्य श्रेणियाँ हैं:

  • डेटाबेस
  • स्केलिंग एक संकुल कैश का उपयोग कर डेटाबेस भार को कम करने

EclipseLink डेटा विभाजन डेटा sharding के लिए समर्थन करता है डेटाबेस उदाहरणों के एक सेट में,

देखें: http://java-persistence-performance.blogspot.com/2011/05/data-partitioning-scaling-database.html

तुम भी MySQL क्लस्टर उपयोग कर सकते हैं,

देखें: http://www.mysql.com/products/cluster/

ओरेकल TopLink ग्रिड एक वितरित कैश के रूप में ओरेकल जुटना साथ एकीकरण के लिए EclipseLink जेपीए सहायता प्रदान करता है,

देखें: http://www.oracle.com/technetwork/middleware/ias/tl-grid-097210.html

EclipseLink का कैश कैश समन्वय के माध्यम से क्लस्टरिंग का समर्थन करता है,

देखें: http://wiki.eclipse.org/EclipseLink/Examples/JPA/CacheCoordination

+0

हाय जेम्स, आपकी प्रतिक्रिया के लिए धन्यवाद। हम दोनों विफलता के किसी भी बिंदु को स्केल और टालने के लिए करना चाहते हैं। मेरी सभी जांच में, memcached "नस्ल का सबसे अच्छा" लगता है: इसका व्यापक समर्थन है और ऐसा लगता है कि कोई अन्य कैश क्या करेगा। तुम क्या सोचते हो? – Raj

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