High Concurrency Patterns Rehberi

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:İçindekilerListeyi göstermek

Google News Google News Flipboard Flipboard Sesli oku Yazıyı beğen Favorilere Ekle 0 Yorumlar
Daha fazla

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:

  1. Bir mesaj alır

  2. Mesajı işler

  3. Yeni mesajlar gönderebilir

  4. Yeni actor oluşturabilir

  5. 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)

class Counter extends Actor {
var count = 0

def receive = {
case "inc" => count += 1
case "get" => sender ! count
}
}


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)

func main() {
ch := make(chan int)

go func() {
ch <- 42
}()

fmt.Println(<-ch)
}


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ığı

  1. Event loop tek bir thread’de sürekli döner

  2. Yeni bir IO olayı yakalanır (read, write, connect…)

  3. Olay uygun handler’a yönlendirilir

  4. Handler non-blocking şekilde işi yapar

  5. 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.

Yazar Hakkında

Benzer Yazılar

Bir Cevap Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.

0/30 karakter