2008-10-08 71 views
13

के लिए वितरित ईवेंट हैंडलिंग तंत्र मैं जावा में एक उचित तेज़ इवेंट हैंडलिंग तंत्र की तलाश कर रहा हूं ताकि विभिन्न होस्टों पर चल रहे विभिन्न जेवीएम में ईवेंट उत्पन्न और संभाल सकें।जावा

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

क्या किसी को बिल के अनुरूप किसी भी कार्यान्वयन के बारे में पता है?

संपादित करें: प्रदर्शन को इंगित करने के लिए संख्याओं को रखना थोड़ा मुश्किल है। लेकिन उदाहरण के लिए, यदि आप घटनाओं का उपयोग करके दिल की धड़कन तंत्र को लागू करते हैं और दिल की धड़कन अंतराल 5 सेकंड है, तो दिल की धड़कन रिसीवर को एक या दो कहने के भीतर एक दिल की धड़कन प्राप्त होनी चाहिए।

आम तौर पर, हल्के कार्यान्वयन से अच्छा प्रदर्शन मिलता है। एक वेब सर्वर या किसी भी प्रकार के केंद्रीकृत हब से जुड़े एक ईवेंट हैंडलिंग तंत्र में अच्छा प्रदर्शन करने के लिए शक्तिशाली हार्डवेयर (निश्चित रूप से हल्के वजन) की आवश्यकता होती है जो मैं ढूंढ रहा हूं।

+0

ब्रश करने की आवश्यकता है थोड़ा और विवरण चोट नहीं पहुंचाएंगे; उदाहरण के लिए, क्या इसे स्थानीय नेटवर्क या दूरस्थ रूप से वितरित किया जा रहा है? क्लाइंट-सर्वर या पीयर-टू-पीयर? – Viruzzo

उत्तर

2

एएमक्यूपी (उन्नत संदेश क्विकिंग प्रोटोकॉल) - अधिक जानकारी: http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol शायद आप जो खोज रहे हैं।

यह अपने उच्च प्रदर्शन की आवश्यकताओं के लिए वित्तीय सेवा कंपनियों द्वारा इस्तेमाल किया जाता है - http://cwiki.apache.org/qpid/

OpenAMQ - - http://www.openamq.org/ एक पुराने संदर्भ कार्यान्वयन है अपाचे एक कार्यान्वयन के लिए जा रहा है।

3

आपके उपयोग के मामले के आधार पर, Terracotta एक शानदार विकल्प हो सकता है।

1

जो भी उपकरण आप उपयोग करते हैं, मैं आपके एप्लिकेशन तर्क से मिडलवेयर एपीआई को छिपाने की सलाह दूंगा। उदाहरण के लिए यदि आपने Apache Camel approach to hiding middleware का उपयोग किया है तो आप आसानी से AMQP से SEDA से JMS तक ActiveMQ से जावास्पेस तक अपने सटीक आवश्यकताओं के आधार पर अपने स्वयं के कस्टम MINA परिवहन में स्विच कर सकते हैं।

आप एक संदेश दलाल उपयोग करने के लिए मैं Apache ActiveMQ जो largest most active community behind it दोनों अपाचे और outside it अंदर के साथ सबसे लोकप्रिय और शक्तिशाली खुला स्रोत संदेश दलाल है का उपयोग कर की सलाह देते हैं चाहते हैं।

6

Hazelcast विषय एक वितरित पब-सब संदेश समाधान है।

public class Sample implements MessageListener { 

    public static void main(String[] args) { 
     Sample sample = new Sample(); 
     Topic topic = Hazelcast.getTopic ("default"); 
     topic.addMessageListener(sample);  
     topic.publish ("my-message-object"); 
    } 

    public void onMessage(Object msg) { 
     System.out.println("Message received = " + msg); 
    } 
} 

हैज़लकास्ट वितरित कतार, मानचित्र, सेट, सूची पर ईवेंट का भी समर्थन करता है। सभी घटनाओं का भी आदेश दिया जाता है।

सादर,

-talip

http://www.hazelcast.com

3

वितरित घटना के लिए आप Esper यह इस्तेमाल कर सकते हैं एक दोहरी सीपीयू 2GHz इंटेल आधारित हार्डवेयर पर करने के लिए 500 000 घटना/s तक संसाधित कर सकते हैं प्रसंस्करण।यह बहुत स्थिर है क्योंकि कई बैंक इस समाधान का उपयोग करते हैं। यह वसंत जेएमएस टेम्पलेट्स के आधार पर जेएमएस इनपुट और आउटपुट एडाप्टर का समर्थन करता है। तो आप इवेंट प्रोसेसिंग के लिए किसी भी जेएमएस कार्यान्वयन का उपयोग कर सकते हैं, यानी ActiveMQ

0

Avis event router आपकी आवश्यकताओं के लिए उपयुक्त हो सकता है। यह निकट-वास्तविक समय घटना वितरण के लिए पर्याप्त तेज़ है, जैसे दूरस्थ माउस नियंत्रण के लिए माउस ईवेंट भेजना (एक एप्लिकेशन जिसे हम इसे दैनिक रूप से उपयोग करते हैं)।

एविस का भी चैट, वर्चुअल उपस्थिति और स्मार्ट रूम ऑटोमेशन के लिए उपयोग किया जा रहा है जहां आम तौर पर 10-20 कंप्यूटर एविस आधारित मैसेजिंग बस पर संचार कर रहे हैं। इसके वाणिज्यिक चचेरे भाई (मंतर एल्विन) का उपयोग उच्च मात्रा के वाणिज्यिक व्यापार कार्यक्रम प्रसंस्करण के लिए किया जाता है।

1

ZeroMQ - http://www.zeromq.org/

हालांकि यह एक परिवहन परत है, यह घटना से निपटने के लिए तैयार किया जा सकता।

1

अक्का (http://akka.io/) पर एक नज़र डालें। यह जावा और स्कैला एपीआई दोनों के साथ जेवीएम के लिए एरलांग के रूप में एक ही नस में एक वितरित अभिनेता मॉडल प्रदान करता है।

0

आपको जावा में वितरित ईवेंट हैंडलिंग के लिए Observer Design pattern लागू करने की आवश्यकता है। मैं इसे प्राप्त करने के लिए MongoDB कैप्ड संग्रह और पर्यवेक्षकों का उपयोग करके ईवेंट स्ट्रीमिंग का उपयोग कर रहा हूं।

आप एक आर्किटेक्चर बना सकते हैं जिसमें आपका ट्रिगर्स कैप्ड संग्रह में एक दस्तावेज़ प्रकाशित करता है और आपका पर्यवेक्षक थ्रेड एक ट्यूटोरियल कर्सर का उपयोग करके इसके लिए इंतजार कर रहा है। यदि आपने ऊपर जो कहा है उसे समझ में नहीं आया तो आपको अपने MongoDB और java skills