высокопроизводиетльные системы без доп затрат
DESCRIPTION
Нами был разработана библиотека HWdTech.DS для разработки многопоточных и распределенных приложений на платформе .Net. Эта библиотека использует модель акторов и позволяет существенно снизить требования к квалификации программистов при построении высоконагруженных приложений.TRANSCRIPT
01 TIKTOKCOACH.RU
Высокопроизводительная система без дополнительных затрат
HWdTech.DS
02 TIKTOKCOACH.RU
Докладчик
Тюменцев Евгений
Разработка высоконагруженных, многопоточных, кросс-платформенных приложенийРуководство отделом разработки ПО в 40 человекТех. директор ИТ-компании в 70 человек
Управляющий партнер стартапа “Тик-Так Коуч”В свободное время - преподаватель
03 TIKTOKCOACH.COM
Многопоточность?Это Вам не это!
Проблема
04 TIKTOKCOACH.COM
Нужны спецы
05 TIKTOKCOACH.RU
Атомарность
x = y;
x = x + 1;
06 TIKTOKCOACH.RU
Скучно и нудно
07 TIKTOKCOACH.RU
Есть идея
08 TIKTOKCOACH.RU
Вдохновитель
09 TIKTOKCOACH.RU
Благодарности
10 TIKTOKCOACH.RU
Цель
Как есть
Архитектура
Взаимодействие
Измеримость
Оптимизация
11 TIKTOKCOACH.RU
Вычислимость
Вычислимость Машина Тьюринга Машина Поста Λ-исчисление Черча
12 TIKTOKCOACH.RU
Как все начиналось?
1970-е Искусственный интеллект Будущее за многопроцессорными
системами Проект 5-е поколение
13 TIKTOKCOACH.RU
Акторы
Carl Hewitt, Peter Bishop, Richard Steiger
A Universal Modular ACTORFormalism for Artificial Intelligence
1973 Carl Hewitt
14 TIKTOKCOACH.RU
Архитектура
15 TIKTOKCOACH.RU
Модель акторов
Актор – вычислительная сущность
• Отправить конечное число сообщений другим акторам
• Создать конечное число акторов• Выбрать поведение для приема следующего
сообщения
16 TIKTOKCOACH.RU
В чем разница?Синхронизация Акторы
17 TIKTOKCOACH.RU
Fog cutter
Gul A. Agha, Karmani 2011
Распространенная архитектура для вычислительных агентов
18 TIKTOKCOACH.RU
Общая схема
19 TIKTOKCOACH.RU
Message Bus
• MessageBus.Send(message);
• MessageBus.Join(job);
20 TIKTOKCOACH.RU
Jobpublic class EchoJob : IJob{ [ChannelEndpointHandler("Echo")] public void Handle(IMessage message) { MessageBus.TrySendSuccessResponse(message); }}
21 TIKTOKCOACH.RU
Синхронная обработка
Внутренний запрос
Формирование ответа
22 TIKTOKCOACH.RU
Асинхронная обработка[ChannelEndpointHanlder(ChannelsLoaderLocal,
MessageType="Messages.Loader.Load")]public void LoadMessageHandler(IMessage message){ // … MessageBus.Send( MessagesFactory.Instance.CreateMessage(“Messages.Config.Get”,ChannelsLoaderLocal) );}[ChannelEndpointHanlder(ChannelsLoaderLocal,
MessageType = "Messages.Config.GetResponse")]public void ConfigGetResponseHandler(IMessage response){ // …}
23 TIKTOKCOACH.RU
Взаимодействие
24 TIKTOKCOACH.RU
ЖЦ данных
Ввод Предварительная обработка
Подготовка к выдаче Показ результатов
Запрос на внесение данных
Запрос на выдачуданных
Ответ на запрос о внесении данных
Ответ на запрос о выдаче данных
Благоприятный момент времени
25 TIKTOKCOACH.RU
Борьба за надежность
Если Ваша системаработает только в 1%случаев, то как еепревратить в системусо степенью надежности 99%?
26 TIKTOKCOACH.RU
Все просто
P(успеха) = 0.01, => P(1 неудачи) = 0.99
P(n неудач) = P(1 неудачи)^n
459 попыток
27 TIKTOKCOACH.RU
Message Map
Job1 Job2 … JobN
28 TIKTOKCOACH.RU
Check Point
CP1 Job … CPN
Ответ на входящий
запрос
29 TIKTOKCOACH.RU
Измеримость
30 TIKTOKCOACH.RU
Карты Шухарта1923 . г AT&T Ламповые усилителисигнала
Количество аварийных бригад итранстпорта?Bell Labs 1924 .г Уолтер Шухарт
32 TIKTOKCOACH.RU
Пример карты Шухарта
32 TIKTOKCOACH.RU
Document StorageДокумент в виде JSONFull Text SearchFiltersRangesTagsOrders
33 TIKTOKCOACH.RU
Scheduler
Последовательности Стратегии обработки ошибок
34 TIKTOKCOACH.RU
Библиотека Job’ов
Публикация Загрузка job’ов по требованию
35 TIKTOKCOACH.RU
Сервис конфигураций
Конфигурация – json Внести изменения –
применить конфигурацию
36 TIKTOKCOACH.RU
Задачи
• Workfow• Зависимости между Job’ами• Упростить написание тестов
37 TIKTOKCOACH.RU
Спасибо
Тюменцев Евгений
Звоните: +7 913 150 22 04Пишите: [email protected]Читайте: @tiktokcoach
tiktokcoach.ru