Chapter 5. Concurrency primitives

 

This chapter covers

  • Understanding BEAM concurrency principles
  • Working with processes
  • Working with stateful server processes
  • Runtime considerations

Now that you have sufficient knowledge of Elixir and functional programming idioms, it’s time to turn our attention to the Erlang platform. We’ll spend some time exploring BEAM concurrency, a feature that plays a central role in Elixir’s and Erlang’s support for scalability, fault-tolerance, and distribution. In this chapter, we’ll start our tour of BEAM concurrency by looking at basic techniques and tools. Before beginning with lower-level details, let’s take a look at higher-level principles.

5.1. Principles

Erlang is all about writing highly available systems—systems that run forever and are always able to meaningfully respond to client requests. To make your system highly available, you have to tackle following challenges:

  • Minimize, isolate, and recover from the effects of runtime errors (fault tolerance).
  • Handle a load increase by adding more hardware resources without changing or redeploying the code (scalability).
  • Run your system on multiple machines so that others can take over if one machine crashes (distribution).

5.2. Working with processes

5.3. Stateful server processes

5.4. Runtime considerations

5.5. Summary

sitemap