Featured in Architecture & Design

Monal Daxini presents a blueprint for streaming data architectures and a review of desirable features of a streaming engine. He also talks about streaming application patterns and anti-patterns, and use cases and concrete examples using Apache Flink.

Featured in AI, ML & Data Engineering

Joy Gao talks about how database streaming is essential to WePay's infrastructure and the many functions that database streaming serves. She provides information on how the database streaming infrastructure was created & managed so that others can leverage their work to develop their own database streaming solutions. She goes over challenges faced with streaming peer-to-peer distributed databases.

Building Halo 4, a Video Game, Using the Actor Model

When starting with the next version in a video game series, Halo 4, the original game engine and the available set of services couldn’t meet the requirements and a new solution was created based on the Actor model implemented by the Orleans framework. Caitie McCaffrey told in a presentation at the QCon London conference talking about the work designing and building the services supporting the new game.

One architectural challenge McCaffrey, a distributed systems engineer currently working at Twitter, earlier at Microsoft Game Studios, mentions was designing for the extensive load a game may generate. On launch day Halo 4 had 1 million unique players online and within one week 4 million with over 30 million hours of combined gameplay. In preparation for handling a load of this size the project went into using the cloud, more specifically Azure since it’s a Microsoft game. Other challenges included allowing for online playing at all times requring the servers to be always available with both low latency and high concurrency.

Looking for a solution to the requirements the project came across the actor model. Fundamentally actors are a basis for reasoning about concurrency, the core concept being an actor, a primitive for concurrent computation only communicating with one another using asynchronous message passing. When an actor receives a message it can send messages to other actors, create a new actor or modify its internal state. Keeping all data for an actor in one location effectively means McCaffrey and the team are creating stateful services allowing them to build a stateful middle tier with the performance benefits of a cache but with no concurrency issues.

Searching inside Microsoft the project found Orleans framework, a runtime and programming model for building distributed systems based on the actor model. An important aspect differentiating Orleans from other actor model frameworks is the concept of a virtual actor, an actor that can never be created or destroyed, logically it always exists. Some key ideas this virtual actor brings is location transparency, a message sent to an actor automatically gets routed to the actor irrespective of its location, and automatic scale out without redeploy.

With the new architecture McCaffrey claims that they are able to sustainably run above 90% CPU utilization on their servers with nearly linear scalability, simplifying adapting to load changes especially valuable during dramatic load increases, e.g. when a game is launched.

McCaffrey believes they would not have been successful without using Orleans, due to how easy it was to find developers when using a tool like Orleans helping them write code running in a distributed world, and in that increasing the productivity as the developers could focus on making the experience in the game really great.

Re: Presentation?

Your message is awaiting moderation. Thank you for participating in the discussion.

At the moment the video we shot at QCon London is only available to attendees, but we will be publishing to the InfoQ in due course. I'll update you when the schedule is done. It looks like we also don't yet have the slides for this talk.