DEV 314. Scalable Responsive Errors Resilient Decoupled Latency Load Unpredictability Performance...

19
Scalable by Design: The “Orleans” Actor Framework for Azure @JohnAzariah @MaheshKrishnan DEV 314

Transcript of DEV 314. Scalable Responsive Errors Resilient Decoupled Latency Load Unpredictability Performance...

Scalable by Design: The “Orleans” Actor Framework for Azure

@JohnAzariah@MaheshKrishnan

DEV 314

AgendaThe Problem domainThe Actor ModelThe Orleans FrameworkDemos

Hello World! PersistenceAdvanced topics – reentrancy, pub/subRunning in the cloud

Wrap Up

The Problem

Sca

lab

le

Resp

onsi

veErrors

Resilient

DecoupledLatency

Load

Unreliability

Unpre

dicta

bility

Perf

orm

anceFailure

Con

curr

ency

Data Consistency

What is the Actor model?Introduced in 1973!Deals with concurrency realisticallyAn Actor is a fundamental unit of computation

ProcessingStorageCommunication

What can an actor do?Create other actorsSend messages to other actorsDesignate what to do with the next message

Anatomy of an Actor systemAddressing mechanismMessaging systemDurable storageActor Life-cycle management

Project “Orleans”Distributed Actor runtime

Virtual Actor modelLocation transparency

Built for .NetActors (Grains) are .Net objectsMessaging through .Net interfacesAsynchronous through async/await in C#Automatic error propagation

Silo: Runtime exec. container

Implicit activation & lifecycle managementCoordinated placementMultiplexed communicationFailure recovery

Grain

Silo

Grain instances always exist, virtuallyNeedn’t be created, looked up or deletedGrains never fail

Activations are created on-demandIf there is no existing activation, a message sent to it triggers instantiationLifecycle is managed by the runtimeTransparent recovery from server failuresRuntime can create multiple activations of stateless grains (for performance)

Location transparencyGrains can pass references to one another aroundReferences can be persisted to cold-storage

Grains: Virtual actors

Actors in “Orleans”: Grains

Grain Type Grain (Instance) Grain Activation

Game Grain Type

Game Grain (Instance) #2,548,308

Game Grain (Instance) #2,031,769

Game Grain #2,548,308

Activation #1 @ 192.168.1.1

Game Grain #2,031,769

Activation #1 @ 192.168.1.5

A cloud native runtime

New Silo

Unavailable Silo

New Activation New Activations

Demo

Hello World!

Demo

Persistence

Demo

Running in Azure

Demo

Some real world scenarios (Re-entrancy, Pub/Sub, etc.)

Actor modelA way of writing concurrent distributed applicationsAn actor is the primary building block

“Orleans” FrameworkAn Actor Model implementation using .NET that runs on AzureProvides runtime, SDK, and compile time code generation

FeaturesConcept of virtual actorAbstracts away the difficult bits

UsesCaching, Gaming, IoT, etc.

Summary

Related content

http://codeplex.orleans.comOrleans whitepapersFollow

@sbykov_work, @richorama, @mknz, @reubenbond

Find Us Later At...Hub Happy Hour (Thu)

Resources

TechNet & MSDN FlashSubscribe to our fortnightly newsletter

http://aka.ms/technetnz http://aka.ms/msdnnz

TechNet Virtual LabsFree Virtual Hands-on Labs

http://aka.ms/ch9nz

Microsoft Virtual AcademyFree Online Learning

http://aka.ms/mva http://aka.ms/technetlabs

Sessions on Demand

Complete your session evaluation now and win!

© 2014 Microsoft Corporation. All rights reserved.Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.