Введение

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

В случае входящих запросов сначала проверяется локальный кеш, чтобы увидеть, есть ли в нем запрошенный ресурс. Если это не так, то выполняется поиск в удаленной базе данных и отправляется ответ. Этот поиск источников данных можно элегантно оптимизировать с помощью Futures, распараллелив доступ к источникам данных:

Что такое будущее?

Будущее — это заполнитель для результата асинхронной операции, который будет доступен в какой-то момент.

Цель

Будущее можно передать в качестве аргумента вызову другой процедуры до ее результата, чтобы этот вызов можно было оценить ранее.

Пример кода на Scala

Большинство операций с фьючерсами в Scala требуют неявного ExecutionContext в своей области видимости. Это реализация стратегии асинхронного выполнения кода Future. Язык программирования Scala предлагает такую ​​реализацию в пакете scala.concurrent, который просто распределяет фьючерсы по потокам в пуле. Технологии экосистемы Scala обычно предлагают собственную реализацию. Синтаксически код, который должен выполняться асинхронно, передается в Future между фигурными скобками. Метод find предоставляет новое будущее, которое содержит результат первого непровалившегося будущего из списка фьючерсов в необязательном виде. Если все фьючерсы потерпели неудачу, необязательный параметр содержит константу None вместо конкретного пользователя.

Заключительные слова

Как обозреватель кода я замечаю, что сотрудники по-прежнему мыслят последовательно, хотя аппаратное обеспечение и API-интерфейсы современных языков программирования уже давно позволяют параллельное программирование. Это устарело и влияет на работу пользователей. Чтобы противодействовать этому, сотрудники должны быть обучены текущему состоянию дел. В конце обучения разработчик программного обеспечения — также в роли рецензента — должен следить за тем, где реактивные конструкции будут уместны.

Искренне Ваш,

Давид Локек

Я в LinkedIn