- Back to Home »
- facebook uygulaması , Gerçek zamanlı , gerçek zamanlı web , gerçek zamanlı web uygulamaları , JavaScript , node.js , nodejs , oyun.. , real time web , twitter hashtag »
- Gerçek zamanlı web uygulamaları - Başlarken
Posted by :
Kadir ARLI
2 Mayıs 2013 Perşembe
İşte meşhur olacak çocuk nodeJS.
- nodeJS neden geliştirildi?
- nodeJS nedir, nasıl çalışır?
Günümüzde internet kullanıcılarının sayısı ve yaptığı işlem sayısı hızlı bir şekilde artmaktadır. İnternet üzerinden yayın yapan her sistemin bir maksimum kullanıcı ve işlem kapasitesi bulunmaktadır. Yayın yapan sistemler, bu kullanıcılara ve işlemlere göre sistemlerini geliştiriyorlardı. Yani ölçeklenebilirlik sorunu vardı. Bu sorunu belirli ölçüde aşmak mümkündü ama maliyet ve zaman istiyordu. İşte bu yüzden nodeJS geliştirildi.
Sunucu üzerinde javascript çalıştırmamıza olanak sağlayan ve google'ın V8 JS motorunu kullanan bir yapıdır. En önemli özelliği asenkron çalışmasıdır. Bu sayede milyonlarda işleme aynı anda cevap verebilir. nodeJS'yi daha iyi anlamak için bir alıntı ile devam edelim:
Starbucks, McDonalds veya buna benzer yerlere gittiniz mi ? Tezgahın arkasında hizmet veren çalışanları dikkatli bir şekilde gözlemlerseniz hiç bloklanmadan çalıştıklarını görürsünüz.
Yani sıradaki kişiye ne sipariş vereceği sorulur ve sonra alınan bu siparişi arka tarafa aktarılır ve hemen sıradaki diğer müşteriyle ilgilenir; Cafe Latte hazırlanınca kahveyi müşteriye verir (callback). Bu noktada Cafe Latte’nin hazırlanması bloklayıcı bir işlemdir ama bu bloklanma diğer müşterileri kabul etmeMEye neden olmaMAktadır. Bu akışta 1 çalışan birden çok kişiye bloklanmadan hızlı bir şekilde cevap verebilir.
Bu örneği yazılım dünyasına uyarlarsak; Cafe Latte’nin hazırlanmasını veritabanından veri çekmeye
benzetebiliriz; veritabanı işlemleri uygulama açısından bloklayıcı bir işlemlerdir. Eğer uygulamayı node.js ile yazarsanız, veritabanındaki bloklanma diğer kullanıcılara hizmet vermenizi etkilemeyecektir. Javascript ‘ın Callback yaklaşımı işte bu noktada çok iyi çözüm olmaktadır.
Node.js aynı starbucks çalışanı gibi bir hareket eder. Javascript’ın sunduğu ‘event driven‘ yapı sayesinde akışın bloklanma problemi ortadan kalkar. Buradaki en iyi nokta ise bu işlerin sadece BİR iş parçacığı (thread) ile gerçekleştirilmesidir.
Peki aksini düşünelim; starbucks ‘ın klasik teknolojilerde yazılan bir uygulama gibi işletildiğini hayal edin; Sıradaki müşteri Cafe Latte istiyor ve o müşterinin Cafe Latte’si hazırlanmadan başka hiç bir müşteri ile ilgilenilmiyor. Çok sıkıcı olurdu değil mi ?
Elbette Thread yapılarıyla klasik teknolojilerde bu sorunun üstesinden gelinebilir ama maliyetine katlanmak şartıyla. Ne kadar çok iş parçacığı (thread) o kadar risk ve yerine göre performans kaybı demektir. Node.js ‘ın tek bir iş parçacığı (thread) ile bloklanmadan çalışabilme imkanı sunması, onun getirdiği en büyük avantajlardan bir tanesidir.
V8'den kısaca bahsetmek gerekirse, Google tarafında C/C++ ile geliştirilen bir javascript derleyicisidir. Sanırım ortak bir kanıdır, C/C++ dillerinin diğer platfrom ve dillere göre hızlı olduğu. Aynı görevi karşılayan, C/C++ ile javascript ile yazılmış olan iki proje arasında 300-350 kat hız farkı olduğu yapılan testlerde ortaya çıkmıştır. Kısacası, NodeJS'in üstünde çalıştığı V8 ki C/C++ kullanmasına rağmen performans konusunda o kadar çok emek vermiş ki inanılmaz derecede hız kazanabiliyor.
nodeJS Kurulum
nodeJS Kurulum
Yorum Gönder