मैं एक साधारण परिदृश्य के लिए एक छोटे से परीक्षण लिखा है:Redis/RabbitMQ - - पब/उप प्रदर्शन
एक प्रकाशक और एक ग्राहक
प्रकाशक 1000000 संदेशों
सब्सक्राइबर 1000000 संदेश प्राप्त भेज
खरगोश एमक्यू, प्रशंसक एक्सचेंज, रैबिटएमक नोड प्रकार राम के साथ पहला परीक्षण राम: 320 सेकंड
रेडिस, मूल पी के साथ दूसरा परीक्षण ub/उप: 24 सेकंड
क्या मुझे कुछ याद आ रही है? ऐसा कोई अंतर क्यों है? क्या यह एक विन्यास समस्या है या कुछ?
पहला परिदृश्य: ग्राहक के लिए एक node.js प्रक्रिया, प्रकाशक के लिए एक, प्रत्येक एक, amqp नोड मॉड्यूल के साथ rabbitmq के लिए एक कनेक्शन। दूसरा स्कैनारियो: ग्राहक के लिए एक node.js प्रक्रिया, प्रकाशक के लिए एक, प्रत्येक को रेडिस के लिए एक कनेक्शन मिला।
किसी भी मदद को समझने का स्वागत है ... यदि आवश्यक हो तो मैं कोड साझा कर सकता हूं।
मैं इन सब के लिए बिल्कुल नया हूं। मुझे क्या चाहिए, एक उच्च प्रदर्शन पब/उप संदेश प्रणाली है। मैं क्लस्टरिंग क्षमताओं को देखना चाहता हूं।
अपने परीक्षण चलाने के लिए, मैं सिर्फ RabbitMQ सर्वर (डिफ़ॉल्ट कॉन्फ़िगरेशन) को लॉन्च करने और मैं करने के लिए उपयोग निम्नलिखित
Publisher.js
var sys = require('sys');
var amqp = require('amqp');
var nb_messages = process.argv[2];
var connection = amqp.createConnection({url: 'amqp://guest:[email protected]:5672'});
connection.addListener('ready', function() {
exchangeName = 'myexchange';
var start = end = null;
var exchange = connection.exchange(exchangeName, {type: 'fanout'}, function(exchange){
start = (new Date()).getTime();
for(i=1; i <= nb_messages; i++){
if (i%1000 == 0){
console.log("x");
}
exchange.publish("", "hello");
}
end = (new Date()).getTime();
console.log("Publishing duration: "+((end-start)/1000)+" sec");
process.exit(0);
});
});
Subscriber.js
var sys = require('sys');
var amqp = require('amqp');
var nb_messages = process.argv[2];
var connection = amqp.createConnection({url: 'amqp://guest:[email protected]:5672'});
connection.addListener('ready', function() {
exchangeName = 'myexchange';
queueName = 'myqueue'+Math.random();
var queue = connection.queue(queueName, function (queue) {
queue.bind(exchangeName, "");
queue.start = false;
queue.nb_messages = 0;
queue.subscribe(function (message) {
if (!queue.start){
queue.start = (new Date()).getTime();
}
queue.nb_messages++;
if (queue.nb_messages % 1000 == 0){
console.log('+');
}
if (queue.nb_messages >= nb_messages){
queue.end = (new Date()).getTime();
console.log("Ending at "+queue.end);
console.log("Receive duration: "+((queue.end - queue.start)/1000));
process.exit(0);
}
});
});
});
क्या आपको इसका उत्तर मिला है? –