Б Бёрнс - Распределенные системы. Паттерны проектирования
- Название:Распределенные системы. Паттерны проектирования
- Автор:
- Жанр:
- Издательство:Питер
- Год:2019
- ISBN:978-5-4461-0950-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Б Бёрнс - Распределенные системы. Паттерны проектирования краткое содержание
Распределенные системы. Паттерны проектирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Кроме того, для повышения надежности и максимизации па-раллелизма будем шардировать изображения на несколько очередей. Полная схема потока задач по размытию участков изображений с применением шардирования приведена на рис. 12.3.
После размытия номерных знаков на всех изображениях ре-зультат загрузим в другое место, а исходные изображения уда-лим. Оригиналы не следует удалять до тех пор, пока не будут обработаны все изображения. Они понадобятся на случай ка-тастрофического сбоя, если придется заново перезапустить процесс обработки. Для того чтобы дождаться обработки всех изображений, воспользуемся паттерном Join, рассмотренным в предыдущей главе. С его помощью мы объединим шардиро-ванные очереди задач в одну общую очередь, которая освободит 214Часть III. Паттерны проектирования систем пакетных вычислений









Рис. 12.3. Шардированная очередь с несколькими шардами для размытияизображения
элементы для дальнейшей обработки только после того, как все шарды завершат работу.
Теперь можно удалить оригиналы и начать распознавание ма-рок и цветов машин. Пропускную способность данного кон-вейера также хотелось бы максимизировать, поэтому восполь-зуемся паттерном Copier из предыдущей главы и создадим две отдельные очереди:
очередь задач по удалению оригиналов; очередь задач по определению цвета и марки машины. На рис. 12.4 схематически изображены упомянутые стадии об-работки.
Глава 12. Координированная пакетная обработка 215










Рис. 12.4. Этапы слияния и копирования очередей, удаления исходныхизображений и распознавания образов
Наконец, необходимо разработать очередь задач по распознава-нию автомобиля и его цвета, которая бы подводила статистику по данным параметрам. Для этого сначала применим шарди-рование, чтобы распределить работу на несколько очередей. В каждой из очередей будет два исполнителя: один будет рас-познавать положение и тип транспортного средства, а второй — определять цвет распознанной области. Для слияния снова воспользуемся паттерном Multi-Worker, рассмотренным в гла-ве 10. Как и ранее, разделение кода на несколько контейнеров 216Часть III. Паттерны проектирования систем пакетных вычислений позволяет использовать контейнер, определяющий цвет, в дру-гих системах для определения цветов других объектов, а не только автомобилей.
Выходные данные очереди в формате JSON будут выглядеть примерно следующим образом:
{
"ТС": {
"автомобиль": 12,
"грузовик": 7,
"мотоцикл": 4
},
"цвета": {
"белый": 8,
"черный": 3,
"синий": 6,
"красный": 6
}
}
В этих данных представлена информация, найденная в одном изображении. Чтобы собрать данные воедино, воспользуемся описанным ранее паттерном Reduce, ставшим популярным бла-годаря MapReduce. Просуммируем все элементы точно так же, как и в примере с подсчетом. Стадия свертки в качестве резуль-тата выдает итоговое количество образов и цветов, найденных во всем множестве снимков.
13 Заключение — новое начало?Все компании, независимо от своего происхождения, становят-ся цифровыми. Такие преобразования требуют создания API и сервисов, используемых в мобильных приложениях, устрой-ствах Интернета вещей (IoT) и даже в автономном транспорте и других системах. Рост ответственности, возлагаемой на такие системы, означает, что они должны проектироваться с учетом избыточности, отказоустойчивости и высокой доступности. В то же время требования бизнеса обуславливают потребность в высокой маневренности в плане разработки и внедрения но-вого ПО, поддержки старого, а также экспериментов с новыми пользовательскими и программными интерфейсами. Сочетание упомянутых факторов привело к значительному увеличению потребности в распределенных системах.
Создавать такие системы все еще слишком сложно. Суммарная стоимость их разработки, обновления и сопровождения очень 218Часть III. Паттерны проектирования систем пакетных вычислений высока. С другой стороны, количество людей, обладающих не-обходимыми навыками и способностями, слишком мало, чтобы удовлетворить растущий спрос.
Исторически возникновение подобных ситуаций в сфере раз-работки ПО и технологий приводило к появлению новых уров-ней абстракции и паттернов проектирования ПО. Они делали процесс разработки быстрее, проще и надежнее. Впервые это произошло с созданием первых компиляторов и языков про-граммирования. Потом появились объектно-ориентированные языки программирования на основе управляемого промежу-точного кода. В каждый из этих моментов накопленные тех-нические результаты кристаллизовали суть знаний и навыков экспертов в виде множества алгоритмов и паттернов соответ-ственно. Это позволило пользоваться данными результатами более широкой аудитории разработчиков-практиков. Развитие технологий и укоренение паттернов делало процесс разработки программного обеспечения более демократичным и расширяло круг разработчиков, способных строить приложения на новой платформе. Это, в свою очередь, привело к появлению еще большего количества приложений и росту их разнообразия, что, в свою очередь, повышало спрос на разработчиков с подобными навыками.
Читать дальшеИнтервал:
Закладка: