micro-job分散式任務排程框架更新
micro-job
是一款分散式任務排程執行框架
,內部通過各個元件的Jersey
共享出的Rest
路徑進行資料訪問。
詳細開發文件 訪問官網
名詞解釋:
consumer
->任務消費節點
schedule
->任務排程器
provider
->任務生產者
registry
->任務註冊中心
任務註冊中心(registry)
registry
是任務註冊中心,在整個生態圈內擔任著各個元件註冊節點的任務,任務註冊中心實現方式是多樣化的,目前包含:memory
、zookeeper
、redis
、consul
等。
通過idea、eclipse
工具建立SpringBoot
專案並新增如下依賴到pom.xml
檔案內。
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-registry-memory</artifactId>
<version>{lastVersion}</version>
</dependency>
在resources
資源目錄下新增application.yml
配置檔案,配置內容如下所示:
server:
port: 9000
hengboy:
job:
registry:
# 任務註冊中心節點註冊方式
away: memory
任務排程器(schedule)
schedule
是任務排程器,每一個任務的建立都是通過排程器進行分配執行,分配過程中根據消費節點的負載均衡策略配置進行不同消費者節點任務消費。
在生產任務時,也會根據排程器的負載均衡策略
來進行篩選執行任務排程的排程器節點
。
通過idea、eclipse
工具建立SpringBoot
專案並新增如下依賴到pom.xml
檔案內。
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-schedule</artifactId>
<version>{lastVersion}</version>
</dependency>
在resources
資源目錄下新增application.yml
配置檔案,配置內容如下所示:
server:
port: 8081
hengboy:
job:
registry:
# 保持與任務註冊中心節點註冊方式一致即可
away: memory
schedule:
# 記憶體方式排程器處理任務佇列以及任務日誌的儲存
job-store-type: memory
任務消費節點(consumer)
consumer
是任務消費者執行節點,任務由consumer
進行定義以及上報,當schedule
呼叫消費者執行任務請求時,會自動根據jobKey
來執行對應的任務邏輯方法。
通過idea、eclipse
工具建立SpringBoot
專案並新增如下依賴到pom.xml
檔案內。
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-consumer</artifactId>
<version>{lastVersion}</version>
</dependency>
在resources
資源目錄下新增application.yml
配置檔案,配置內容如下所示:
server:
port: 8082
hengboy:
job:
registry:
# 保持與任務註冊中心節點註冊方式一致即可
away: memory
任務定義示例
我們來定義一個簡單的Job
,示例如下所示:
@Job(jobExecuteAway = JobExecuteAwayEnum.ONCE)
public class TestJob implements MicroJob {
/**
* logger instance
*/
static Logger logger = LoggerFactory.getLogger(TestJob.class);
@Override
public JobExecuteResult execute(JobExecuteParam jobExecuteParam) throws JobException {
logger.info("執行Key:{},執行引數:{}", jobExecuteParam.getJobKey(), jobExecuteParam.getJsonParam());
return JobExecuteResult.JOB_EXECUTE_SUCCESS;
}
}
在上面定義的
Job
對應的JobKey
為testJob
.
任務生產節點(provider)
provider
是任務生產節點,由業務方進行新增依賴並執行MicroJobProvider.newXxxJob
呼叫建立任務,如:建立訂單後
執行傳送郵件
通知操作。
通過idea、eclipse
工具建立SpringBoot
專案並新增如下依賴到pom.xml
檔案內。
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-provider</artifactId>
<version>{lastVersion}</version>
</dependency>
在resources
資源目錄下新增application.yml
配置檔案,配置內容如下所示:
server:
port: 8083
hengboy:
job:
registry:
# 保持與任務註冊中心節點註冊方式一致即可
away: memory
任務執行示例
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProviderTester {
/**
* 註冊任務提供者
*/
@Autowired
private MicroJobProvider microJobProvider;
@Test
public void newJob() {
// 建立的任務僅執行一次
microJobProvider.newOnceJob(OnceJobWrapper.Context()
// 對應consumer內定義任務的jobKey,預設為類名首字母小寫
.jobKey("testJob")
// 自定義的任務佇列key,可以準確定位任務並操作暫停、刪除等操作
.jobQueueKey(UUID.randomUUID().toString())
// 引數,任意型別引數,consumer消費時會轉換為json字串
.param(new HashMap() {
{
put("name", "admin");
}
})
.wrapper());
}
}
測試流程
- 啟動任務註冊中心
- 啟動任務排程中心
- 啟動任務消費者節點
- 執行ProviderTester#newJob單元測試方法
Folders
```
.
├── micro-job-autoconfigure
├── micro-job-dependencies
├── micro-job-samples
│ ├── sample-consumer
│ ├── sample-provider
│ ├── sample-registry-consul
│ ├── sample-registry-memory
│ ├── sample-registry-redis
│ ├── sample-registry-zookeeper
│ ├── sample-schedule
│ ├── pom.xml
│ └── README.md
├── micro-job-starters
│ ├── spring-boot-starter
│ ├── spring-boot-starter-provider
│ ├── spring-boot-starter-registry-consul
│ ├── spring-boot-starter-registry-memory
│ ├── spring-boot-starter-registry-redis
│ ├── spring-boot-starter-registry-zookeeper
│ ├── spring-boot-starter-schedule
│ └── pom.xml
├── .travis.yml
├── LICENSE
├── pom.xml
└── README.md
```
License
The Apache License
相關文章
- Aloha:一個分散式任務排程框架分散式框架
- 分散式任務排程分散式
- 新一代分散式任務排程框架分散式框架
- 分散式排程任務-ElasticJob分散式AST
- LTS分散式任務排程部署分散式
- 中介軟體---分散式任務排程---Celery分散式
- 分散式任務排程平臺XXL-JOB分散式
- 分散式任務排程系統設計小結分散式
- Spring Boot Quartz 分散式叢集任務排程實現Spring Bootquartz分散式
- 開源分散式任務排程系統就選:DolphinScheduler分散式
- laravel框架任務排程(定時執行任務)Laravel框架
- 任務排程框架Quartz快速入門!框架quartz
- 分散式任務排程平臺XXL-JOB快速搭建教程分散式
- SpringBoot自定義starter開發分散式任務排程實踐Spring Boot分散式
- 任務排程
- 帶有分散式鎖的Go計劃任務排程器- DEV分散式Godev
- 整合了這個分散式任務排程平臺,真的很爽~~分散式
- 真香!SpringBoot官方支援任務排程框架了!Spring Boot框架
- 分散式任務排程內的 MySQL 分頁查詢最佳化分散式MySql
- Java 分散式任務排程平臺:PowerJob 快速開始+配置詳解Java分散式
- 分散式系統架構之構建你的任務排程中心分散式架構
- Easy Scheduler 1.0.2 釋出,分散式工作流任務排程系統分散式
- 基於任務排程的企業級分散式批處理方案分散式
- Airflow 任務排程AI
- Laravel 任務排程Laravel
- LiteOS-任務篇-原始碼分析-任務排程函式原始碼函式
- 淺談分散式任務排程系統Celery的設計與實現分散式
- 一個輕量級的分散式定時任務排程平臺-Cloudtask分散式Cloud
- SchedulerX 如何幫助使用者解決分散式任務排程難題?分散式
- 一文快速入門任務排程框架-Quartz框架quartz
- SpringBoot整合任務排程框架Quartz及持久化配置Spring Boot框架quartz持久化
- Spring 指南(排程任務)Spring
- Spark中資源排程和任務排程Spark
- Elastic-job實戰(分散式作業排程框架)AST分散式框架
- SpringBoot專案接入分散式任務排程平臺xxl-job(2.0.2)說明Spring Boot分散式
- Timer和TimerTask 任務排程
- 聊聊PowerJob的任務排程
- Linux 定時任務排程Linux