30-09-2023, Saat: 18:34
Node.js'in çalışma prensibi asenkron, olay sürücülü ve tek iş parçacıklı (single-threaded) bir yapıya dayanır. İşte Node.js'in çalışma prensiplerinin ana hatları:
1. Tek İş Parçacıklı (Single-Threaded) Model: Node.js, bir işlem (process) içinde yalnızca tek bir iş parçacığı (thread) kullanır. Bu, geleneksel sunucu tarafı programlamadan farklıdır. Diğer sunucu teknolojileri genellikle çoklu iş parçacıkları veya işlem kullanırken, Node.js tek bir iş parçacığı ile çalışır. Bu iş parçacığı, olay döngüsü (event loop) olarak adlandırılan ana çalışma mekanizmasını yönetir.
2. Asenkron İşlemler: Node.js, asenkron işlem modelini benimser. Bu, işlemlerin sırayla beklemek yerine, bir işlemin sonuçlarını beklerken diğer işlemleri işleme devam etmesini sağlar. Asenkron yapı, girdi/çıktı işlemlerinin verimli bir şekilde yönetilmesine olanak tanır ve aynı iş parçacığında birden fazla işlemin aynı anda çalışmasını sağlar.
3. Olay Sürücülü (Event-Driven) Model: Node.js, olay tabanlı bir programlama modelini benimser. Olaylar (events), belirli olaylar veya durumlar gerçekleştiğinde tetiklenen işlevler (callback functions) ile ilişkilendirilir. Örneğin, bir HTTP sunucusu istek aldığında veya bir dosya okuma işlemi tamamlandığında bir olay tetiklenebilir. Bu, uygulamanızın verimli bir şekilde olaylara tepki vermesini sağlar.
4. İş Parçacığı Havuzu: Node.js, CPU yoğun işlemler gibi uzun süren işlemleri işlemek için iş parçacığı havuzları kullanabilir. Bu sayede tek iş parçacığının donmaması ve diğer işlemlerin sürdürülmesi sağlanır.
5. Non-Blocking I/O: Node.js, girdi/çıktı işlemlerini (I/O) non-blocking (engelleme yapmayan) şekilde yönetir. Bu, dosya okuma, ağ isteği gibi işlemlerin beklemeksizin devam etmesini sağlar ve uygulamanın daha verimli çalışmasını sağlar.
Node.js, bu temel prensipleri kullanarak ölçeklenebilir ve yüksek performanslı ağ uygulamaları geliştirmek için ideal bir platform sunar. Olay tabanlı ve asenkron yapı, çok sayıda kullanıcıya hizmet veren web sunucuları, API'ler ve uygulamalar gibi görevler için Node.js'i tercih edilen bir çözüm haline getirir.
![[Resim: nodejs_architecture_5ceb2c2714.png]](https://s3.eu-central-1.amazonaws.com/cdn.cangokceaslan.com/nodejs_architecture_5ceb2c2714.png)
1. Tek İş Parçacıklı (Single-Threaded) Model: Node.js, bir işlem (process) içinde yalnızca tek bir iş parçacığı (thread) kullanır. Bu, geleneksel sunucu tarafı programlamadan farklıdır. Diğer sunucu teknolojileri genellikle çoklu iş parçacıkları veya işlem kullanırken, Node.js tek bir iş parçacığı ile çalışır. Bu iş parçacığı, olay döngüsü (event loop) olarak adlandırılan ana çalışma mekanizmasını yönetir.
2. Asenkron İşlemler: Node.js, asenkron işlem modelini benimser. Bu, işlemlerin sırayla beklemek yerine, bir işlemin sonuçlarını beklerken diğer işlemleri işleme devam etmesini sağlar. Asenkron yapı, girdi/çıktı işlemlerinin verimli bir şekilde yönetilmesine olanak tanır ve aynı iş parçacığında birden fazla işlemin aynı anda çalışmasını sağlar.
3. Olay Sürücülü (Event-Driven) Model: Node.js, olay tabanlı bir programlama modelini benimser. Olaylar (events), belirli olaylar veya durumlar gerçekleştiğinde tetiklenen işlevler (callback functions) ile ilişkilendirilir. Örneğin, bir HTTP sunucusu istek aldığında veya bir dosya okuma işlemi tamamlandığında bir olay tetiklenebilir. Bu, uygulamanızın verimli bir şekilde olaylara tepki vermesini sağlar.
4. İş Parçacığı Havuzu: Node.js, CPU yoğun işlemler gibi uzun süren işlemleri işlemek için iş parçacığı havuzları kullanabilir. Bu sayede tek iş parçacığının donmaması ve diğer işlemlerin sürdürülmesi sağlanır.
5. Non-Blocking I/O: Node.js, girdi/çıktı işlemlerini (I/O) non-blocking (engelleme yapmayan) şekilde yönetir. Bu, dosya okuma, ağ isteği gibi işlemlerin beklemeksizin devam etmesini sağlar ve uygulamanın daha verimli çalışmasını sağlar.
Node.js, bu temel prensipleri kullanarak ölçeklenebilir ve yüksek performanslı ağ uygulamaları geliştirmek için ideal bir platform sunar. Olay tabanlı ve asenkron yapı, çok sayıda kullanıcıya hizmet veren web sunucuları, API'ler ve uygulamalar gibi görevler için Node.js'i tercih edilen bir çözüm haline getirir.
![[Resim: nodejs_architecture_5ceb2c2714.png]](https://s3.eu-central-1.amazonaws.com/cdn.cangokceaslan.com/nodejs_architecture_5ceb2c2714.png)