"walk in a distributed systems park with orleans" Евгений Бобров

85
Walk in a distributed systems park with Orleans Yevhen Bobrov yevhen YouScan.io @

Upload: fwdays

Post on 15-Apr-2017

555 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: "Walk in a distributed systems park with Orleans" Евгений Бобров

Walk in a distributed systems park with Orleans

Yevhen Bobrovyevhen

YouScan.io@

Page 2: "Walk in a distributed systems park with Orleans" Евгений Бобров

Orleans is …

… runtime and programming model for building distributed systems based on actor model

Page 3: "Walk in a distributed systems park with Orleans" Евгений Бобров

Built by eXtreme Computing Group at Microsoft Research

Has been used internally (during last few years)

Open-sourced in 2015(available on GitHub and Nuget)

Page 4: "Walk in a distributed systems park with Orleans" Евгений Бобров

ScalabilityAvailabilityReliablity

built for *

Page 5: "Walk in a distributed systems park with Orleans" Евгений Бобров

HALO4

Orleanspowered by

11+ million players1.5 billion games270 million hours

Page 6: "Walk in a distributed systems park with Orleans" Евгений Бобров

Why do we need it?

Page 7: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

Service

Page 8: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

Service

Page 9: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

ServiceService

Page 10: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

ServiceService

Page 11: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

ServiceService

Page 12: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

ServiceService Service

Page 13: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services

ServiceService Service

Page 14: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 15: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 16: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 17: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 18: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 19: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 20: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 21: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 22: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 23: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 24: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 25: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 26: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 27: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Data Shipping Paradigm

Page 28: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateless Services (a.k.a 3-tier)scales very badly

Page 29: "Walk in a distributed systems park with Orleans" Евгений Бобров

In a Cloudlatency will kill you

Page 30: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateful Services

Page 31: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 32: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 33: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 34: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 35: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 36: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 37: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 38: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 39: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 40: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 41: "Walk in a distributed systems park with Orleans" Евгений Бобров

Service

Service

Service

Function Shipping Paradigm

Page 42: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateful Services

Page 43: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateful Services

shared state

Page 44: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateful Services

shared stateconcurrency, locks, and all that jazz

Page 45: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateful Services

shared stateconcurrency, locks, and all that jazz

PAIN

Page 46: "Walk in a distributed systems park with Orleans" Евгений Бобров

Actor Model

Single-threaded execution (no need to use locks)

Data locality and consistency (due to encapsulation)

Objects on steroids

Page 47: "Walk in a distributed systems park with Orleans" Евгений Бобров

Stateful Services

Actors make it simple

Page 48: "Walk in a distributed systems park with Orleans" Евгений Бобров

How to distribute?

Page 49: "Walk in a distributed systems park with Orleans" Евгений Бобров

Akka / Erlang

10.0.0.1

10.0.0.2

