Published Sep 3, 2019

Episode 29: Concurrency Pt.3

    Explore the advanced intricacies of concurrency in scalable systems with insights into the reactor pattern, thread pools, and reader-writer locks, as Michael Kircher and Priyanka Raghavan delve into optimizing resource utilization and tackling synchronization challenges in complex event-driven server environments.
    Episode Highlights
    Software Engineering Radio - the podcast for professional software developers logo

    Popular Clips

    Episode Highlights

    • Event-Driven Servers

      Event-driven servers are crucial in handling numerous concurrent requests, distinguishing them from data-driven servers that focus on batch processing and data analysis. Michael Kircher explains that most web servers and IT infrastructure are event-driven, which poses unique challenges such as dynamic memory allocations and synchronization overheads 1. These issues can lead to performance bottlenecks, especially when dealing with resource shortages and blocking synchronous calls. Kircher highlights the importance of addressing these factors to improve server scalability and performance 1.

      Dynamic memory allocations and resource acquisitions lead to a high percentage of overhead in the algorithms in communicating and dispatching events.

      --- Michael Kircher

      Understanding scalability involves recognizing how systems handle increased loads while maintaining throughput and quality. Kircher notes that scalability is not just about adding hardware but also about ensuring system extendability to prevent early performance degradation 2.

         

      Performance Optimization

      Performance in event-driven servers is influenced by factors like resource allocation and synchronization. Michael Kircher emphasizes the need to balance throughput, latency, and jitter to maintain a high-quality system 2. These metrics are crucial for user interaction, as inconsistent performance can lead to user confusion and dissatisfaction. Concurrency challenges further complicate performance optimization, as Kircher suggests that shielding concurrency from developers can simplify programming but limits optimization opportunities 3.

      Multi-threaded server programming is something really difficult, and concurrency is best shielded from the application developer into the infrastructure.

      --- Michael Kircher

      Ultimately, achieving optimal performance requires a careful trade-off between various system attributes, including maintainability and flexibility.

    Related Episodes