SlideShare a Scribd company logo
1 of 24
Download to read offline
МНОГОПОТОЧНОЕ И
РАСПРЕДЕЛЕННОЕ
ПРОГРАММИРОВАНИЕ
Антон Нехаев
В ЭКОСИСТЕМЕ SCALA
Закон Мура (1965)
Процессы, потоки
Закон Амдала (1967)
Задача
> Answer: 4999999950000000
> Has taken: 3953 ms
Наивная многопоточность
> Answer: 753496416694282
> Has taken: 2101 ms
> Answer: 722347826057277
> Has taken: 2070 ms
> Answer: 717721376939013
> Has taken: 2116 ms
Блокировки
> Answer: 4999999950000000
> Has taken: 17802 ms
> Answer: 4999999950000000.
> Has taken: 16058 ms
Последствия блокировок 1
Deadlock
Последствия блокировок 2
Вопросы по блокировкам
 Как не допускать deadlock’ов?
 Держать всю картину в голове?
 Как эффективно утилизировать CPU?
 Как тестировать?
 Unit-тесты не очень подходят
 Как отлаживать?
 Дебаггеры рассчитаны на последовательное
выполнение программ
Альтернативные пути
 Корень зла – shared mutable state
 Знать инструмент
 Volatile
 Atomic
 Lock-free data structures
 …
 Перейти на функциональное программирование
 Отказ от shared mutable state
 Использовать высокоуровневые фреймворки
 Перенос shared mutable state вовне
Знать инструмент
> Answer: 4999999950000000
> Has taken: 2076 ms
Функциональное
программирование
 Функции высших порядков
 Функция может принимать к качестве аргумента
функцию
 Функция может возвращать в качестве результата
функцию
 «Чистые» функции, без побочных эффектов
 Результат функции зависит только от входных
аргументов (referential transparency)
 Неизменяемое состояние (immutable state)
 Рекурсия как средство организации циклов
 Монады
 Продвинутая система типов
Пример ФП 1
> Answer: 4999999950000000
> Has taken: 2079 ms
Пример ФП 2
> OutOfMemoryError
Пример ФП 3
> Answer: 4999999950000000
> Has taken: 30 ms
Что дает ФП?
 Модульность
 Программа – это функция, состоящая из функций
 Повторное использование
 Части программы могут быть выделены и реорганизованы
 Простота тестирования
 Всегда детерминированный результат
 Поддержка параллельности
 Отсутствует shared mutable state
 Счастье
 Более предсказуемый результат
 Меньше когнитивная нагрузка
 Ограниченный простор для самореализации
Actor system
 Акторы – это объекты, которые инкапсулируют
состояние и поведение. Они взаимодействуют
исключительно посредством обмена сообщениями.
Akka
 Открытый фреймворк, в основе которого лежит
модель акторов (Jonas Bonér, 2009)
 Модель акторов – высокоуровневая абстракция для
многопоточного программирования
 Асинхронная высокопроизводительная event-driven
архитектура
 Актор – «легковесный процесс» для обработки
событий
 Иерархии супервизоров для гибкой обработки
ошибок и сбоев
Akka. Пример
case class Greeting(who: String)
class GreetingActor extends Actor with ActorLogging {
def receive = {
case Greeting(who) ⇒ log.info("Hello " + who)
}
}
val system = ActorSystem("MySystem")
val greeter = system.actorOf(Props[GreetingActor], name = "greeter")
greeter ! Greeting("Charlie Parker")
Akka. Иерархия супервизоров
Akka. Пример супервизора
class Supervisor extends Actor {
override val supervisorStrategy = OneForOneStrategy (
maxNrOfRetries = 10,
withinTimeRange = 1 minute) {
case _: ArithmeticException ⇒ Resume
case _: NullPointerException ⇒ Restart
case _: Exception ⇒ Escalate
}
val worker = context.actorOf(Props[Worker])
def receive = {
case n: Int => worker forward n
}
}
Ссылки
 http://www.programmingusingscala.net/home/cha
pters
 http://www.youtube.com/watch?v=hzf3hTUKk8U
 https://blogs.oracle.com/jag/resource/Fallacies.ht
ml
 https://highlyscalable.wordpress.com/2012/09/18
/distributed-algorithms-in-nosql-databases/
 https://www.youtube.com/watch?v=Zy84w4BLOR8
&index=1&list=PL-x35fyliRwgdKsaLFMwl-Q-vSd7-
X6mi

More Related Content

Viewers also liked

よね村の再開村についてのご提案
よね村の再開村についてのご提案よね村の再開村についてのご提案
よね村の再開村についてのご提案doku_sho
 
αλεξανδρος παπαδιαμαντης
αλεξανδρος παπαδιαμαντηςαλεξανδρος παπαδιαμαντης
αλεξανδρος παπαδιαμαντης1odimsxoleio
 
Développement de méthodes rapides pour l'authentification des produits biolog...
Développement de méthodes rapides pour l'authentification des produits biolog...Développement de méthodes rapides pour l'authentification des produits biolog...
Développement de méthodes rapides pour l'authentification des produits biolog...Pôle Qualiméditerranée
 
Trinh dien ho so bai day
Trinh dien ho so bai dayTrinh dien ho so bai day
Trinh dien ho so bai dayheocon020192
 
GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...
GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...
GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...Gelecek Hane
 
