1. Введение
Добро пожаловать в гостиТыквенный медленный разговор www.pkslow.comПолучайте больше отличных статей!
Spring相关文章:
Springboot-Cloud
Я написал статью ранееОбъясните введение Spring Batch на примерах, отличной среде пакетной обработки."объяснятьSpring Batch
Приступая к работе, но чтобы играть свою роль, параллельная обработка должна быть понята.
2 Четыре режима
В большинстве случаев однопоточный, однопроцессныйSpring Batch
Удалось удовлетворить ваши потребности. Прежде чем мы перейдем к более сложным функциям, давайте посмотрим, работают ли простые,Keep it Simple and Stupid
.
Однако, когда вы решите использовать параллельную обработку,Spring Batch
Также доступны различные варианты. Обычно делится на две категории:
- (1) Однопроцессный, многопоточный
- (2) Мультипроцесс
Разбивка выглядит следующим образом:
- (1) Многопоточный
Step
(один процесс) - (2) параллельно
Steps
(один процесс) - (3) Удаленный блок (многопроцессный)
- (4) Удаленный раздел (многопроцессный)
Из одного только названия сложно понять разницу между ними, давайте представим их по порядку.
2.1 Многопоточный шаг
предоставляяTaskExecutor
выполнить, иTaskExecutor
Его можно настроить, мы можем предоставить пул потоков на основеTaskExecutor
, вы можете добиться многопоточной обработки.
@Bean
public TaskExecutor taskExecutor(){
return new SimpleAsyncTaskExecutor("spring_batch");
}
@Bean
public Step sampleStep(TaskExecutor taskExecutor) {
return this.stepBuilderFactory.get("sampleStep")
.<String, String>chunk(10)
.reader(itemReader())
.writer(itemWriter())
.taskExecutor(taskExecutor)
.build();
}
2.2 Параллельные шаги
Этот очень похож на первый, но на самом деле совершенно другой. это несколькоsteps
обрабатываться параллельно. такjob
следует разложить на независимыеstep
, а не в пошаговой последовательности, чтобы его можно было выполнять параллельно. Например, следующий пример,step1
а такжеstep2
сливаться в одинflow1
,а такжеstep3
дляflow2
,flow1
а такжеflow2
можно обрабатывать параллельно.
код показывает, как показано ниже:
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(splitFlow())
.next(step4())
.build() //builds FlowJobBuilder instance
.build(); //builds Job instance
}
@Bean
public Flow splitFlow() {
return new FlowBuilder<SimpleFlow>("splitFlow")
.split(taskExecutor())
.add(flow1(), flow2())
.build();
}
@Bean
public Flow flow1() {
return new FlowBuilder<SimpleFlow>("flow1")
.start(step1())
.next(step2())
.build();
}
@Bean
public Flow flow2() {
return new FlowBuilder<SimpleFlow>("flow2")
.start(step3())
.build();
}
@Bean
public TaskExecutor taskExecutor(){
return new SimpleAsyncTaskExecutor("spring_batch");
}
2.3 Удаленная блокировка
В этом режимеstep
будет разбит на несколькоJava
Процесс обрабатывается, и основная программа и программа выполнения блока взаимодействуют через промежуточное программное обеспечение. Как показано ниже:
Как видно из рисунка выше, есть только один процесс чтенияManager
, а процессWorker
Их может быть больше одного, поэтому он подходит для сценариев, которые легко читать, но трудно обрабатывать.
2.4 Удаленный раздел
远程分区
а также远程分块
Их легко спутать, но на самом деле они разные. ранее объяснил远程分块
читается одним процессом, обрабатывается несколькими процессами; и远程分区
Он читается несколькими процессами, обрабатывается несколькими процессами и записывается несколькими процессами:
так,远程分区
Подходит для систем, подверженных узким местам ввода-вывода, поскольку разделяет операции чтения и записи на несколькоworker
в процессе.远程分区
Программное обеспечение промежуточного слоя, такое как очереди сообщений, может использоваться или не использоваться. это проходитPartitionHandler
для обработки разделов иPartitioner
определяет, как разделить.
3 Резюме
В этой статье описываетсяSpring Batch
Четыре режима параллельной обработки:多线程Step
,параллельноSteps
, удаленный блок, удаленный раздел. Первые два относительно просты и содержат примеры кода; последние два гораздо сложнее, особенно远程分区
режим, поставитьIO
Давление и давление деловой обработки разлагаются, что может значительно повысить эффективность обработки всего процесса. Позже мы специально объясним远程分区
Бар.
Добро пожаловать в публичный аккаунт WeChatТыква медленный разговор>, буду обновлять для вас...
Читайте больше, делитесь больше, пишите больше, организуйте больше.