var game = activate(“game”, “tcp://10.0.0.1”)game.invoke(“foo()”)

var user = activate(“user”, “tcp://10.0.0.2”)user.invoke(“bar()”)

Page 50: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

10.0.0.1

10.0.0.2

10.0.0.5

10.0.0.8

Page 51: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

10.0.0.1

10.0.0.2

10.0.0.5

10.0.0.8

Page 52: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership

Page 53: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

Page 54: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

Static

Page 55: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

StaticDynamic

Page 56: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

StaticDynamic Distributed Consensus

Page 57: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

StaticDynamic Distributed Consensus

Timeouts

Page 58: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

StaticDynamic Distributed Consensus

TimeoutsLifecycle

Page 59: "Walk in a distributed systems park with Orleans" Евгений Бобров

Routing Problems

Cluster Membership Workload Distribution

StaticDynamic Distributed Consensus

TimeoutsLifecycle

PAIN

Page 60: "Walk in a distributed systems park with Orleans" Евгений Бобров

Orleans is …

… runtime and programming model for building distributed systems based on actor model

Page 61: "Walk in a distributed systems park with Orleans" Евгений Бобров

ScalabilityAvailabilityReliablity

How?

Page 62: "Walk in a distributed systems park with Orleans" Евгений Бобров

Virtual Actors

Page 63: "Walk in a distributed systems park with Orleans" Евгений Бобров

Location Transparency

var game = activate(“game”, “tcp://10.0.0.1”)game.invoke(“foo()”)

Akka / Erlang

Orleansvar game = activate(“game”) “tcp://10.0.0.1”)game.invoke(“foo()”)

Page 64: "Walk in a distributed systems park with Orleans" Евгений Бобров

Perpetual Existence

var game = activate(“game”, “tcp://10.0.0.1”)game.invoke(“foo()”)

Akka / Erlang

Orleansvar game = activate(“game”, “tcp://10.0.0.1”)game.invoke(“foo()”)

Page 65: "Walk in a distributed systems park with Orleans" Евгений Бобров

inversion of control

• Placement• Lifecycle

Runtime takes care of

Page 66: "Walk in a distributed systems park with Orleans" Евгений Бобров

New node joined the

cluster

Unavailable (crashed)

node

New Activation New actor activations

courtesy of @johnazariah

Page 67: "Walk in a distributed systems park with Orleans" Евгений Бобров

Cooperative multitasking

Page 68: "Walk in a distributed systems park with Orleans" Евгений Бобров

Threads ~= Cores

Core 1

Core 2

Core N

Mechanical sympathy

Scheduler(turns)

Thread 1

Thread N

Page 69: "Walk in a distributed systems park with Orleans" Евгений Бобров

Non-blocking IOPromises (TPL, Task, Combinators)

Multiplexed TCPMillions of actors with low OS overhead

Automatic backpressure by designSynchronous, request-response messaging

Page 70: "Walk in a distributed systems park with Orleans" Евгений Бобров

Tour De Orleans

Page 71: "Walk in a distributed systems park with Orleans" Евгений Бобров

Grain(a.k.a. Actor)

Silo(a.k.a. Node)

Cluster(a.k.a. Cluster)

Major Concepts

Page 72: "Walk in a distributed systems park with Orleans" Евгений Бобров

Define interface:

public interface IInventoryItemGrain : IGrain { Task Increment(int qty); Task Decrement(int qty); Task<int> Total(); }

Page 73: "Walk in a distributed systems park with Orleans" Евгений Бобров

Define implementation:class InventoryItemGrain : Grain, IInventoryItemGrain{ int total;

public Task Increment(int qty) { total++; return TaskDone.Done; }

public Task Decrement(int qty) { total--; return TaskDone.Done; }

public Task<int> Total() => Task.FromResult(total);}

Page 74: "Walk in a distributed systems park with Orleans" Евгений Бобров

Invoke:

var item = GrainFactory .GetGrain<IInventoryItemGrain>("iPhone");

await item.Increment(100);await item.Decrement(100);

Console.WriteLine(await item.Total());

Page 75: "Walk in a distributed systems park with Orleans" Евгений Бобров

More Orleans

Page 76: "Walk in a distributed systems park with Orleans" Евгений Бобров

Placement hints

• Random (default)

• Prefer-local (clustering actors)

• Distribute evenly (# of activations)

Page 77: "Walk in a distributed systems park with Orleans" Евгений Бобров

Automatic deactivation(garbage collection)

• Global timeout (idle time)

• Per-actor type

• Imperative deactivation

Page 78: "Walk in a distributed systems park with Orleans" Евгений Бобров

Timers/Reminders

• Async timers (single-threaded guarantee)

• Durable recurrent reminders

retries, recurrent tasks

Page 79: "Walk in a distributed systems park with Orleans" Евгений Бобров

Streams

• Direct TCP / Azure Queues

• Durable Pub-Sub (WATS/SQL)

• Declarative subscriptions

• Cluster-wide

Page 80: "Walk in a distributed systems park with Orleans" Евгений Бобров

When to use?

Page 81: "Walk in a distributed systems park with Orleans" Евгений Бобров

Scaling 3-tier architecture(stateless services)

Page 82: "Walk in a distributed systems park with Orleans" Евгений Бобров

IoT1. GPS Tracker (RFID, inventory, cars)2. Counters (running total)3. Sensor data

Page 83: "Walk in a distributed systems park with Orleans" Евгений Бобров

Data stream processing1. Fraud detection2. Aggregation

Page 84: "Walk in a distributed systems park with Orleans" Евгений Бобров

Ultra-scalable & reliable web crawling

Page 85: "Walk in a distributed systems park with Orleans" Евгений Бобров

END