NONBLOCKING IO

Nonblocking IO uygulama içerisinde network requestleri, dosya işlemleri, database işlemleri gibi uzun sürecek işlemler sırasında js içerisinde zaten tek thread kullanıldığı için bu işlemleri event driven olarak tanımlayıp (mesela http request tanımlandığında bir event fırlat ve bu kod bloğu çalışsın gibi) kod bloğumuzun bloklanmadan çalışma prensibine dayanır.

Bu kullanım geleneksel back-end sistemlerine göre oldukça büyük performans artışı sağlar. Şöyle ki: farklı backend uygulama mimarilerinde kullanıcıdan gelen istek database ile işlem yapmak gerektiğinde kodumuz database’e istek attıktan sonra cevabı beklemeye koyulur ve bu bekleme esnasında aslında sistem kaynağı boşuna harcanır. Bu bekleme milisaniyeler olsa da hergün binlerce requesting geldiği bir sistemde milyonlarca database işlemi yapılır. Ve bu, doğal olarak çok büyük bir sistem kaynağının boş yere harcanması demektir.

NodeJS ise database’e gitmesi gereken durumda bir callback fonksiyonu oluşturarak database cevabı gelmesi durumunda bir event, emit edilerek callback metodunun işlemesi sağlanıyor. Bu bekleme esnasında Javascript Engine event loop’unu çalıştırmaya devam ederek başka işlemler yapmaya devam ediyor. Bu durumda sistem kaynağı bekleme esnasında boşuna harcanmaktan kurtulup diğer işlemlerde kullanılıyor.