Published Sep 3, 2019

Episode 178: Akka With Jonas Boner

Jonas Boner delves into Akka's transformative capabilities, discussing its seamless integration with web systems, the resilient 'Let It Crash' philosophy, and its innovative use of the actor model for enhanced concurrency and scalability, all of which contribute to building high-performance distributed systems.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Advantages

    discusses the advantages of using the actor model in Akka, highlighting its ability to handle concurrency and scalability efficiently. He explains that actors encapsulate state and behavior, ensuring thread safety and eliminating race conditions, which allows developers to focus on business logic rather than concurrency issues 1. Boner also notes that while the actor model is inspired by Erlang, Akka integrates additional tools to enhance fault tolerance and reliability 2.

    You basically write your code once, not thinking about either of these. If you work inside the sort of the actor model, you have to prepare your application to scale either up or out, and sometimes both.

    ---

    Despite these benefits, developers may initially find the actor model's message-passing approach unfamiliar, but it ultimately simplifies the development process 3.

       

    Concurrency

    The actor model in Akka excels in managing concurrency and message passing, allowing seamless communication across distributed systems. explains that actors operate independently, using message queues to communicate asynchronously, which enhances scalability and performance 4. This model supports both single-threaded and multi-threaded environments, making it versatile for various applications 5.

    We have shown in benchmark that it can limit your throughput by to one third of your, of what you could get if you're using unblocking calls.

    ---

    Boner advises against using blocking future calls, as they can significantly reduce throughput, and instead recommends non-blocking APIs to maximize efficiency 6.

       

    Comparison

    Comparing Akka with Erlang, highlights the similarities and differences in their actor models. While both systems use actors for concurrency, Akka offers additional tools like software transactional memory for handling consensus problems more efficiently 7. Boner acknowledges Erlang's robust runtime but emphasizes the JVM's superior optimization capabilities for high-throughput, low-latency applications 8.

    Erlang is amazing, right? I mean, but, but I would have to say it's very much depending on your use case.

    ---

    He notes that developers familiar with Erlang will find Akka's semantics familiar, though there are runtime differences due to the underlying platforms 8.

Related Episodes