【愚公系列】2022年06月 .NET架构班 075-分布式中间件 ScheduleMaster的基本使用
一、ScheduleMaster的介绍
ScheduleMaster的官网:https://github.com/hey-hoho/ScheduleMasterCore
1.ScheduleMaster的基本概念
ScheduleMaster是一个开源的分布式任务调度系统,它基于Asp.Net Core平台构建,支持跨平台多节点部署运行。
2.ScheduleMaster的架构引进
2.1 传统解决方案
使用:订单微服务、支付微服务中,都会集成定时任务框架,然后分别使用定时任务框架进行超时订单回收,超时支付回收。
问题:如果微服务数量过多,每一个微服务都需要定时回收任务,那么就需要在每一个微服务中集成定时任务框架,然后在每一个微服务中实现定时任务的代码。就会导致维护量增大。因为所有微服务定时任务代码,都需要独立维护。
方案:ScheduleMaster
2.2 ScheduleMaster解决方案
使用:订单微服务、支付微服务中集成的定时任务框架,独立抽取出来,放到独立进程ScheduleMaster中。然后让ScheduleMaster对订单微服务的超时订单进行定时回收、对支付微服务的超时支付进行定时回收。
总结:这就是我们在电商系统中使用ScheduleMaster原因
二、ScheduleMaster的基本使用
1.ScheduleMaster准备
下载地址:https://gitee.com/hey-hoho/ScheduleMaster.git
如图所示
文档地址:https://github.com/hey-hoho/ScheduleMaster/wiki
2.MySQL准备
下载地址:https://dev.mysql.com/downloads/installer/
3.Net Core客户端准备
3.1 新建测试业务类
[ApiController]
[Route("[controller]")]
public class OrderController : ControllerBase
{
private readonly ILogger<OrderController> _logger;
public OrderController(ILogger<OrderController> logger)
{
_logger = logger;
}
/// <summary>
/// 超时订单回收
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult OrderCancel()
{
//1、超时订单回收
_logger.LogInformation("回收超时订单");
return Ok();
}
}
3.2 然后通过CMD启动程序
dotnet run
4.Hos.ScheduleMaster.Web准备
4.1 配置数据库
进入到appsetting.json文件中,增加配置
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
/*
Provider的可选值:sqlserver、postgresql、mysql,默认为mysql
ConnectionString是对应数据库类型的连接字符串,格式示例:
- sqlserver:"Persist Security Info = False; User ID =sa; Password =123456; Initial Catalog =schedule_master; Server =."
- postgresql:"Server=localhost;Port=5432;Database=schedule_master;User Id=postgres;Password=123456;Pooling=true;MaxPoolSize=20;"
- mysql:"Data Source=localhost;Database=schedule_master;User ID=root;Password=123456;pooling=true;CharSet=utf8mb4;port=3306;sslmode=none;TreatTinyAsBoolean=true"
*/
"DbConnector": {
"Provider": "mysql",
"ConnectionString": "Data Source=localhost;Database=schedule_master;User ID=root;Password=root;pooling=true;CharSet=utf8mb4;port=3306;sslmode=none;TreatTinyAsBoolean=true"
},
"AppSettings": {
"AdminDefaultPwd": "111111"
},
"NodeSetting": {
"IdentityName": "master-node",
"Role": "master",
"Protocol": "http",
"IP": "localhost",
"Port": 30000
}
}
4.2 进入到Hos.ScheduleMaster.Web publish
目录中
4.3 然后使用CMD启动Hos.ScheduleMaster.Web
在CMD中输入命令:dotnet Hos.ScheduleMaster.Web.dll
4.4 测试cheduleMaster启动是否成功
进入浏览器访问ScheduleMaster后台管理系统
浏览器访问 http://localhost:30000
输入Hos.ScheduleMaster.Web用户名和密码
用户名:admin密码:111111
5.Hos.ScheduleMaster.QuartzHost准备
5.1 配置数据库
进入到appsetting.json文件中,增加配置
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
/*
Provider的可选值:sqlserver、postgresql、mysql,默认为mysql
ConnectionString是对应数据库类型的连接字符串,格式示例:
- sqlserver:"Persist Security Info = False; User ID =sa; Password =123456; Initial Catalog =schedule_master; Server =."
- postgresql:"Server=localhost;Port=5432;Database=schedule_master;User Id=postgres;Password=123456;Pooling=true;MaxPoolSize=20;"
- mysql:"Data Source=localhost;Database=schedule_master;User ID=root;Password=123456;pooling=true;CharSet=utf8mb4;port=3306;sslmode=none;TreatTinyAsBoolean=true"
*/
"DbConnector": {
"Provider": "mysql",
"ConnectionString": "Data Source=localhost;Database=schedule_master;User ID=root;Password=root;pooling=true;CharSet=utf8mb4;port=3306;sslmode=none;TreatTinyAsBoolean=true"
},
"NodeSetting": {
"IdentityName": "worker1",
"Role": "worker",
"Protocol": "http",
"IP": "localhost",
"Port": 30001,
"Priority": 3,
"MaxConcurrency": 20
}
}
5.2 进入到Hos.ScheduleMaster.Web publish目录中
5.3 然后使用CMD启动Hos.ScheduleMaster.QuartzHost
在CMD中输入命令:dotnet Hos.ScheduleMaster.QuartzHost.dll –urls http://*:30001
5.4 Hos.ScheduleMaster.Web启动是否成功
进入浏览器访问Hos.ScheduleMaster.Web后台管理系统节点管理
如图所示:work1节点状态运行状态,意味着成功
6.超时订单任务设置
6.1 进入到Hos.ScheduleMaster.Web后台管理系统,任务列表
6.2 然后点击创建任务,创建HTTP任务,基础信息
6.3 然后创建Http接口信息
6.4 进人任务列表,查看任务状态
7.任务执行结果
7.1 Hos.ScheduleMaster.Web查看结果
7.1.1 进入到任务列表,点击订单任务日志
7.1.2 然后查看运行结果
7.2 接口端查看结果
- 点赞
- 收藏
- 关注作者
评论(0)