Neden Restify kullanmalıyım?
Vardı gereksinimi için inşa bir REST API node.js ve arıyordum daha hafif çerçeve daha express.js muhtemelen önler istenmeyen özellikleri gibi davranır bir ısmarlama çerçeve için yapı REST API. Onun girişten Restify aynı dava için tavsiye edilir.
Why use restify and not express? restify gibi görünüyordu okuma iyi bir seçimdir.
Ancak sürpriz bir yük ile de çalıştım zaman geldi.
Restify örnek bir DİNLENME API yaptım ve saniyede 1000 istekleri ile sular altında. Benim için sürpriz yol vermiyor bir süre sonra başladı. Aynı uygulama express.js tüm ele inşa edilmiştir.
Şu anda üzerinden API load başvuruyorum
var FnPush = setInterval(function() {
for(i=0;i<1000;i )
SendMsg(makeMsg(i));
}, 1000);
function SendMsg(msg) {
var post_data = querystring.stringify(msg);
var post_options = {
host: target.host,
port: target.port,
path: target.path,
agent: false,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
"connection": "close"
}
};
var post_req = http.request(post_options, function(res) {});
post_req.write(post_data);
post_req.on('error', function(e) {
});
post_req.end();
}
Var sonuçları mantıklı geliyor mu? Ve eğer açık ise bu senaryoda restify daha verimli? Yoksa onları test ettim bu şekilde herhangi bir hata mı?
yorumlarına yanıt olarak kurulmuştur
restify davranışı
1000'den fazla ger bir yük ile beslenen zaman.s 1015 ger dek sadece 1 sn alan işlemler durduruldu.s ve hiçbir şey yapmamak. yani. sayaç ben gelen istekleri sayım için uygulanan 1015 sonra artış durdu.
hatta 100 istek bir yük ile beslenen zaman. saniyede 1015 kadar alınan ve duyarlı olmayan ondan sonra gitti.
CEVAP
blog Bu PerfectAPİ ve Express.js ve Restify.js arasında bir karşılaştırma vardı ve sonucu İfade sorgular çok sayıda Restify daha iyi olduğunu, basit bir kıyaslama yaptımExpress ve Restify geçerli sürümleri kullanma
İşte test ifade etmek için kod
var express = require('express');
var app = express();
app.get('/hello/:name', function(req, res){
res.send('hello ' req.params.name);
});
app.listen(3000);
console.log('Listening on port 3000');
ve burada restify kodu
var restify = require('restify');
var server = restify.createServer();
server.get('/hello/:name', function(req, res, next) {
res.send('hello ' req.params.name);
});
server.listen(3000, function() {
console.log('Listening on port 3000');
});
Test için ApacheBench kullandım ve bu kullanmak için simple example
Sadece, sadece bu komutu kullanarak yükleyebilirsiniz sudo apt-get install apache2-utils
o zaman bu komut ab -n 10000 -c 100 http://127.0.0.1:3000/
test çalıştırabilirsiniz.
Sadece 10000 istekleri ile sunucu, 100 eşzamanlılık ile vurdu
ve bu sonuçları
Restify İçin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /hello/mark
Document Length: 12 bytes
Concurrency Level: 100
Time taken for tests: 2.443 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 1390000 bytes
HTML transferred: 120000 bytes
Requests per second: 4092.53 [#/sec] (mean)
Time per request: 24.435 [ms] (mean)
Time per request: 0.244 [ms] (mean, across all concurrent requests)
Transfer rate: 555.53 [Kbytes/sec] received
Connection Times (ms)
min mean[ /-sd] median max
Connect: 0 0 0.5 0 8
Processing: 5 24 4.5 23 40
Waiting: 5 24 4.5 23 40
Total: 12 24 4.5 23 40
ve Express
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /hello/mark
Document Length: 10 bytes
Concurrency Level: 100
Time taken for tests: 2.254 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 1890000 bytes
HTML transferred: 100000 bytes
Requests per second: 4436.76 [#/sec] (mean)
Time per request: 22.539 [ms] (mean)
Time per request: 0.225 [ms] (mean, across all concurrent requests)
Transfer rate: 818.89 [Kbytes/sec] received
Connection Times (ms)
min mean[ /-sd] median max
Connect: 0 0 0.5 0 7
Processing: 17 22 4.7 21 55
Waiting: 16 22 4.7 21 55
Total: 18 22 4.9 21 58
Karşılaştırma express daha hızlı restify daha ama restify blok yoktu ve tüm istekleri için yanıt görebilirsiniz.
Herhangi biri bu kriter deneyebilir ve istek sayısı ve iki üzerindeki etkisini görmek için eşzamanlı istek sayısı değiştirebilirsiniz.
Bir serialVersionUİD nedir ve neden ku...
JSON nedir ve neden kullanmalıyım?...
favicon.png vs favicon.ıco - PNG neden...
Neden karma fonksiyonları bir asal say...
C# Lambda ifadeleri: onları Neden kull...