SORU
2 EYLÜL 2010, PERŞEMBE


Nasıl node.js hala İpler DAHİLİ olarak kullanır zaman doğal olarak daha hızlıdır?

Sadece aşağıdaki video izledi: Introduction to Node.js ve hala hız faydaları nasıl anlamıyorum.

Esas olarak, bir noktada Ryan Dahl (Node.js " yaratıcı) node.js olay döngü parçacığı tabanlı yerine göre olduğunu söylüyor. Konuları pahalı ve sadece eşzamanlı programlama uzmanlar için kullanılmak üzere bırakılmalıdır.

Daha sonra, o da mimarlık kendi iş Parçacığı havuzu içten olan temel C uygulaması olan node.js yığını gösterir. Yani açıkçası Node.js geliştiriciler asla kendi konuları başlaması veya iş parçacığı havuzu doğrudan kullanmak istiyorsunuz...çağrı destek uyumsuz kullanıyorlar. Anladığım kadarıyla bu kadar.

Anlamadığım nokta bu Node.js hala kullanıyor konuları...sadece gizleme uygulaması nasıl daha hızlı eğer 50 kişi istek 50 dosya (şu anda hafıza) o zaman değil mi 50 konuları gerekli?

Tek fark yönetilen bu yana içten node.js geliştirici dişli ayrıntıları kodu yok ama hala iş IO (engelleme) işlemi için kullanıyor altında olma istekleri dosya.

Bu yüzden gerçekten sadece bir sorun var () iş parçacığı alarak ve bu sorun hala devam ederken, bunu gizlemek değil: özellikle birden çok iş parçacığı, konu değiştirme, ölü-kilit...vs?

Ben hala burada anlamıyorum biraz detaylı olmalı.

CEVAP
2 EYLÜL 2010, PERŞEMBE


Aslında birkaç farklı şey burada birleştirmek. Ama konuları gerçekten çok zor Mim ile başlar. Eğer sabit değillerse, 1 iş parçacığı kullanırken daha yüksektir) bu yüzden böcek ve 2 nedeniyle) onları mümkün olduğunca verimli bir şekilde kullanma. (2) hakkında soruyorsun.

Bir istek gelir ve bazı sorgu çalıştırmak ve daha sonra bu sonuçlar ile ne yapacağın örnekleri hakkında veriyor, sanırım. Standart prosedür bir şekilde yazmak, kod şöyle olabilir:

result = query( "select smurfs from some_mushroom" );
// twiddle fingers
go_do_something_with_result( result );

Eğer istek geliyor yukarıdaki kodu çalıştırdığınızda, yeni bir iş parçacığı oluşturmak için neden bir konu orada oturuyor, hiçbir şey query() çalışırken yaparken. (Apache, Ryan göre, tek bir iş parçacığı nginx değil çünkü bahsettiği durumlarda iyi performans ise orijinal isteğini yerine getirmek için kullanıyor.)

Eğer gerçekten zeki olsaydın şimdi, sorguyu çalıştırdığınız sırada yukarıdaki kod çevreye gidip başka yapabileceği bir şekilde ifade eder:

query( statement: "select smurfs from some_mushroom", callback: go_do_something_with_result() );

Bu node.js ne temelde. Sen temelde dekorasyondan şekilde uygun çünkü Dili ve çevre, dolayısıyla noktaları hakkında kapatma -- kodunda böyle bir ortam olabilir zeki hakkında ne çalışır ve ne zaman. Bu şekilde, node.js değilyeniasenkron icat anlamda O böyle bir şey iddia değil () I/, ama ifade şekli biraz farklı o yeni.

Not: ne zaman söyledim ortamı olabilir zeki hakkında ne çalışır ve ne zaman, özellikle söylemek istediğim, o konu eskiden başlatmak için bazı I/O-ebilmek şimdi var olmak kullanılmış için kolu başka bir isteği, ya da bir hesaplama yapılabilir paralel, veya başka bir paralel G/Ç (emin değilim düğüm sofistike başlatmaya yetecek kadar fazla çalışma için aynı istek, ama olayı anladınız.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008
  • RickardRick

    RickardRick

    9 Mart 2007