Искусство неизменяемой архитектуры: теория и практика управления данными в распределенных системах

Искусство неизменяемой архитектуры: теория и практика управления данными в распределенных системах

Искусство неизменяемой архитектуры: теория и практика управления данными в распределенных системах

Автор: Майкл Л. Перри
Переводчик: C. В. Минц
Дата выхода: 2022
Издательство: ДМК Пресс
Количество страниц: 390
Размер файла: 10,5 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Об авторе............................................................................................................16
О техническом рецензенте..............................................................................17
Благодарности..................................................................................................18
Введение.............................................................................................................20
ЧАСТЬ I. ОПРЕДЕЛЕНИЕ....................................................................................25
Глава 1. Почему неизменяемая архитектура.....................................................26
Решение проблемы неизменяемости................................................................26
Проблемы с неизменяемостью.........................................................................27
Начинаем новое путешествие..........................................................................27
Ошибки распределенных вычислений............................................................28
Сеть ненадежна...........................................................................................28
Время задержки не равно нулю.................................................................29
Топология не меняется..............................................................................30
Изменение предположений.......................................................................30
Неизменяемость меняет все........................................................................31
Совместное изменяемое состояние..........................................................32
Структурное разделение ...........................................................................32
Проблема двух генералов...........................................................................34
Заранее подготовленный протокол..........................................................36
Уменьшение неопределенности...............................................................36
Дополнительное сообщение......................................................................37
Доказательство невозможности................................................................38
Смягчение ограничений...................................................................................39
Переопределение проблемы.....................................................................40
Решать и действовать.................................................................................40
Принять истину..........................................................................................41
Действенный протокол..............................................................................41
Примеры неизменяемой архитектуры............................................................42
Git................................................................................................................43
Блокчейн.....................................................................................................44
Docker..........................................................................................................46
Глава 2. Формы неизменяемой архитектуры......................................48
Выведение состояния из истории....................................................................48
Исторические записи.................................................................................49
Опираясь на прошлое.........................................................................49
Развитие понимания...........................................................................50
Изменяемые объекты.................................................................................50
Идентичность......................................................................................50
Изменение состояния.........................................................................51
Проекции....................................................................................................51
Два вида состояния.............................................................................52
Проецирование объектов...................................................................52
Поиск событий...................................................................................................53
Генерация событий.....................................................................................53
CQRS............................................................................................................54
DDD..............................................................................................................55
Взгляд с точки зрения функций ...............................................................56
Коммутативные и идемпотентные события............................................57
Асинхронное обновление представления модели..........................................58
Цикл обновления........................................................................................58
Однонаправленный поток данных...........................................................60
Неизменяемая архитектура приложений.................................................61
Историческое моделирование..........................................................................62
Частичный порядок....................................................................................62
Предшественники......................................................................................63
Преемники..................................................................................................65
Неизменяемые графы................................................................................66
Совместная работа.....................................................................................68
Ациклические графы.................................................................................69
Своевременность........................................................................................69
Ограничения исторического моделирования.................................................70
Отсутствие центральной власти...............................................................71
Отсутствие часов реального времени.......................................................72
Отсутствие ограничений уникальности...................................................72
Отсутствие агрегирования.........................................................................73
Глава 3. Как читать историческую модель............................................75
Графы типов фактов..........................................................................................76
Шахматная партия.............................................................................................80
Важные атрибуты.......................................................................................81
Цепочка фактов..........................................................................................81
Исход партии..............................................................................................83
Графы экземпляров фактов..............................................................................85
Бессмертная партия..........................................................................................87
Регистрация ходов......................................................................................88
Блестящая победа.......................................................................................91
Язык фактологического моделирования.........................................................92
Объявление типов фактов.........................................................................92
Запрос модели............................................................................................94
Переход по уровням...................................................................................95
Объединение совпадений..........................................................................95
Экзистенциальные квантификаторы................................................96
Текущее значение.......................................................................................98
Правила авторизации................................................................................99
Шахматное приложение..................................................................................100
Примеры использования.........................................................................101
Интерфейс пользователя.........................................................................102
Действия............................................................................................102
Представления...................................................................................103
ЧАСТЬ II. ПРИМЕНЕНИЕ....................................................................105
Глава 4. Независимость от местоположения......................................106
Моделирование с неизменяемостью.............................................................107
Синхронизация................................................................................................107
Изучение соглашений.....................................................................................108
Идентичность..................................................................................................108
Автоинкрементные идентификаторы....................................................108
Зависимость от среды.......................................................................109
Вставка отношения «родитель–ребенок»........................................110
Удаленное создание..........................................................................111
URL-адреса................................................................................................111
Идентификация, не зависящая от местоположения..............................112
Естественные ключи.........................................................................113
GUID....................................................................................................114
Временные метки..............................................................................114
Кортежи..............................................................................................114
Хеши...................................................................................................115
Открытые ключи...............................................................................116
Случайные числа...............................................................................116
Причинность....................................................................................................117
Упорядочивание шагов............................................................................117
Транзитивное свойство............................................................................119
Параллелизм.............................................................................................120
Частичный порядок..................................................................................121
Теорема CAP.....................................................................................................121
Определение CAP.....................................................................................122
Доказательство теоремы CAP..................................................................124
Проверка алгоритма..........................................................................125
Конечная согласованность..............................................................................127
Виды согласованности.............................................................................128
Сильная конечная согласованность в системе ретрансляции..............129
Идемпотентность и коммутативность....................................................130
Получение сильной конечной согласованности....................................131
Система управления контактами............................................................133
Воспроизведение истории.......................................................................135
Бесконфликтные реплицированные типы данных (CRDT)..........................136
CRDT, основанные на состоянии.............................................................137
Частично упорядоченное состояние................................................137
Причинная история...........................................................................138
Векторные часы........................................................................................139
История фактов...............................................................................................141
Наборы......................................................................................................142
Частичная упорядоченность.............................................................142
Обновление........................................................................................143
Слияние..............................................................................................143
Исторические записи...............................................................................143
Различение записей..........................................................................144
Удаление записи................................................................................145
Изменение записи.............................................................................146
Записи причинно-следственно связаны.........................................146
Преимущества явной причинности.................................................148
Исторические факты................................................................................150
Заключение......................................................................................................150
Глава 5. Анализ...............................................................................................152
Примеры использования.........................................................................153
От сценария использования к решению.................................................154
От расширения к преемственности........................................................155
Данные.............................................................................................................158
Идентификаторы......................................................................................158
Кардинальность........................................................................................159
Изменение................................................................................................162
Представления.................................................................................................164
Поиск точки старта...................................................................................164
Аннотированные каркасы.......................................................................165
Удаление из списков................................................................................166
Сотрудничество...............................................................................................170
Регионы.....................................................................................................170
Пересечение границ..........................................................................171
Разговоры..................................................................................................173
Факты о публикации.........................................................................173
Взаимодействие подсистем..............................................................174
Допустимые упорядочения.............................................................................175
Устранение условий гонки.......................................................................176
Реагирование на различные допустимые заказы..................................177
Последствия.....................................................................................................179
Индексы....................................................................................................180
Ограничения уникальности.............................................................180
Навигация..........................................................................................181
Поиск..................................................................................................182
Ожидаемое количество результатов.......................................................183
Отсутствие неявного порядка.................................................................184
Агрегаты.............................................................................................185
Итерации............................................................................................186
Порядок создания.....................................................................................186
Глава 6. Переходы состояний...................................................................188
Множество свойств..........................................................................................189
Доставка и выставление счетов...............................................................190
Внедрение обратных заказов у поставщика..........................................191
Отмены и возвраты..................................................................................191
Параллельные конечные автоматы........................................................192
Много дочерних элементов............................................................................193
Отслеживание проблем в программном обеспечении..........................194
Дочернее состояние.................................................................................195
Составные диаграммы перехода состояний...........................................195
Декларативная функция состояний........................................................196
Условная проверка...........................................................................................197
Допустимость неопределенного состояния...........................................198
Циклы в изменении состояния...............................................................199
Сбор данных во время переходов...........................................................200
Неизменяемые переходы состояний......................................................201
Вопрос, стоящий за состоянием.....................................................................202
Перевод конечного автомата в историческую модель..........................202
Выполнение заказов.........................................................................202
Отслеживание изменений в программном обеспечении..............205
Причины для вычисления состояния......................................................207
Обработка следующего действия.....................................................208
Поиск рабочих элементов.................................................................209
Выполнение компенсирующих транзакций...................................210
Единый источник истины...............................................................................211
Оркестраторы...........................................................................................212
Согласованное состояние.................................................................212
Центральная проверка......................................................................212
Сходящиеся истории................................................................................213
Определение неизменяемых записей.............................................213
Запрос для следующего действия....................................................213
Локальное фиксирование действий.................................................214
Определите компенсирующие действия.........................................214
Глава 7. Безопасность...................................................................................215
Доказательство авторства...............................................................................215
Ключевые пары.........................................................................................216
Дайджест...................................................................................................217
Авторизация....................................................................................................218
Факты принципала...................................................................................219
Запрос авторизации.................................................................................219
Первоначальная авторизация.................................................................220
Предоставление полномочий.........................................................................222
Ограниченные полномочия.....................................................................223
Неограниченные полномочия.................................................................224
Транзитивная авторизация.....................................................................226
Отмена......................................................................................................226
Авторизация при получении...................................................................228
Конфиденциальность......................................................................................229
Недоверенные узлы..................................................................................229
Асимметричное шифрование..................................................................229
Асимметричное ограничение размера............................................230
Шифрование симметричного ключа...............................................230
Шифрование исторических фактов........................................................231
Ограничьте распространение конфиденциальных фактов..................232
Правила распространения................................................................232
Доказательства..................................................................................233
Атаки и контрмеры..................................................................................234
Секретность......................................................................................................235
Общий симметричный ключ...................................................................236
Секретный канал для обсуждения...................................................236
Создание секретного канала............................................................237
Командные правила распространения............................................238
Ограничение области применения общего ключа................................239
Когорты..............................................................................................239
Периоды.............................................................................................240
Глава 8. Шаблоны..........................................................................................242
Структурные шаблоны....................................................................................242
Сущность...................................................................................................243
Структура...........................................................................................243
Пример...............................................................................................244
Последствия.......................................................................................244
Связанные шаблоны.........................................................................244
Владение...................................................................................................245
Структура...........................................................................................245
Пример...............................................................................................247
Последствия.......................................................................................248
Связанные шаблоны.........................................................................248
Удаление....................................................................................................248
Структура...........................................................................................249
Пример...............................................................................................249
Последствия.......................................................................................250
Связанные шаблоны.........................................................................250
Восстановление........................................................................................251
Структура...........................................................................................251
Пример...............................................................................................252
Последствия.......................................................................................253
Связанные шаблоны.........................................................................253
Членство....................................................................................................253
Структура...........................................................................................253
Пример...............................................................................................254
Последствия.......................................................................................255
Связанные шаблоны.........................................................................256
Изменяемое свойство..............................................................................256
Структура...........................................................................................256
Пример...............................................................................................259
Последствия.......................................................................................260
Связанные шаблоны.........................................................................262
Ссылка на сущность.................................................................................262
Структура...........................................................................................262
Пример...............................................................................................263
Последствия.......................................................................................264
Связанные шаблоны.........................................................................265
Шаблоны рабочих процессов..........................................................................265
Транзакция...............................................................................................266
Структура...........................................................................................266
Пример...............................................................................................267
Последствия.......................................................................................268
Связанные шаблоны.........................................................................268
Очередь.....................................................................................................268
Структура...........................................................................................269
Пример...............................................................................................269
Последствия.......................................................................................270
Связанные шаблоны.........................................................................271
Период.......................................................................................................271
Структура...........................................................................................271
Пример...............................................................................................272
Последствия.......................................................................................274
Связанные шаблоны.........................................................................274
Исходящие................................................................................................274
Структура...........................................................................................275
Пример...............................................................................................279
Последствия.......................................................................................280
Связанные шаблоны.........................................................................280
Проектирование на основе ограничений......................................................281
ЧАСТЬ III. РЕАЛИЗАЦИЯ...................................................................283
Глава 9. Инверсии запросов......................................................................284
Механизация проблемы..................................................................................285
Анатомия запроса...........................................................................................285
Последовательность шагов......................................................................286
Фильтр по экзистенциальному состоянию............................................287
Затронутое множество....................................................................................288
Вычисление затронутого набора.............................................................289
Инвертирование длинных запросов.......................................................290
Неудовлетворительные инверсии...........................................................291
Движение назад...............................................................................................292
Доказательство полноты..........................................................................293
Новые результаты............................................................................................294
Дальнейшая оптимизация.......................................................................295
Экзистенциальные условия............................................................................296
Рекурсивная инверсия.............................................................................297
Условия хвоста..........................................................................................298
Удаление результатов..............................................................................299
Когда удаление не является удалением..................................................301
Вложенные подзапросы..................................................................................302
Тавтологические условия.........................................................................304
Продолжение доказательства полноты ..................................................306
Потенциальные и фактические изменения..................................................307
Удаление отсутствующих результатов....................................................308
Кеши есть множества...............................................................................308
Инверсия запросов на практике..............................................................309
Глава 10. Базы данных SQL.......................................................................310
Идентичность..................................................................................................311
Хранение с адресацией по содержанию.................................................311
Преимущества...................................................................................312
Коллизии хешей................................................................................313
Вероятность коллизии хешей...........................................................314
Избегайте использования хешей в качестве первичных ключей.......315
Структура таблицы...................................................................................315
Отношения.......................................................................................................317
Вставка преемников.................................................................................318
Необязательные предшественники........................................................318
Много предшественников.......................................................................319
Канонический хеш множества.........................................................320
Вставка многих предшественников.................................................321
Запросы............................................................................................................322
Соединения...............................................................................................322
Коррелированные подзапросы................................................................323
Производные таблицы.............................................................................324
Выбор результатов...................................................................................325
Оптимизация...................................................................................................326
Ложные соединения.................................................................................327
Охватывающие индексы..........................................................................328
Where Not Exists........................................................................................328
Изменяемые свойства.......................................................................329
Удаление............................................................................................329
Очереди..............................................................................................330
Интеграция......................................................................................................332
Интеграция унаследованных приложений.............................................333
Сканеры.............................................................................................333
Триггеры............................................................................................334
Захват изменений данных ...............................................................335
Создание отчетов из баз данных.............................................................335
Агностичные к приложениям хранилища.....................................................336
Общая таблица фактов.............................................................................337
Отношения предшественников...............................................................338
Управление версиями..............................................................................339
Избегайте последовательных номеров версий...............................340
Структурное версионирование........................................................341
Глава 11. Коммуникация............................................................................343
Гарантии доставки...........................................................................................343
Лучшие усилия..........................................................................................345
Подтверждение.........................................................................................345
Безопасные методы...........................................................................346
Идемпотентные методы...................................................................346
Неидемпотентные методы...............................................................348
Повторная попытка в пределах соединения...................................349
Долговечные протоколы..........................................................................349
Очереди..............................................................................................349
Темы...................................................................................................350
Обработка сообщений.....................................................................................350
Большинство протоколов являются асинхронными.............................351
HTTP обычно является синхронным......................................................351
Синхронизация данных..................................................................................352
В рамках организации.............................................................................353
Опорные точки..................................................................................353
Многие подписчики..........................................................................355
Ответы................................................................................................356
Уведомления......................................................................................357
Между организациями.............................................................................358
Асинхронный через HTTP................................................................358
Webhook.............................................................................................359
Эмуляция REST..................................................................................360
Клиенты, подключающиеся время от времени......................................361
Очередь на стороне клиента.............................................................362
Закладка на стороне клиента...........................................................363
Выбор подмножества........................................................................364
Предотвращение избыточных загрузок..........................................367
Глава 12. Генерируемое поведение.......................................................369
Проекции..........................................................................................................370
Определение проекций............................................................................370
Конвейеры проекций...............................................................................372
Заинтересованность........................................................................................373
Интерес к удаленным сущностям...........................................................374
Интерес к прошлым периодам................................................................376
Совместное использование интересов...................................................376
Потеря интереса.......................................................................................377
Неизменяемые среды выполнения................................................................379
Генерация модели....................................................................................380
Выполнение запросов..............................................................................380
Тестирование............................................................................................381
Взаимодействие с пользователем...........................................................382
Взаимодействие........................................................................................383
Неизменяемые организации..........................................................................385
Основа для принятия решений...............................................................385
Глобально распределенные системы......................................................386

 Прочитав эту книгу, вы поймете преимущества использования неизменяемых объектов в ваших распределенных системах. Вы узнаете набор правил для идентификации и обмена неизменяемыми объектами, а также увидите коллекцию полезных теорем, которые гарантируют, что распределенные системы, которые вы строите, будут иметь конечную согласованность. Используя шаблоны, вы найдете, где истина сходится, увидите, как изменения происходят ассоциативно, а не последовательно, и придете к комфортному пониманию того, что нет единственного источника истины. Приведенные практические примеры наглядно показывают, как создавать программное обеспечение, используя описанные шаблоны, методы и инструменты. К концу чтения вы будете владеть языком и ресурсами, необходимыми для уверенного анализа и построения распределенных систем.

 Книга предназначена для архитекторов программного обеспечения и опытных разработчиков. Она содержит примеры на SQL и таких языках, как JavaScript и C#. Полезен опыт работы с распределенными вычислениями, моделированием данных или бизнес-анализом.


Похожее:

Список отзывов:

Нет отзывов к книге.