Modern yazılım mimarisinde yüksek eşzamanlılık (high concurrency), özellikle milyonlarca kullanıcıya hizmet veren uygulamalarda kritik bir gereksinimdir. Bu nedenle Actor Model, CSP ve Reactor Pattern gibi concurrency modelleri; CPU verimliliğini artırmak, lock contention’ı azaltmak ve sistemlerin ölçeklenebilirliğini yükseltmek için kullanılır.
1. Actor Model
Actor Model, tüm hesaplamaları “actor” adı verilen bağımsız nesneler üzerinden gerçekleştirir. Actor’lar:
✔ Kendi state’ine sahiptir
✔ Kendi işlemlerini yürütür
✔ Tek iletişim yolu: message passing (mesaj gönderme)
✔ Paylaşılan bellek yoktur
✔ Race condition riski minimumdur
Actor Model Nasıl Çalışır?
Her actor:
-
Bir mesaj alır
-
Mesajı işler
-
Yeni mesajlar gönderebilir
-
Yeni actor oluşturabilir
-
Kendi state’ini güncelleyebilir
Bu yapı tamamen async – non-blocking çalışır.
Actor’ın Avantajı
-
Paylaşılan bellek yok → Lock yönetimi yok
-
Dağıtık sistemlerde doğal ölçekleme
-
Çok çekirdekte maksimum verim
-
Arıza izolasyonu (fault tolerance)
Actor Model Nerelerde Kullanılır?
-
WhatsApp mesaj altyapısı
-
Netflix aktör tabanlı iş sistemleri
-
Oyun sunucularının gerçek zamanlı entity yönetimi
-
IoT mesajlaşma sistemleri
-
Erlang/Elixir ile telecom servisleri
Kısa Actor Model Örneği (Akka)
2. CSP (Communicating Sequential Processes)
CSP, Go programlama dilinin kalbindeki concurrency modelidir ve “process + channel” mantığıyla çalışır.
Temel yapı:
-
Birçok bağımsız process (goroutine)
-
Aralarında channel ile veri alışverişi
-
Paylaşılan state yok
-
Senkron/asenkron kanal desteği
Çok basit formülü:
“Paylaşarak değil, iletişim kurarak memory’yi yönet.”
CSP’nin Sağladıkları
-
Deadlock riski düşüktür (doğru tasarlandığında)
-
Bir işi küçük görev parçalarına bölerek pipeline oluşturma imkânı
-
Doğal concurrency → CPU çekirdeklerini maksimum kullanma
CSP Kullanım Örnekleri
-
Yüksek trafikli API servisleri
-
Queue bazlı işleyiciler
-
Log işleme sistemleri
-
Video encode pipeline
-
Gerçek zamanlı sensör veri akışları
CSP Basit Örneği (Go)
3. Reactor Pattern
Reactor Pattern, özellikle yüksek IO trafiği olan sunucular için tasarlanmış bir concurrency modelidir.
Kullanıldığı yerler:
-
Node.js (event loop)
-
Java NIO
-
Netty
-
libuv
-
Nginx
-
Redis
Reactor Mantığı
-
Event loop tek bir thread’de sürekli döner
-
Yeni bir IO olayı yakalanır (read, write, connect…)
-
Olay uygun handler’a yönlendirilir
-
Handler non-blocking şekilde işi yapar
-
Reactor ile CPU boşa gitmez, context switch maliyeti yoktur
Reactor Pattern Avantajları
-
Çok düşük latency
-
Yüksek throughput
-
Non-blocking IO
-
Az thread → düşük CPU tüketimi
Kısaca:
10.000+ client tek thread ile yönetilebilir.
Reactor Basit Model Şeması
-
Event Loop
-
Selector / Epoll
-
Event Demultiplexer
-
Event Handlers
Actor vs CSP vs Reactor – Karşılaştırma
| Özellik | Actor Model | CSP | Reactor |
|---|---|---|---|
| İletişim Yöntemi | Message Passing | Channel | Event Loop |
| Paylaşılan Bellek | Yok | Yok | Genelde Yok |
| Kullanım Alanı | Dağıtık Sistem, Oyun Sunucuları | Pipeline, Backend | IO Ağırlıklı Sunucular |
| Öne Çıkan Dil | Elixir, Erlang, Scala | Go | Java, JS, C |
| İş Modeli | Aktörler bağımsız | Görev + Kanal | Handler + Event Loop |
Gerçek Dünya Örnekleri
-
Netflix → Actor tabanlı concurrency
-
WhatsApp → Erlang – milyon bağlantı
-
Nginx → Reactor pattern
-
Node.js → Tek thread event-loop
-
Go → CSP ile microservice mimarileri
-
Kafka → Yüksek concurrency event-stream
Sonuç
Actor Model, CSP ve Reactor Pattern; yüksek trafiğe sahip modern uygulamaların omurgasını oluşturan concurrency modelleridir. Her biri farklı kullanım alanlarına uygundur:
-
Actor: Dağıtık & State içeren sistemler
-
CSP: Pipeline & çok iş parçalı backend’ler
-
Reactor: IO yoğun sunucular
Hangisini seçeceğin tamamen iş yüküne, mimari yapıya ve geliştirdiğin dile bağlıdır.
Bir Cevap Yaz
E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.