23
Параллелизм с использованием акторов Корниенко Александр C#, erlang developer Global Fleet Management

Параллелизм с использованием актеров (Erlang, .NET)

Embed Size (px)

Citation preview

Page 1: Параллелизм с использованием актеров (Erlang, .NET)

Параллелизм с использованием акторов

Корниенко АлександрC#, erlang developer

Global Fleet Management

Page 2: Параллелизм с использованием актеров (Erlang, .NET)

Немного истории

- модель акторов(К. Хьюит, П. Бишоп и Р. Штайгер)

- операционную семантику для модели акторов(Ирен Грейф)

- аксиоматические законы для систем акторов(Г. Бейкер и К. Хьюитт)

- основы семантики акторов(Уильям Клингер)

Page 3: Параллелизм с использованием актеров (Erlang, .NET)

Фундаментальные концепции акторов

Актор является вычислительной сущностью, которая в ответ на полученное

сообщение может одновременно:

- отправить конечное число сообщений другим акторам;

Page 4: Параллелизм с использованием актеров (Erlang, .NET)

Фундаментальные концепции актеров

Актор является вычислительной сущностью, которая в ответ на полученное

сообщение может одновременно:

- отправить конечное число сообщений другим акторам;

- создать конечное число новых акторов;

Page 5: Параллелизм с использованием актеров (Erlang, .NET)

Фундаментальные концепции актеров

Актор является вычислительной сущностью, которая в ответ на полученное

сообщение может одновременно:

- отправить конечное число сообщений другим акторам;

- создать конечное число новых акторов;

- выбрать тип поведения, которое будет использоваться для следующего

сообщения в свой адрес

Page 6: Параллелизм с использованием актеров (Erlang, .NET)

Message passing - основа взаимодействия акторов

Page 7: Параллелизм с использованием актеров (Erlang, .NET)

Свойства модели акторов

- изолированность компонентов системы

Actor Actor

message

message

StateState

Page 8: Параллелизм с использованием актеров (Erlang, .NET)

Свойства модели акторов

- асинхронное исполнение

Actor1 Actor2

Async message

Async message

MailBoxMailBox

Page 9: Параллелизм с использованием актеров (Erlang, .NET)

Свойства модели акторов

- отсутствие shared memory

- отсутствие блокировки

- отстутвие необходимости синхронизации

- отсутствие “гонок” Server 1

Actor

Server 2

Actor

Address space

Address space

Page 10: Параллелизм с использованием актеров (Erlang, .NET)

Свойства модели акторов

- отказоустойчивость Процесс-наблюдатель

PIDPIDPIDPID

Page 11: Параллелизм с использованием актеров (Erlang, .NET)

Свойства модели акторов

- масштабираемость

Сервер

Актор Актор

Сервер Сервер

Актор Актор

Page 12: Параллелизм с использованием актеров (Erlang, .NET)

Listener

Erlang и модель актеров

КлиентыАктеры клиентов (Worker)

cast() Очередь сообщений

Writer

Очередь сообщений

cast()

udp

Page 13: Параллелизм с использованием актеров (Erlang, .NET)

Supervisor поведение

Listener Актеры клиентов (Worker)

cast()Очередь

сообщений

Writer

Очередь сообщений

cast()

Supervisor

Page 14: Параллелизм с использованием актеров (Erlang, .NET)

- виртуальные актеры(grain) обчные объекты

- асинхронные сообщения

- позволяет строить распределенную систему обработки данных

- сервера на уровне фреймворка общаются между собой

- используют разнообразные хранилища для внутренних состояний grain

- + все самое лучшее из Erlang

.Net Orleans

Page 15: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Распределенная система

Client

Grainmessages Grain1

Silo

GrainGrain2

Shared storage

Page 16: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Добавление нового Silo это просто!

Client

messages

New Silo

Silo

Storage

Page 17: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Создание нового Grain

Client

Grain message

Silo

Storage

- Новый грейн активируется только когда приходит новое сообщение

+Grain

Page 18: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Управление простаивающими Grain

Silo

Storage

- простаивающие Grain удаляются

-Idle grain

Page 19: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Load balancing

Client

New grain message

1 Grain

Silo

Grain2 Grain

Shared storage

- Произвольное создание grain на одном из серверов

Page 20: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Load balancing

Client

New grain message

+ Grain

Silo

Grain2 Grain

Shared storage

- создание grain на основании загрузки(CPU, memory, actors)

CPU, memory

10 grainsLoad 2%

2 grainsLoad 30%

Page 21: Параллелизм с использованием актеров (Erlang, .NET)

Silo

Отказоустойчивость

Client

messages

Silo

Silo

Storage

Grain 1 Grain 2

Grain 1, 2,3

-кластер жив пока работает хотя бы 1 Silo

Page 22: Параллелизм с использованием актеров (Erlang, .NET)

Вопросы?

Page 23: Параллелизм с использованием актеров (Erlang, .NET)

Ресурсы

http://dotnet.github.io/

https://www.erlang.org/