【愚公系列】2022年06月 .NET架构班 075-分布式中间件 ScheduleMaster的基本使用

举报
愚公搬代码 发表于 2022/06/30 20:00:18 2022/06/30
【摘要】 一、ScheduleMaster的介绍ScheduleMaster的官网:https://github.com/hey-hoho/ScheduleMasterCore 1.ScheduleMaster的基本概念ScheduleMaster是一个开源的分布式任务调度系统,它基于Asp.Net Core平台构建,支持跨平台多节点部署运行。 2.ScheduleMaster的架构引进 2.1 传...

一、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 接口端查看结果

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。