Паттерн Splitter ............................................................... 193
Паттерн Sharder .............................................................. 194
Паттерн Merger ............................................................... 196
Практикум. Создание событийно-ориентированного потока задач для регистрации нового пользователя ................ 198
Инфраструктура publish/subscribe .............................................. 201
Практикум. Развертывание Kafka ............................................... 202
Глава 12.Координированная пакетная обработка ....................... 205
Паттерн Join (барьерная синхронизация) ................................... 206
Паттерн Reduce ......................................................................... 207
Практикум. Подсчет ........................................................ 209
Суммирование ................................................................. 210
Гистограмма .................................................................... 211
Практикум. Конвейерная разметка
и обработка изображений ..................................................... 212
Глава 13.Заключение — новое начало? ..................................... 217
Об авторе ....................................................................................... 220
Об иллюстрации на обложке .......................................................... 221
Предисловие
Кому стоит прочесть эту книгу На сегодняшний день почти каждый разработчик является соз-дателем и/или потребителем распределенных систем. Даже относительно простые мобильные приложения опираются на облачные API, чтобы обеспечить доступность данных на любом устройстве, которым пожелает воспользоваться клиент. Будете ли вы новичком в разработке распределенных систем или зака-ленным в боях ветераном, паттерны и компоненты, описанные в этой книге, помогут превратить разработку таких систем из искусства в науку. Повторно используемые компоненты и пат-терны проектирования распределенных систем позволят вам сосредоточиться на важных деталях вашего приложения. Это издание поможет любому разработчику более качественно, эф-фективно и быстро создавать распределенные системы. Зачем я написал эту книгу
За свою карьеру разработчика программных систем — от веб-поисковиков до облачных систем — я создал множество мас-штабируемых, надежных распределенных систем. Каждая из Предисловие 13
них была, по большому счету, разработана с нуля. В целом это характерно для всех распределенных приложений. Несмотря на то что зачастую многие их принципы и логика работы со-впадают, шаблонные решения или повторно используемые компоненты не так-то просто применять. Это заставляло меня впустую тратить время на реализацию систем, качество которых могло быть лучше, чем оказывалось в конечном итоге. Появившиеся недавно технологии контейнеров и их орке-страторов фундаментально изменили ландшафт разработки распределенных систем. В наше распоряжение попал объект и интерфейс, которые позволяют выражать базовые паттерны проектирования распределенных систем и компоновать кон-тейнеризованные компоненты. Я написал эту книгу, чтобы сблизить нас, практикующих специалистов в области распре-деленных систем; чтобы у нас появились общий язык и общая стандартная библиотека; чтобы мы могли быстрее создавать более качественные системы.
Современный мир распределенных систем
Когда-то, много лет тому назад, люди писали программы, рабо-тавшие на той же машине, на которой к ним получали доступ пользователи. С тех пор ситуация изменилась. Теперь почти каждое приложение является распределенной системой , кото-
рая работает на многих машинах и к которой получает доступ множество пользователей по всему миру. Несмотря на их повсе-местное распространение, проектирование и реализация таких систем — «черная магия», которой владеют лишь избранные. Но, как и все другие технологии, мир распределенных систем разви-вается, упорядочивается и абстрагируется. В этой книге я опи-сываю набор обобщенных повторяемых паттернов (шаблонов), 14Предисловие
которые делают разработку надежных распределенных систем более доступной и эффективной. Внедрение паттернов проек-тирования и повторно используемых компонентов освобождает разработчиков от необходимости повторно реализовывать одни и те же системы. В сэкономленное время можно сосредоточить-ся на разработке ключевых частей приложения. Как ориентироваться в книге Книга разделена на четыре части следующим образом. Глава 1. Введение. Вводит понятие распределенной системы
и объясняет, каким образом паттерны проектирования и по-вторно используемые компоненты способствуют быстрой разработке надежных распределенных систем.
Читать дальше