Akka Introduction

Merhaba arkadaslar, yeni bir yazı serisine bu yazı ile başlamış bulunmaktayım.

Akka ile beraber concurrent mekanizmaları, paralel hesaplamalar, dağıtık mimarilerde efektif iş yapma gibi konulardan bahsedecegiz. Akka mimarisinden, concurrent’ı nasıl ele aldıgından, nasıl modellediginden bahsedecegiz. Bu yazımızda ise Akka ve bazı kavramlara giriş yapacağız.

Detaylı bilgi için sitesini ziyaret edebilirsiniz : http://akka.io

Ayrıca Reactive manifestosuna da göz gezdirebilirsiniz : http://www.reactivemanifesto.org

Terminology

Akka’ya başlamadan önce bazı terminolojileri, konsept ve kavramları bilmek faydalı olacaktır. Bunlar;

  • Sync ve Async.
  • Blocking, Non Blocking.
  • Concurrency, Deadlock.

Akka

Akka temelde concurrent haberleşmelerde, dağıtık sistemlerde, message-driven, event-driven modele sahip Scala ile yazılmıs bir JVM toolkit’tir. Bir framework degildir, var olan uygulamalara/projelere kolayca adapte edilebilir.

Neden Akka diye sorarsanız çünkü Akka actor model ile birlikte tüm haberleşme(sistemler/threadler/uygulamalar) altyapısını soyutlayarak çok basite indirger. Yaptığı soyutlama ile concurrent uygulamalar, paralel hesaplamalar vb bir çok aslında zor olan modellemeler oldukça kolaylaşmakta.

Örneğin Java’da Thread’leri yönetmek zordur. Belki de core Java içerisinde benim en çok önem verdiğim konu da Thread’lerdir. Java bize zengin bir api sunmasına rağmen Thread yönetimi karmaşık ve zordur. Dağıtık mimarileri gerçekleyebilmek, ölçeklenebilir sistemler ile birlikte fault durumlarında sistemin çalışmasını sürdürebilir durumda olması, conccurent gibi konular gerçekten zor konulardır ve kafa yorulması gereken konulardır. Akka bize bu konuda yardımcı olacağını vaad ediyor.

Akka, Scala ile yazılmıs olmasına ragmen JVM üzerinde koştuğu için Java ile de birlikte çalışabiliyor. Bu sayede Java biliyor iseniz Scala, Scala biliyor iseniz Java öğrenmek zorunda kalmayacaksınız.

Son zamanlarda Java ve/veya Scala ile Play/Akka kullanarak high performance, scalabale uygulamalar yazmak oldukça çekici geliyor. Veri büyüdükçe veriye erişim ve kullanma zorlaşacağından dolayı gelecekte eş zamanlı işler yapabilen, concurrent olabilen tüm ürün/araç vs daha önemli olacaktır.

Actors

Akka, concurrent’i saglayabilmek için Actor Model’ini gerçekler. Yaptığı soyutlama ile Thread’lerin olusturulamsı, schedule edilmesi, Thread’ler arası haberleşme, mesajlaşma, senkronize olma durumları basite indirgenir. Actor model’de her şey bir actor’dur. Actor, kendisine gelen bir uyarı/event/message için local decision yapabilir(hesaplama, persist, ws call vs), farklı actor’ler olusturabilir, geri mesaj gönderebilir, mesajı ignore edebilir. Actor based bir sistem içerisinde tüm soyutlamalar yapılır. Actor based sistemde her şey bir actor’dur, object-oriented bir dilde herşeyin bir obje olması gibi.

Herhangi bir Actor bilinen bir objeden farksız degildir. Kabaca mesaj alır/verir. Bunu yaparken ise actor ile sistem arasında bir katman oluşturulur, bu katman ile birlikte tüm kompleks karmasıklık Akka toolkit tarafından soyutlanır. İlerde görecegiz ne kadar basite indirgedigini.

Yazımı burada sonlandırıyorum arkadaslar, sonraki yazıalarda Actor-Based sistemler, Actor’ler, Java ve Actor Thread modellerinin kıyaslanması gibi konulara değinmeye çalışacağız.

Mutlu ve esen kalın.

~ A.Akkus

869 Total Views 8 Views Today