Scala for Backend Engineering & Functional Programming · Ders

Akka Aktör Modelinin Temelleri

Eşzamanlı yürütme için Aktör Modeli'nin ilkelerini, aktör yaşam döngüsünü ve ileti aktarımını anlayın.

1. ders / 312 adım

Akka Aktör Modelinin Temelleri, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 3 dersten oluşur.

Eşzamanlılık zorluklarıyla karşılaşma

Modern uygulamalarda görevlerin çoğu zaman aynı anda çalışması gerekir. Buna eşzamanlılık denir. Eşzamanlılık güçlü olsa da beraberinde bazı zorluklar getirir.

  • Yarış durumları: Birden çok iş parçacığının paylaşılan verilere aynı anda erişip bunları değiştirmeye çalışması ve bunun öngörülemeyen sonuçlara yol açmasıdır.
  • Kilitlenmeler: İki veya daha fazla iş parçacığının, kaynakları birbirlerinin serbest bırakmasını sonsuza kadar bekleyerek engellenmiş durumda kalmasıdır.

Geleneksel iş parçacığı modelleri, bu sorunlarla uğraşırken karmaşık olabilir ve hataya açıktır.

Aktör modelini anlama

Aktör Modeli, eşzamanlılığı yönetmek için güçlü bir yol sunar. Aktörler belleği paylaşmak yerine yalnızca birbirlerine ileti göndererek iletişim kurar.

  • Yalıtım: Her aktörün, başka hiçbir aktörün doğrudan erişemediği kendi özel durumu vardır.
  • İleti geçişi: Aktörler, değiştirilemez iletileri birbirlerinin ileti kutularına göndererek etkileşir.
  • Eşzamansızlık: İleti gönderme engelleyici değildir; gönderen bir yanıt beklemez.

Aktörleri, her birinin kendi masası (durumu) ve posta hizmeti (ileti geçişi) olan bağımsız insanlar gibi düşünebilirsiniz.

Neden Akka'yı seçmelisiniz?

Akka, Aktör Modeli'ni Scala'ya (ve Java'ya) taşıyan açık kaynaklı bir araç setidir. Yüksek düzeyde eşzamanlı, dağıtık ve hatalara dayanıklı uygulamalar oluşturmak için tasarlanmıştır.

  • Sadelik: Akka, düşük düzeyli iş parçacığı ayrıntılarını soyutlayarak eşzamanlı programlamayı basitleştirir.
  • Ölçeklenebilirlik: Uygulamaları tek bir makineden makine kümesine kolayca ölçeklendirebilirsiniz.
  • Dayanıklılık: Hataları ele almak ve sistemlerin kendilerini iyileştirmesini sağlamak için yerleşik mekanizmalar sunar.

Akka, yoğun yük veya kısmi hatalar altında bile "sorunsuz çalışan" sistemler yazmanıza yardımcı olur.

Bir Akka aktörünün iç yapısı

Akka aktörü, eşzamanlılığın temel birimidir. Her aktörün şunları vardır:

  • Davranış: İletilere nasıl tepki verdiğiyle tanımlanır.
  • İleti kutusu: Gelen iletilerin sıraya alındığı yerdir. İletiler sırayla ve teker teker işlenir.
  • Özel durum: Yalnızca aktöre ait olan ve sadece aktörün kendisi tarafından değiştirilebilen verilerdir.
  • ActorRef: Bu aktöre ileti göndermek için kullanılan benzersiz adrestir.

Bu katı yalıtım, yarış durumları gibi yaygın eşzamanlılık hatalarını önler.

İlk ActorSystem'iniz

Aktörler oluşturmadan önce bir ActorSystem'e ihtiyacınız vardır. Bu, Akka için giriş noktasıdır ve kapsamındaki tüm aktörleri yönetir.

Zamanlama, yapılandırma ve denetim için bir hiyerarşi (bunu daha sonra ele alacağız) gibi hizmetler sağlar.

Bir tane oluşturmayı deneyin:

import akka.actor.ActorSystem

object Main extends App {
  // Create an ActorSystem
  val system = ActorSystem("MyActorSystem")
  println(s"ActorSystem created: ${system.name}")

  // Terminate the system when done (important for clean shutdown)
  system.terminate()
}

İlk aktörünüzü oluşturma

Bir aktör oluşturmak için Akka'nın Actor özelliğini genişleten bir sınıf tanımlamanız ve receive yöntemini uygulamanız gerekir.

receive yöntemi, aktörünüzün gelen iletileri nasıl işlediğini tanımlar. İleti türleriyle eşleşen bir kısmi işlevdir.

import akka.actor.Actor

class GreeterActor extends Actor {
  def receive: Receive = {
    case message: String =>
      println(s"Greeter received: $message")
  }
}

Aktörleri ve ActorRef'i oluşturma

Aktörler, ActorSystem'in actorOf yöntemi kullanılarak oluşturulur (veya "başlatılır"). Bu yöntem bir ActorRef döndürür.

ActorRef, bir aktöre yönelik hafif ve serileştirilebilir bir başvurudur. Bunu aktöre ileti göndermek için kullanırsınız; aktör örneğiyle hiçbir zaman doğrudan etkileşime girmezsiniz.

import akka.actor.{ActorSystem, Props, Actor}

class GreeterActor extends Actor {
  def receive: Receive = {
    case message: String =>
      println(s"Greeter received: $message")
  }
}

object Main extends App {
  val system = ActorSystem("MyActorSystem")

  // Create an actor and get its ActorRef
  val greeterRef = system.actorOf(Props[GreeterActor], "greeter")
  println(s"Greeter actor created with path: ${greeterRef.path}")

  system.terminate()
}

Aktörlere ileti gönderme

Aktörler arasındaki iletişim yalnızca iletiler aracılığıyla gerçekleşir. ! (tell) işleciyle bir ActorRef'e ileti gönderirsiniz.

İletiler eşzamansız olarak gönderilir ve genellikle değiştirilemez durum sınıfları veya String gibi basit türlerdir.

import akka.actor.{ActorSystem, Props, Actor}

class GreeterActor extends Actor {
  def receive: Receive = {
    case message: String =>
      println(s"Greeter received: $message")
  }
}

object Main extends App {
  val system = ActorSystem("MyActorSystem")

  val greeterRef = system.actorOf(Props[GreeterActor], "greeter")

  // Send a message to the greeter actor
  greeterRef ! "Hello Akka!"
  greeterRef ! "How are you?"

  // Give actors time to process messages before terminating
  Thread.sleep(100)
  system.terminate()
}

Aktör yaşam döngüsünün temelleri

Aktörlerin oluşturulmalarından sonlandırılmalarına kadar uzanan bir yaşam döngüsü vardır. Akka, kurulum ve temizleme işlemlerini gerçekleştirmeniz için kancalar sağlar:

  • preStart(): Aktör ilk iletisini işlemeye başlamadan hemen önce çağrılır. Kaynakları başlatmak için kullanışlıdır.
  • postStop(): Aktör durduktan ve sistemden tamamen kaldırılmadan önce çağrılır. Kaynakları serbest bırakmak için kullanışlıdır.

Yaşam döngüsünü anlamak, aktör kaynaklarını etkili bir şekilde yönetmek için çok önemlidir.

Aktör hiyerarşileri

Aktörler, dosya sistemine benzer şekilde bir hiyerarşi içinde düzenlenir. "Kök koruyucu" aktör dışındaki her aktörün bir üst aktörü vardır.

  • Denetim: Üst aktörler, alt aktörlerini denetlemekten sorumludur. Bir alt aktör başarısız olursa üst aktörü, bu başarısızlığı nasıl ele alacağına karar verir (örneğin yeniden başlatma veya durdurma).
  • Yol: Her aktörün, hiyerarşideki konumunu gösteren /user/myActor/childActor gibi benzersiz bir yolu vardır.

Bu hiyerarşi, Akka'nın hata toleransı ve dayanıklılık özelliklerinin temelidir.

Akka Temelleri Kontrolü

Akka Aktör Modeli'nin temellerini anlayıp anlamadığınızı test edelim.

Özet: Akka Aktör Modeli

Harika iş çıkardınız! Bu derste Akka Aktör Modeli'nin temel kavramlarını öğrendiniz:

  • Geleneksel eşzamanlılığın zorlukları.
  • Aktör Modeli'nin ilkeleri: yalıtım, ileti aktarımı ve paylaşılan durumun olmaması.
  • Sağlam aktör sistemleri oluşturmak için Akka'nın bir araç takımı olarak rolü.
  • Scala'da bir ActorSystem ve basit aktörlerin nasıl tanımlanacağı.
  • ActorRef kullanarak aktörlerin nasıl oluşturulacağı ve onlara nasıl ileti gönderileceği.
  • Aktör yaşam döngüsünün ve hiyerarşisinin temelleri.

Sırada, aktör sistemleri tasarlamayı ve daha karmaşık etkileşimleri ele almayı daha ayrıntılı inceleyeceğiz!

Başlamak ücretsiz

Yapay zeka eğitmeniyle Scala öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
39
Dersler
143

Sıkça Sorulan Sorular

“Akka Aktör Modelinin Temelleri” dersi ücretsiz mi?

Evet — “Akka Aktör Modelinin Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 3 dersten oluşur.

“Akka Aktör Modelinin Temelleri” dersinde ne öğreneceğim?

Eşzamanlı yürütme için Aktör Modeli'nin ilkelerini, aktör yaşam döngüsünü ve ileti aktarımını anlayın. Scala for Backend Engineering & Functional Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“Akka Aktör Modelinin Temelleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Scala for Backend Engineering & Functional Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Akka Aktör Modelinin Temelleri
  2. Aktör Sistemleri Tasarlama
  3. Gözetim ve Hata Toleransı
← Scala for Backend Engineering & Functional Programming Sayfasına Dön