We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Evolving an Actor Library Based on Lessons Learned from Large-Scale Deployments - Benjamin Hindman
Discover how an actor library was evolved from futures and promises to non-blocking, parallel execution, avoiding locking and synchronization issues, and gaining key insights from large-scale deployments.
-
Evolution of actor library:
- Started with futures and promises, which led to locking and performance issues
- Migrated to actors, which enabled non-blocking, parallel execution
- Key insight: actors can be seen as execution resources, not threads
-
Lessons learned:
- Be cautious when using callbacks, as they can lead to complex code
- Favor non-blocking approaches for large-scale systems
- Actors can be used to avoid locking and synchronization issues
- Futures and promises are essential for actor-based systems
-
Actor design:
- Actors receive and handle messages in a non-blocking way
- Actors can call other actors and functions, returning futures
- Actors can be composed to achieve complex behavior
-
Challenges:
- Handling synchronization and locking in actor-based systems
- Ensuring determinism and reproducibility in actor systems
- Managing memory and state in actor systems
-
Conclusion:
- Actors and futures/promises can be a powerful combination for building scalable, non-blocking systems
- Be careful when introducing new concepts, such as actors, and ensure they fit with existing abstractions
- Consider the trade-offs between simplicity, performance, and complexity when designing systems