Почему ИграютВсе
Почему ИграютВсеПочему ИграютВсе
Почему ИграютВсеIgrayutVse
 
Кабінет Укр.мови
Кабінет Укр.мовиКабінет Укр.мови
Кабінет Укр.мовиOlga Poslovska
 
Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»DataArt
 
Trinh dien ho so bai day
Trinh dien ho so bai dayTrinh dien ho so bai day
Trinh dien ho so bai dayheocon020192
 
κολοκούβαρου
κολοκούβαρουκολοκούβαρου
κολοκούβαρουMaria Nyfoudi
 
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...INCUBUS CONSULTING
 
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...INCUBUS CONSULTING
 
Интернет для специальности психолога - важнейшие информационные сайты
Интернет для специальности психолога - важнейшие информационные сайтыИнтернет для специальности психолога - важнейшие информационные сайты
Интернет для специальности психолога - важнейшие информационные сайтыFyisher
 

Viewers also liked (16)

よね村の再開村についてのご提案
よね村の再開村についてのご提案よね村の再開村についてのご提案
よね村の再開村についてのご提案
 
αλεξανδρος παπαδιαμαντης
αλεξανδρος παπαδιαμαντηςαλεξανδρος παπαδιαμαντης
αλεξανδρος παπαδιαμαντης
 
Joomla! na MS Windows
Joomla! na MS WindowsJoomla! na MS Windows
Joomla! na MS Windows
 
Développement de méthodes rapides pour l'authentification des produits biolog...
Développement de méthodes rapides pour l'authentification des produits biolog...Développement de méthodes rapides pour l'authentification des produits biolog...
Développement de méthodes rapides pour l'authentification des produits biolog...
 
Trinh dien ho so bai day
Trinh dien ho so bai dayTrinh dien ho so bai day
Trinh dien ho so bai day
 
GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...
GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...
GelecekHane Halil Aksu - Açık İnovasyon Buluşması - Akıl Gıdıklayıcı İnovasyo...
 
Почему ИграютВсе
Почему ИграютВсеПочему ИграютВсе
Почему ИграютВсе
 
Кабінет Укр.мови
Кабінет Укр.мовиКабінет Укр.мови
Кабінет Укр.мови
 
Sample123
Sample123Sample123
Sample123
 
Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»
 
Trinh dien ho so bai day
Trinh dien ho so bai dayTrinh dien ho so bai day
Trinh dien ho so bai day
 
κολοκούβαρου
κολοκούβαρουκολοκούβαρου
κολοκούβαρου
 
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
 
K circle-qotm-02082104
K circle-qotm-02082104K circle-qotm-02082104
K circle-qotm-02082104
 
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
12% Assured Return on Property in Noida Expressway “Cosmic Corporate Park-2”@...
 
Интернет для специальности психолога - важнейшие информационные сайты
Интернет для специальности психолога - важнейшие информационные сайтыИнтернет для специальности психолога - важнейшие информационные сайты
Интернет для специальности психолога - важнейшие информационные сайты
 

Similar to Антон Нехаев - Многопоточное и распределенное программирование

A labs 2009 - внедрение agile
A labs 2009 - внедрение agileA labs 2009 - внедрение agile
A labs 2009 - внедрение agileAlexey Korsun
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with SeleniumSergey Shvets
 
JavaScript design patterns overview
JavaScript design patterns overview JavaScript design patterns overview
JavaScript design patterns overview Kseniya Redunova
 
основы микропроцессорной техники
основы микропроцессорной техникиосновы микропроцессорной техники
основы микропроцессорной техникиMary Dimitrova
 
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...IT Event
 
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)Nikolaj Mikulich
 
Image-based automation
Image-based automationImage-based automation
Image-based automationVitali Shulha
 
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва it-people
 
чмв лекция №5
чмв   лекция №5чмв   лекция №5
чмв лекция №5student_kai
 

Similar to Антон Нехаев - Многопоточное и распределенное программирование (12)

A labs 2009 - внедрение agile
A labs 2009 - внедрение agileA labs 2009 - внедрение agile
A labs 2009 - внедрение agile
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
JavaScript design patterns overview
JavaScript design patterns overview JavaScript design patterns overview
JavaScript design patterns overview
 
Моделирование поведения взаимодействующих агентов в среде с ограничениями
Моделирование поведения взаимодействующих агентов в  среде с ограничениямиМоделирование поведения взаимодействующих агентов в  среде с ограничениями
Моделирование поведения взаимодействующих агентов в среде с ограничениями
 
основы микропроцессорной техники
основы микропроцессорной техникиосновы микропроцессорной техники
основы микропроцессорной техники
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
 
Моделирование поведения сложных динамических систем
Моделирование поведения сложных динамических системМоделирование поведения сложных динамических систем
Моделирование поведения сложных динамических систем
 
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
 
Image-based automation
Image-based automationImage-based automation
Image-based automation
 
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 
чмв лекция №5
чмв   лекция №5чмв   лекция №5
чмв лекция №5
 

More from DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR PartnersDataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в ITDataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from insideDataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)DataArt
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtDataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's lifeDataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиDataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOpsDataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real lifeDataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестированияDataArt
 
Selenoid
SelenoidSelenoid
SelenoidDataArt
 
Selenide
SelenideSelenide
SelenideDataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...DataArt
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGDataArt
 

More from DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

Антон Нехаев - Многопоточное и распределенное программирование