Как часто мы должны использовать фьючерсов и актеров? Есть альтернативы? [закрыто]

Я считаю, что Spring Boot поддерживает загрузку карт свойств из коробки с помощью аннотации @ConfigurationProperties .

Согласно этим документам вы можете загружать свойства:

my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com

в bean, как это:

@ConfigurationProperties(prefix="my")
public class Config {

    private List servers = new ArrayList();

    public List getServers() {
        return this.servers;
    }
}

Раньше я использовал функцию @ConfigurationProperties, но без загрузки на карту. Для включения этой функции вам необходимо использовать аннотацию @EnableConfigurationProperties .

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

0
задан jonrsharpe 16 January 2019 в 07:58
поделиться

1 ответ

Я думаю, что стоит проводить различие между истинным параллелизмом и более широким параллелизмом .

Параллелизм - это способ заставить ваш код работать быстрее, выполняя несколько вычислений одновременно. Это может варьироваться от SIMD-инструкций на процессоре до распределенных приложений на нескольких серверах. Выбор параллелизма будет зависеть от характера проблемы.

Параллелизм - это способ реализовать разделение задач путем разделения кода на разные секции, которые , по-видимому, выполняются одновременно. Основная цель - позволить приложению манипулировать несколькими задачами, даже если оно выполняется в одном потоке.

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

Scala на самом деле не поддерживает инструкции SIMD (возможно, из-за основ JVM), но есть библиотеки для ускорения GPU, на которые вы обязательно должны обратить внимание, если выполняете тяжелые вычисления.

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

Фьючерсы могут использоваться для порождения задач для параллельного выполнения, но им не хватает контроля над планированием (они запускаются немедленно), поэтому лучше использовать одну из библиотек задач Scala.

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

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

0
ответ дан Tim 16 January 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: