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

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

Искусство неизменяемой архитектуры: теория и практика управления данными в распределенных системах
Автор: Перри Майкл Л.
Переводчик: C. В. Минц
Дата выхода: 2022
Издательство: ДМК Пресс
Количество страниц: 390
Тип файла: 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#. Полезен опыт работы с распределенными вычислениями, моделированием данных или бизнес-анализом.


Похожее:

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

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