Ваш город
Москва
Ваш город Москва?
+7 928 117-10-37
Отдел продаж
Режим работы:
Пн-Сб 10:00—18:00;
Вс выходной
КАТАЛОГ ТОВАРОВ
0КорзинаПусто0 руб.
Товары в корзине
корзина пуста
КАТАЛОГ ТОВАРОВ
Корзина пуста0 руб.0
Товары в корзине
корзина пуста
Корзина пуста0 руб.0
Товары в корзине
корзина пуста

Реактивные шаблоны проектирования

Поделиться
Скидка!
Реактивные шаблоны проектирования
Реактивное программирование - совершенно новая и многообещающая парадигма, позволяющая эффективно решать задачи, связанные с созданием распределенных систем и программированием для JVM. Эта книга расскажет, как организовать поток задач, наладить обмен сообщениями между элементами программы, обеспечить параллельную и конкурентную обработку...
Характеристики
Автор(ы):
Роланд Кун, Брайан Ханафи, Джейми Аллен
Издательство:
Питер
Год издания:
2018
Кол-во страниц:
416
Переплёт:
Мягкий
Смотреть все
Получение информации о методах доставки
Артикул: 17859
Осталась 1 штука
5,80баллов
?
Количество бонусов которые вы получите при покупке данного товара
580
915
- 36%
Экономия 335
Количество:
Описание

Реактивное программирование - совершенно новая и многообещающая парадигма, позволяющая эффективно решать задачи, связанные с созданием распределенных систем и программированием для JVM. Эта книга расскажет, как организовать поток задач, наладить обмен сообщениями между элементами программы, обеспечить параллельную и конкурентную обработку и создавать надежные, отказоустойчивые и гибкие приложения. Перед вами - основополагающая работа по шаблонам проектирования (design patterns) этой парадигмы. Книга проиллюстрирована многочисленными примерами и ориентирована на опытных Java- и Scala-разработчиков.

Характеристики
Автор(ы)
Роланд Кун, Брайан Ханафи, Джейми Аллен
Переводчик
С. Черников
Издательство
Питер
Серия
Библиотека программиста
Год издания
2018
ISBN
978-5-4461-0474-1
Возрастное ограничение
16+
Кол-во страниц
416
Формат страниц
70x100/16 (170x240 мм)
Язык
Русский
Переплёт
Мягкий
Доп. сведения
Офсетная бумага
Иллюстрации
черно-белые
Тираж
1000 экз.
Вес
555 г
Отзывы

Loading...
Оглавление

Предисловие................................................................................................................16

Введение.....................................................................................................................18
Благодарности.............................................................................................................20
Роланд Кун...............................................................................................................20
Джейми Аллен..........................................................................................................21
Брайан Ханафи.........................................................................................................21
Об этой книге..............................................................................................................22
Для кого эта книга....................................................................................................22
Как читать книгу......................................................................................................23
Условные обозначения.............................................................................................23
Исходный код для примеров.....................................................................................24
Об авторах..................................................................................................................25
Часть I. Основные сведения
Глава 1. Зачем нужна реактивность.......................................................................... 29
1.1. Анатомия реактивного приложения...................................................................30
1.2. Справляемся с нагрузкой...................................................................................32
1.3. Обработка сбоев................................................................................................33
1.4. Придание системе отзывчивости........................................................................35
1.5. Избегаем архитектуры вида «большой ком грязи».............................................36
1.6. Взаимодействие нереактивных компонентов......................................................37
1.7. Резюме...............................................................................................................38
Глава 2. Подробный разбор манифеста реактивного программирования .................. 39
2.1. Реакция на действия пользователей..................................................................39
Понимание традиционного подхода.............................................................41
Анализ времени ожидания при наличии разделяемого ресурса....................42
Ограничение максимального времени ожидания с помощью очереди..........43
2.2. Применение параллелизма................................................................................45
Уменьшение времени ожидания с помощью параллелизма..........................46
Улучшение параллелизма с помощью составных объектов Future................47
Цена иллюзии последовательного выполнения............................................49
2.3. Ограничения параллельного выполнения..........................................................51
Закон Амдала...............................................................................................51
Универсальный закон масштабируемости.....................................................52
2.4. Реакция на сбой.................................................................................................54
Разделение и изоляция................................................................................56
Использование предохранителей.................................................................57
Наблюдение.................................................................................................59
2.5. Утрата строгой согласованности........................................................................60
ACID 2.0.......................................................................................................62
Принятие обновлений..................................................................................63
2.6. Необходимость в реактивных шаблонах проектирования...................................65
Управление сложностью..............................................................................66
Делаем модели программирования ближе к реальному миру.......................67
2.7. Резюме...............................................................................................................68
Глава 3. Инструменты реактивного программирования ............................................ 69
3.1. Первые реактивные решения.............................................................................69
3.2. Функциональное программирование..................................................................71
Неизменяемость...........................................................................................72
Ссылочная чистота.......................................................................................75
Побочные эффекты......................................................................................76
Функции первого класса..............................................................................77
3.3. Отзывчивость на действия пользователя...........................................................77
3.4. Инструментарий для реактивного программирования........................................79
Зеленые потоки...........................................................................................79
Циклы обработки событий...........................................................................80
Взаимодействие последовательных процессов.............................................82
Объекты Future и Promise.............................................................................84
Библиотека Reactive Extensions....................................................................89
Модель акторов...........................................................................................91
3.5. Резюме..............................................................................................................96
Часть II. Кратко о философии
реактивного программирования
Глава 4. Обмен сообщениями ................................................................................... 99
4.1. Сообщения.........................................................................................................99
4.2. Вертикальное масштабирование......................................................................100
4.3. Различия между передачей событий и сообщений...........................................101
4.4. Сравнение синхронности и асинхронности.......................................................104
4.5. Управление потоком........................................................................................106
4.6. Гарантии доставки...........................................................................................108
4.7. События и сообщения......................................................................................111
4.8. Синхронный обмен сообщениями.....................................................................113
4.9. Резюме............................................................................................................113
Глава 5. Прозрачность размещения ....................................................................... 114
5.1. Что такое прозрачность размещения...............................................................114
5.2. Обманчивость прозрачной удаленности...........................................................115
5.3. Открытый обмен сообщениями приходит на помощь........................................116
5.4. Оптимизация локального обмена сообщениями...............................................118
5.5. Потеря сообщений...........................................................................................118
5.6. Горизонтальная масштабируемость..................................................................120
5.7. Прозрачность размещения упрощает тестирование..........................................121
5.8. Динамическое связывание...............................................................................122
5.9. Резюме............................................................................................................124
Глава 6. Разделяй и властвуй ................................................................................. 125
6.1. Иерархическое разбиение проблем..................................................................125
6.2. Разница между зависимостями и дочерними модулями....................................127
6.3. Построение собственной большой корпорации................................................130
6.4. Преимущества спецификации и тестирования..................................................132
6.5. Горизонтальное и вертикальное масштабирование..........................................133
6.6. Резюме............................................................................................................134
Глава 7. Принципиальная обработка сбоев ............................................................ 135
7.1. Владение подразумевает взятие на себя обязательств.....................................135
7.2. Владение подразумевает управление жизненным циклом................................138
7.3. Устойчивость на всех уровнях..........................................................................139
7.4. Резюме.............................................................................................................140
Глава 8. Разделенная согласованность ................................................................... 141
8.1. Инкапсулированные модули в качестве решения.............................................142
8.2. Группирование данных и поведения в соответствии с транзакционными ограничениями..143
8.3. Моделирование межтранзакционных рабочих процессов.................................144
8.4. Единица измерения сбоев = единица измерения согласованности...................145
8.5. Разделение ответственности............................................................................145
8.6. Сохранение изолированных областей согласованности....................................148
8.7. Резюме.............................................................................................................149
Глава 9. Вынужденная неопределенность .............................................................. 150
9.1. Логическое программирование и декларативный способ передачи данных......150
9.2. Функциональное реактивное программирование..............................................152
9.3. Отсутствие общих данных упрощает параллелизм...........................................153
9.4. Конкурентность с разделяемым состоянием.....................................................154
9.5. Так что же нам делать?...................................................................................155
9.6. Резюме............................................................................................................156
Глава 10. Поток сообщений ................................................................................... 157
10.1. Продвижение данных.....................................................................................157
10.2. Моделирование процессов вашей предметной области..................................159
10.3. Определение ограничений устойчивости.......................................................160
10.4. Оценка потенциальной нагрузки и масштаба развертывания.........................161
10.5. Планирование управления потоками..............................................................161
10.6. Резюме...........................................................................................................162
Часть III. Шаблоны проектирования
Глава 11. Тестирование реактивных приложений .................................................. 165
11.1. Как тестировать.............................................................................................165
Модульные тесты.......................................................................................166
Компонентные тесты..................................................................................167
Цепные тесты............................................................................................167
Интеграционные тесты...............................................................................168
Приемочные пользовательские тесты.........................................................168
Тестирование с помощью стратегий черного и белого ящиков...................169
11.2. Тестовая среда...............................................................................................170
11.3. Асинхронное тестирование............................................................................171
Предоставление блокирующих получателей сообщений.............................172
Тонкости выбора времени ожидания..........................................................174
Проверка на отсутствие сообщения...........................................................181
Предоставление средств синхронного выполнения....................................182
Асинхронные утверждения.........................................................................184
Полностью асинхронные тесты..................................................................185
Проверка отсутствия асинхронных ошибок................................................187
11.4. Тестирование недетерминистских систем.......................................................191
Проблема планирования............................................................................191
Тестирование распределенных компонентов..............................................192
Симуляция акторов....................................................................................193
Распределенные компоненты.....................................................................194
11.5. Тестирование гибкости..................................................................................195
11.6. Тестирование устойчивости...........................................................................195
Устойчивость приложения..........................................................................196
Устойчивость инфраструктуры...................................................................200
11.7. Тестирование отзывчивости...........................................................................202
11.8. Резюме...........................................................................................................203
Глава 12. Шаблоны отказоустойчивости и восстановления .................................... 204
12.1. Шаблон «Простой компонент».......................................................................204
Постановка задачи.....................................................................................205
Использование шаблона............................................................................205
Пересмотр шаблона...................................................................................208
Область применения..................................................................................208
12.2. Шаблон «Ядро ошибок».................................................................................209
Постановка задачи.....................................................................................209
Использование шаблона............................................................................210
Пересмотр шаблона...................................................................................214
Область применения..................................................................................214
12.3. Шаблон «Допустимый отказ».........................................................................215
Постановка задачи.....................................................................................215
Использование шаблона............................................................................216
Пересмотр шаблона...................................................................................217
Замечания относительно реализации.........................................................218
Производная — шаблон «Пульс»................................................................219
Производная — шаблон «Упреждающий сигнал об отказе».......................220
12.4. Шаблон «Предохранитель»............................................................................221
Постановка задачи.....................................................................................222
Использование шаблона............................................................................223
Пересмотр шаблона...................................................................................226
Область применения..................................................................................227
12.5. Резюме...........................................................................................................228
Глава 13. Шаблоны репликации ............................................................................. 229
13.1. Шаблон репликации «Активный к пассивному»..............................................229
Постановка задачи.....................................................................................230
Использование шаблона............................................................................231
Пересмотр шаблона...................................................................................242
Область применения..................................................................................243
13.2. Шаблоны репликации с несколькими активными копиями..............................244
Репликация на основе консенсуса..............................................................244
Репликация с обнаружением и разрешением конфликтов..........................247
Бесконфликтные реплицируемые типы данных..........................................250
13.3. Шаблон репликации «Активный к активному»...............................................257
Постановка задачи.....................................................................................258
Использование шаблона............................................................................259
Пересмотр шаблона...................................................................................265
Сравнение с виртуальной синхронностью..................................................266
13.4. Резюме...........................................................................................................268
Глава 14. Шаблоны управления ресурсами ............................................................ 269
14.1. Шаблон инкапсуляции ресурсов.....................................................................269
Постановка задачи.....................................................................................270
Использование шаблона............................................................................270
Пересмотр шаблона...................................................................................277
Область применения..................................................................................278
14.2. Шаблон заимствования ресурсов...................................................................278
Постановка задачи.....................................................................................279
Использование шаблона............................................................................279
Пересмотр шаблона...................................................................................282
Область применения..................................................................................283
Замечания относительно реализации.........................................................283
Вариант: применение шаблона заимствования ресурсов для открытия
частичного доступа....................................................................................284
14.3. Шаблон «Составная команда»........................................................................284
Постановка задачи.....................................................................................285
Использование шаблона............................................................................286
Пересмотр шаблона...................................................................................294
Использование шаблона............................................................................294
14.4. Шаблон «Пул ресурсов».................................................................................295
Постановка задачи.....................................................................................295
Использование шаблона............................................................................296
Пересмотр шаблона...................................................................................299
Замечания относительно реализации.........................................................300
14.5. Шаблоны управляемой блокировки................................................................300
Постановка задачи.....................................................................................301
Использование шаблона............................................................................302
Пересмотр шаблона...................................................................................304
Область применения..................................................................................306
14.6. Резюме...........................................................................................................306
Глава 15. Шаблоны потока сообщений ................................................................... 308
15.1. Шаблон «Запрос — отклик»...........................................................................308
Постановка задачи.....................................................................................309
Использование шаблона............................................................................310
Распространенные реализации шаблона....................................................312
Пересмотр шаблона...................................................................................317
Область применения..................................................................................318
15.2. Шаблон «Самодостаточное сообщение».........................................................318
Постановка задачи.....................................................................................319
Использование шаблона............................................................................320
Пересмотр шаблона...................................................................................322
Область применения..................................................................................322
15.3. Шаблон запроса.............................................................................................323
Постановка задачи.....................................................................................323
Использование шаблона............................................................................324
Пересмотр шаблона...................................................................................327
Область применения..................................................................................329
15.4. Шаблон «Прямоток»......................................................................................329
Постановка задачи.....................................................................................329
Использование шаблона............................................................................330
Пересмотр шаблона...................................................................................331
Область применения..................................................................................331
15.5. Шаблон «Агрегатор»......................................................................................331
Постановка задачи.....................................................................................332
Использование шаблона............................................................................332
Пересмотр шаблона...................................................................................336
Область применения..................................................................................336
15.6. Шаблон «Повествование»..............................................................................337
Постановка задачи.....................................................................................337
Использование шаблона............................................................................338
Пересмотр шаблона...................................................................................340
Область применения..................................................................................341
15.7. Шаблон «Рукопожатие» (он же шаблон надежной доставки)..........................342
Постановка задачи.....................................................................................342
Использование шаблона............................................................................343
Пересмотр шаблона...................................................................................348
Область применения..................................................................................348
15.8. Резюме...........................................................................................................349
Глава 16. Шаблоны управления потоком ............................................................... 350
16.1. Модель «Извлечение»....................................................................................350
Постановка задачи.....................................................................................351
Использование шаблона............................................................................351
Пересмотр шаблона...................................................................................353
Область применения..................................................................................354
16.2. Шаблон управляемой очереди.......................................................................355
Постановка задачи.....................................................................................355
Использование шаблона............................................................................356
Пересмотр шаблона...................................................................................357
Область применения..................................................................................358
16.3. Шаблон отказа...............................................................................................358
Постановка задачи.....................................................................................359
Использование шаблона............................................................................359
Пересмотр шаблона...................................................................................361
Область применения..................................................................................364
16.4. Шаблон «Регулирование»..............................................................................364
Постановка задачи.....................................................................................364
Использование шаблона............................................................................365
Пересмотр шаблона...................................................................................367
16.5. Резюме...........................................................................................................368
Глава 17. Шаблоны для управления состоянием и обеспечения устойчивости ....... 369
17.1. Шаблон реализации предметной области.......................................................369
Постановка задачи.....................................................................................370
Использование шаблона............................................................................370
Пересмотр шаблона...................................................................................374
17.2. Шаблон сегментирования...............................................................................374
Постановка задачи.....................................................................................374
Использование шаблона............................................................................375
Пересмотр шаблона...................................................................................377
Важное замечание.....................................................................................377
17.3. Шаблон «Порождение событий»....................................................................378
Постановка задачи.....................................................................................378
Использование шаблона............................................................................379
Пересмотр шаблона...................................................................................380
Область применения..................................................................................381
17.4. Шаблон «Поток событий»...............................................................................382
Постановка задачи.....................................................................................382
Использование шаблона............................................................................382
Пересмотр шаблона...................................................................................384
Область применения..................................................................................385
17.5. Резюме...........................................................................................................386
Приложения
Приложение А. Создание схем для реактивных систем...........................................388
Приложение Б. Иллюстрированный пример............................................................390
Б.1. Географическое разделение............................................................................390
Б.2. Планирование потока информации..................................................................392
Шаг 1: прием данных.................................................................................393
Шаг 2: передача данных в подходящую географическую область..............394
Шаг 3: перераспределение данных
для повышения эффективности запросов..................................................395
Подведение итогов....................................................................................398
Б.3. А если что-то пойдет не так?...........................................................................398
Неполадки на клиентской стороне.............................................................399
Неполадки в сетевом интерфейсе клиента.................................................399
Отказ узла для приема данных..................................................................400
Сбой сетевого соединения между узлом приема данных
и областью карты.......................................................................................400
Отказ узла, обрабатывающего область карты............................................401
Отказ области с обобщенной информацией...............................................402
Сбой соединения между областями карты..................................................402
Отказ узла с представлением карты...........................................................402
Собираем воедино процесс обработки ошибок...........................................403
Б.4. Чему нас научил этот пример?.........................................................................403
Б.5. Дальнейшие шаги............................................................................................404
Приложение В. Манифест реактивного программирования.....................................405
В.1. Основной текст................................................................................................405
В.2. Глоссарий........................................................................................................407
Асинхронность...........................................................................................407
Гибкость в сравнении с масштабируемостью..............................................407
Делегирование...........................................................................................408
Изоляция и сдерживание...........................................................................408
Компонент.................................................................................................409
Масштабируемость.....................................................................................409
Обмен сообщениями в сравнении с событийной моделью..........................409
Обратное давление....................................................................................410
Отказ в сравнении с ошибкой....................................................................410
Отсутствие блокирования..........................................................................411
Пакетирование...........................................................................................411
Пользователь.............................................................................................412
Прозрачность размещения.........................................................................412
Протокол...................................................................................................413
Репликация................................................................................................413
Ресурс........................................................................................................413
Система.....................................................................................................414

Помощь
+7 928 117-10-37
Отдел продаж
Если у вас возникли вопросы при оформлении заказа, обратитесь по указанным контактам.
Мы используем файлы cookie, чтобы сайт был лучше для вас.