مدتی هست یادگیری آکا (akka) را شروع کردم و دوست دارم تجربیاتم را در اختیار شما بزارم
آکا (akka) یک کتابخانه open source هست که کمک میکنه برنامه های توزیع شده و concurrent را با زبان جاوا یا اسکالا با استفاده از مدل Actor به راحتی توسعه دهیم.
اکتور (actor) چیست :
اکتور (actor) یک واحد محاسباتی مستقلی هست که یک سری خصایص داره:
1- یک actor حالت (state) خود و بخشی از بیزینس برنامه را کپسوله (encapsulate) میکنه
2-اکتورها از طریق پیام ها به صورت asynchronous با یکدیگر تعامل دارند و هیچ اکتوری به صورت مستقیم متد اکتور دیگری را فراخوانی نمی کند
3-هر اکتور یک آدرس منحصر به فرد و یک mailBox دارد که اکتور های دیگه به آن می توانند پیام ارسال کنند
4-هر اکتور پیام ها را در mailBox خود در صفی قرار داده و به صورت پیش فرض از ابتدای صف به طور متوالی پیام ها را پردازش می کند
5-سیستم اکتور به صورت ساختار درختی سازماندهی شده است.
6- هر اکتور می تواند به اکتور های دیگر پیام ارسال کرده و خودش و هر اکتور دیگری را که ساخته متوقف کند.
مزیت های استفاده از akka:
توسعه concurrent application ها سخت می باشد به دلیل این که شما باید مواردی از جمله synchronization, locks و اشتراک حافظه را بررسی کنید .با استفاده از akka شما به راحتی می توانید بدون نیاز به lock و synchronization، کد asynchronous بنویسید.
یکی از مزایا استفاده از پیام به جای فراخوانی مستقیم متد ها این است که زمانی که thread فرستنده، پیامی را به actor دیگر ارسال میکند، thread جهت دریافت نتیجه، بلاک نمی شود و اکتور دریافت کننده پیام بعدا با ارسال پیامی به فرستنده نتیجه را پاسخ می دهد .
از مزایا دیگر استفاده از پیام ها این است که ما نباید نگرانی راجع به synchronization در محیط های multi-threaded داشته باشیم به دلیل اینکه همه پیام ها در mailBox به طور متوالی پردازش می شوند .
منابع :
https://doc.akka.io/docs
https://www.baeldung.com/akka-actors-java
نویسنده :بهرام براتی
linked in: https://www.linkedin.com/in/bahram-barati-098539b0/