Philip A. Bernstein, Sergey Bykov, Alan Geller, Gabriel Kliot, Jorgen Thelin Motivation: • It should handle millions of requests per hour. Problem: S c a l a b l e Fault Tolerance Data Consistency High Availability Unpredictability Performance Load Balancing Reliability Latency Orleans liberating the developers from dealing with those concerns) • Enables applications to attain high performance, reliability and scalability. Traditional 3-tier architecture Could make consistency issues Orleans 3-tier architecture Actor* • • • *The actor model was introduced in 1973 Actor Virtual 1. 2. 3. Virtual Orleans #2,548,308 Activation #1 @ 192.168.1.1 #2,031,769 Activation #1 @ 192.168.1.5 Orleans Silo cloud Actors Actors Runtime Runtime Runtime Runtime Runtime Distributed Directory How can it find each actor location? Each server hold a partition of the directory. On activation\deactivation a request is sent to the appropriate directory partition. Could be replicated on several servers. Runtime Reliability Actor’s persistent state is the programmer responsibility. (The state should be saved to some network storage) Each server hold a membership view of all other servers. Servers automatically detect failures via periodic heartbeats (practical 30-60 sec). If a server fails, actors will be instanced on other servers on next message. If the directory partition is lost, surviving servers will purge their directory based on cache and state. <Video> Skill & Ranking Presence & Matchmaking Cheat Detection Challenges & Unlockables Game History Profile User Generated Content Content Management Service really bad Search Azure Load-Balancer Azure Storage Front Door Compute Worker Roles HDInsight Hadoop Visualization Search Azure Load-Balancer Azure Storage Front Door Compute Worker Roles HDInsight Hadoop Visualization public class Presenceactor : actorBase, IPresenceactor { public Task Heartbeat(byte[] data) { HeartbeatData heartbeatData = Heartbeat.Decrypt(data); IGameactor game = GameactorFactory.Getactor(heartbeatData.Game); return game.UpdateGameStatus(heartbeatData.Status); } } Test Lab Numbers Test Lab Numbers Test Lab Numbers What’s a Server? Virtual Machines Physical Machines http://orleans.codeplex.com/ http://research.microsoft.com/en-us/projects/orleans/