v4.0 版本是对v3版本的重构,主要是为了解决v3版本的一些问题,以及提供更多的功能
This commit is contained in:
parent
b6f65740a4
commit
723f05c7af
|
@ -865,6 +865,17 @@
|
|||
<td>定时调度只要达到时间片开头就可以跑,数据调度要求达到时间片末尾才可以跑</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Cron</td>
|
||||
<td>执行频次</td>
|
||||
<td>String</td>
|
||||
<td>50</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>定时调度的Cron表达式</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Topic</td>
|
||||
<td>主题</td>
|
||||
|
@ -895,7 +906,7 @@
|
|||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</td>
|
||||
<td>从该时间开始调度作业任务,默认不设置时从当前时间开始</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
@ -906,7 +917,7 @@
|
|||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用</td>
|
||||
<td>到该时间停止调度作业,默认不设置时永不停止</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
@ -1019,6 +1030,17 @@
|
|||
<td>默认60秒,出错延迟后重新发放</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Deadline</td>
|
||||
<td>最后期限</td>
|
||||
<td>DateTime</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>超过该时间后,任务将不再执行</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Total</td>
|
||||
<td>总数</td>
|
||||
|
@ -1085,6 +1107,28 @@
|
|||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>LastStatus</td>
|
||||
<td>最后一次状态</td>
|
||||
<td>Int32</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>N</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>LastTime</td>
|
||||
<td>最后一次时间</td>
|
||||
<td>DateTime</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Data</td>
|
||||
<td>数据</td>
|
||||
|
|
|
@ -70,6 +70,14 @@ public partial class Job
|
|||
[BindColumn("Mode", "调度模式。定时调度只要达到时间片开头就可以跑,数据调度要求达到时间片末尾才可以跑", "")]
|
||||
public JobModes Mode { get => _Mode; set { if (OnPropertyChanging("Mode", value)) { _Mode = value; OnPropertyChanged("Mode"); } } }
|
||||
|
||||
private String _Cron;
|
||||
/// <summary>执行频次。定时调度的Cron表达式</summary>
|
||||
[DisplayName("执行频次")]
|
||||
[Description("执行频次。定时调度的Cron表达式")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Cron", "执行频次。定时调度的Cron表达式", "")]
|
||||
public String Cron { get => _Cron; set { if (OnPropertyChanging("Cron", value)) { _Cron = value; OnPropertyChanged("Cron"); } } }
|
||||
|
||||
private String _Topic;
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
[DisplayName("主题")]
|
||||
|
@ -87,19 +95,19 @@ public partial class Job
|
|||
public Int32 MessageCount { get => _MessageCount; set { if (OnPropertyChanging("MessageCount", value)) { _MessageCount = value; OnPropertyChanged("MessageCount"); } } }
|
||||
|
||||
private DateTime _Start;
|
||||
/// <summary>开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
|
||||
/// <summary>开始。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
|
||||
[DisplayName("开始")]
|
||||
[Description("开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用")]
|
||||
[Description("开始。从该时间开始调度作业任务,默认不设置时从当前时间开始")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("Start", "开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用", "")]
|
||||
[BindColumn("Start", "开始。从该时间开始调度作业任务,默认不设置时从当前时间开始", "")]
|
||||
public DateTime Start { get => _Start; set { if (OnPropertyChanging("Start", value)) { _Start = value; OnPropertyChanged("Start"); } } }
|
||||
|
||||
private DateTime _End;
|
||||
/// <summary>结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用</summary>
|
||||
/// <summary>结束。到该时间停止调度作业,默认不设置时永不停止</summary>
|
||||
[DisplayName("结束")]
|
||||
[Description("结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用")]
|
||||
[Description("结束。到该时间停止调度作业,默认不设置时永不停止")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("End", "结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用", "")]
|
||||
[BindColumn("End", "结束。到该时间停止调度作业,默认不设置时永不停止", "")]
|
||||
public DateTime End { get => _End; set { if (OnPropertyChanging("End", value)) { _End = value; OnPropertyChanged("End"); } } }
|
||||
|
||||
private Int32 _Step;
|
||||
|
@ -123,7 +131,7 @@ public partial class Job
|
|||
[DisplayName("偏移")]
|
||||
[Description("偏移。距离AntServer当前时间的秒数,避免因服务器之间的时间误差而错过部分数据,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Offset", "偏移。距离AntServer当前时间的秒数,避免因服务器之间的时间误差而错过部分数据,秒", "")]
|
||||
[BindColumn("Offset", "偏移。距离AntServer当前时间的秒数,避免因服务器之间的时间误差而错过部分数据,秒", "", ItemType = "TimeSpan")]
|
||||
public Int32 Offset { get => _Offset; set { if (OnPropertyChanging("Offset", value)) { _Offset = value; OnPropertyChanged("Offset"); } } }
|
||||
|
||||
private Int32 _MaxTask;
|
||||
|
@ -182,6 +190,14 @@ public partial class Job
|
|||
[BindColumn("ErrorDelay", "错误延迟。默认60秒,出错延迟后重新发放", "")]
|
||||
public Int32 ErrorDelay { get => _ErrorDelay; set { if (OnPropertyChanging("ErrorDelay", value)) { _ErrorDelay = value; OnPropertyChanged("ErrorDelay"); } } }
|
||||
|
||||
private DateTime _Deadline;
|
||||
/// <summary>最后期限。超过该时间后,任务将不再执行</summary>
|
||||
[DisplayName("最后期限")]
|
||||
[Description("最后期限。超过该时间后,任务将不再执行")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("Deadline", "最后期限。超过该时间后,任务将不再执行", "")]
|
||||
public DateTime Deadline { get => _Deadline; set { if (OnPropertyChanging("Deadline", value)) { _Deadline = value; OnPropertyChanged("Deadline"); } } }
|
||||
|
||||
private Int64 _Total;
|
||||
/// <summary>总数。任务处理的总数据,例如数据调度抽取得到的总行数,定时调度默认1</summary>
|
||||
[DisplayName("总数")]
|
||||
|
@ -230,6 +246,22 @@ public partial class Job
|
|||
[BindColumn("Enable", "启用", "")]
|
||||
public Boolean Enable { get => _Enable; set { if (OnPropertyChanging("Enable", value)) { _Enable = value; OnPropertyChanged("Enable"); } } }
|
||||
|
||||
private JobStatus _LastStatus;
|
||||
/// <summary>最后一次状态</summary>
|
||||
[DisplayName("最后一次状态")]
|
||||
[Description("最后一次状态")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("LastStatus", "最后一次状态", "")]
|
||||
public JobStatus LastStatus { get => _LastStatus; set { if (OnPropertyChanging("LastStatus", value)) { _LastStatus = value; OnPropertyChanged("LastStatus"); } } }
|
||||
|
||||
private DateTime _LastTime;
|
||||
/// <summary>最后一次时间</summary>
|
||||
[DisplayName("最后一次时间")]
|
||||
[Description("最后一次时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("LastTime", "最后一次时间", "")]
|
||||
public DateTime LastTime { get => _LastTime; set { if (OnPropertyChanging("LastTime", value)) { _LastTime = value; OnPropertyChanged("LastTime"); } } }
|
||||
|
||||
private String _Data;
|
||||
/// <summary>数据。Sql模板或C#模板</summary>
|
||||
[DisplayName("数据")]
|
||||
|
@ -334,6 +366,7 @@ public partial class Job
|
|||
"ClassName" => _ClassName,
|
||||
"DisplayName" => _DisplayName,
|
||||
"Mode" => _Mode,
|
||||
"Cron" => _Cron,
|
||||
"Topic" => _Topic,
|
||||
"MessageCount" => _MessageCount,
|
||||
"Start" => _Start,
|
||||
|
@ -348,12 +381,15 @@ public partial class Job
|
|||
"MaxRetain" => _MaxRetain,
|
||||
"MaxIdle" => _MaxIdle,
|
||||
"ErrorDelay" => _ErrorDelay,
|
||||
"Deadline" => _Deadline,
|
||||
"Total" => _Total,
|
||||
"Success" => _Success,
|
||||
"Error" => _Error,
|
||||
"Times" => _Times,
|
||||
"Speed" => _Speed,
|
||||
"Enable" => _Enable,
|
||||
"LastStatus" => _LastStatus,
|
||||
"LastTime" => _LastTime,
|
||||
"Data" => _Data,
|
||||
"CreateUserID" => _CreateUserID,
|
||||
"CreateUser" => _CreateUser,
|
||||
|
@ -376,6 +412,7 @@ public partial class Job
|
|||
case "ClassName": _ClassName = Convert.ToString(value); break;
|
||||
case "DisplayName": _DisplayName = Convert.ToString(value); break;
|
||||
case "Mode": _Mode = (JobModes)value.ToInt(); break;
|
||||
case "Cron": _Cron = Convert.ToString(value); break;
|
||||
case "Topic": _Topic = Convert.ToString(value); break;
|
||||
case "MessageCount": _MessageCount = value.ToInt(); break;
|
||||
case "Start": _Start = value.ToDateTime(); break;
|
||||
|
@ -390,12 +427,15 @@ public partial class Job
|
|||
case "MaxRetain": _MaxRetain = value.ToInt(); break;
|
||||
case "MaxIdle": _MaxIdle = value.ToInt(); break;
|
||||
case "ErrorDelay": _ErrorDelay = value.ToInt(); break;
|
||||
case "Deadline": _Deadline = value.ToDateTime(); break;
|
||||
case "Total": _Total = value.ToLong(); break;
|
||||
case "Success": _Success = value.ToLong(); break;
|
||||
case "Error": _Error = value.ToInt(); break;
|
||||
case "Times": _Times = value.ToInt(); break;
|
||||
case "Speed": _Speed = value.ToInt(); break;
|
||||
case "Enable": _Enable = value.ToBoolean(); break;
|
||||
case "LastStatus": _LastStatus = (JobStatus)value.ToInt(); break;
|
||||
case "LastTime": _LastTime = value.ToDateTime(); break;
|
||||
case "Data": _Data = Convert.ToString(value); break;
|
||||
case "CreateUserID": _CreateUserID = value.ToInt(); break;
|
||||
case "CreateUser": _CreateUser = Convert.ToString(value); break;
|
||||
|
@ -445,16 +485,19 @@ public partial class Job
|
|||
/// <summary>调度模式。定时调度只要达到时间片开头就可以跑,数据调度要求达到时间片末尾才可以跑</summary>
|
||||
public static readonly Field Mode = FindByName("Mode");
|
||||
|
||||
/// <summary>执行频次。定时调度的Cron表达式</summary>
|
||||
public static readonly Field Cron = FindByName("Cron");
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
public static readonly Field Topic = FindByName("Topic");
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
public static readonly Field MessageCount = FindByName("MessageCount");
|
||||
|
||||
/// <summary>开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
|
||||
/// <summary>开始。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
|
||||
public static readonly Field Start = FindByName("Start");
|
||||
|
||||
/// <summary>结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用</summary>
|
||||
/// <summary>结束。到该时间停止调度作业,默认不设置时永不停止</summary>
|
||||
public static readonly Field End = FindByName("End");
|
||||
|
||||
/// <summary>步进。切分任务的时间区间,秒</summary>
|
||||
|
@ -487,6 +530,9 @@ public partial class Job
|
|||
/// <summary>错误延迟。默认60秒,出错延迟后重新发放</summary>
|
||||
public static readonly Field ErrorDelay = FindByName("ErrorDelay");
|
||||
|
||||
/// <summary>最后期限。超过该时间后,任务将不再执行</summary>
|
||||
public static readonly Field Deadline = FindByName("Deadline");
|
||||
|
||||
/// <summary>总数。任务处理的总数据,例如数据调度抽取得到的总行数,定时调度默认1</summary>
|
||||
public static readonly Field Total = FindByName("Total");
|
||||
|
||||
|
@ -505,6 +551,12 @@ public partial class Job
|
|||
/// <summary>启用</summary>
|
||||
public static readonly Field Enable = FindByName("Enable");
|
||||
|
||||
/// <summary>最后一次状态</summary>
|
||||
public static readonly Field LastStatus = FindByName("LastStatus");
|
||||
|
||||
/// <summary>最后一次时间</summary>
|
||||
public static readonly Field LastTime = FindByName("LastTime");
|
||||
|
||||
/// <summary>数据。Sql模板或C#模板</summary>
|
||||
public static readonly Field Data = FindByName("Data");
|
||||
|
||||
|
@ -559,16 +611,19 @@ public partial class Job
|
|||
/// <summary>调度模式。定时调度只要达到时间片开头就可以跑,数据调度要求达到时间片末尾才可以跑</summary>
|
||||
public const String Mode = "Mode";
|
||||
|
||||
/// <summary>执行频次。定时调度的Cron表达式</summary>
|
||||
public const String Cron = "Cron";
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
public const String Topic = "Topic";
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
public const String MessageCount = "MessageCount";
|
||||
|
||||
/// <summary>开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
|
||||
/// <summary>开始。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
|
||||
public const String Start = "Start";
|
||||
|
||||
/// <summary>结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用</summary>
|
||||
/// <summary>结束。到该时间停止调度作业,默认不设置时永不停止</summary>
|
||||
public const String End = "End";
|
||||
|
||||
/// <summary>步进。切分任务的时间区间,秒</summary>
|
||||
|
@ -601,6 +656,9 @@ public partial class Job
|
|||
/// <summary>错误延迟。默认60秒,出错延迟后重新发放</summary>
|
||||
public const String ErrorDelay = "ErrorDelay";
|
||||
|
||||
/// <summary>最后期限。超过该时间后,任务将不再执行</summary>
|
||||
public const String Deadline = "Deadline";
|
||||
|
||||
/// <summary>总数。任务处理的总数据,例如数据调度抽取得到的总行数,定时调度默认1</summary>
|
||||
public const String Total = "Total";
|
||||
|
||||
|
@ -619,6 +677,12 @@ public partial class Job
|
|||
/// <summary>启用</summary>
|
||||
public const String Enable = "Enable";
|
||||
|
||||
/// <summary>最后一次状态</summary>
|
||||
public const String LastStatus = "LastStatus";
|
||||
|
||||
/// <summary>最后一次时间</summary>
|
||||
public const String LastTime = "LastTime";
|
||||
|
||||
/// <summary>数据。Sql模板或C#模板</summary>
|
||||
public const String Data = "Data";
|
||||
|
||||
|
|
|
@ -140,13 +140,14 @@
|
|||
<Column Name="ClassName" DataType="String" Length="100" Description="类名。支持该作业的处理器实现" />
|
||||
<Column Name="DisplayName" DataType="String" Description="显示名" />
|
||||
<Column Name="Mode" DataType="Int32" Description="调度模式。定时调度只要达到时间片开头就可以跑,数据调度要求达到时间片末尾才可以跑" Type="JobModes" />
|
||||
<Column Name="Cron" DataType="String" Description="执行频次。定时调度的Cron表达式" />
|
||||
<Column Name="Topic" DataType="String" Description="主题。消息调度时消费的主题" />
|
||||
<Column Name="MessageCount" DataType="Int32" Description="消息数" />
|
||||
<Column Name="Start" DataType="DateTime" Description="开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用" />
|
||||
<Column Name="End" DataType="DateTime" Description="结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),默认空表示无止境,消息调度不适用" />
|
||||
<Column Name="Start" DataType="DateTime" Description="开始。从该时间开始调度作业任务,默认不设置时从当前时间开始" />
|
||||
<Column Name="End" DataType="DateTime" Description="结束。到该时间停止调度作业,默认不设置时永不停止" />
|
||||
<Column Name="Step" DataType="Int32" Description="步进。切分任务的时间区间,秒" />
|
||||
<Column Name="BatchSize" DataType="Int32" Description="批大小。数据调度每次抽取数据的分页大小,或消息调度每次处理的消息数,定时调度不适用" />
|
||||
<Column Name="Offset" DataType="Int32" Description="偏移。距离AntServer当前时间的秒数,避免因服务器之间的时间误差而错过部分数据,秒" />
|
||||
<Column Name="Offset" DataType="Int32" ItemType="TimeSpan" Description="偏移。距离AntServer当前时间的秒数,避免因服务器之间的时间误差而错过部分数据,秒" />
|
||||
<Column Name="MaxTask" DataType="Int32" Description="并行度。一共允许多少个任务并行处理,多执行端时平均分配,确保该作业整体并行度" />
|
||||
<Column Name="MaxError" DataType="Int32" Description="最大错误。连续错误达到最大错误数时停止" />
|
||||
<Column Name="MaxRetry" DataType="Int32" Description="最大重试。默认10次,超过该次数后将不再重试" />
|
||||
|
@ -154,12 +155,15 @@
|
|||
<Column Name="MaxRetain" DataType="Int32" Description="保留。任务项保留天数,超过天数的任务项将被删除,默认3天" />
|
||||
<Column Name="MaxIdle" DataType="Int32" Description="最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警" />
|
||||
<Column Name="ErrorDelay" DataType="Int32" Description="错误延迟。默认60秒,出错延迟后重新发放" />
|
||||
<Column Name="Deadline" DataType="DateTime" Description="最后期限。超过该时间后,任务将不再执行" />
|
||||
<Column Name="Total" DataType="Int64" Description="总数。任务处理的总数据,例如数据调度抽取得到的总行数,定时调度默认1" />
|
||||
<Column Name="Success" DataType="Int64" Description="成功。成功处理的数据,取自于Handler.Execute返回值,或者ProcessItem返回true的个数" />
|
||||
<Column Name="Error" DataType="Int32" Description="错误" />
|
||||
<Column Name="Times" DataType="Int32" Description="次数" />
|
||||
<Column Name="Speed" DataType="Int32" Description="速度" />
|
||||
<Column Name="Enable" DataType="Boolean" Description="启用" />
|
||||
<Column Name="LastStatus" DataType="Int32" Description="最后一次状态" Type="JobStatus" />
|
||||
<Column Name="LastTime" DataType="DateTime" Description="最后一次时间" />
|
||||
<Column Name="Data" DataType="String" Length="-1" Description="数据。Sql模板或C#模板" />
|
||||
<Column Name="CreateUserID" DataType="Int32" Description="创建人" Category="扩展" />
|
||||
<Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
|
||||
|
|
Binary file not shown.
|
@ -6,7 +6,7 @@
|
|||
<Description>分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累。</Description>
|
||||
<Company>新生命开发团队</Company>
|
||||
<Copyright>©2002-2024 NewLife</Copyright>
|
||||
<VersionPrefix>3.4</VersionPrefix>
|
||||
<VersionPrefix>4.0</VersionPrefix>
|
||||
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
|
||||
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
|
||||
<FileVersion>$(Version)</FileVersion>
|
||||
|
@ -28,7 +28,7 @@
|
|||
<RepositoryUrl>https://github.com/NewLifeX/AntJob</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<PackageTags>新生命团队;X组件;NewLife;$(AssemblyName)</PackageTags>
|
||||
<PackageReleaseNotes>修正RPC粘包处理问题</PackageReleaseNotes>
|
||||
<PackageReleaseNotes>架构升级</PackageReleaseNotes>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
||||
|
|
11
Readme.MD
11
Readme.MD
|
@ -20,6 +20,14 @@
|
|||
使用教程:[https://newlifex.com/blood/antjob](https://newlifex.com/blood/antjob)
|
||||
体验地址:[http://ant.newlifex.com](http://ant.newlifex.com/)
|
||||
|
||||
# v4架构升级
|
||||
v4版本是对v3版本的重构,主要是为了解决v3版本的一些问题,以及提供更多的功能。
|
||||
v4版本亮点:
|
||||
1. []新增Http接入,由AntWeb提供调度服务,无需部署AntServer,满足轻量级项目需要。(进行中,等NewLife.Remoting提供WebsocketClient)
|
||||
2. []增强定时调度,支持指定Cron表达式,逐步替代Start+Step的恒定间隔定时调度
|
||||
3. []提前生成任务,提前下发给执行器,到时间后马上执行,提高任务执行时间精度
|
||||
4. []支持任务主动延迟,任务在执行中发现数据条件未满足时,可以向调度中心请求延迟一段时间后再执行,增加执行次数但不增加错误次数
|
||||
|
||||
# 功能特点
|
||||
AntJob的核心是**蚂蚁算法**:**把任意大数据拆分成为小块,采用蚂蚁搬家策略计算每一块!**
|
||||
(蚂蚁搬家,一个馒头掉在地上,众多小蚂蚁会把馒头掰成小块小块往家里般!)
|
||||
|
@ -28,7 +36,7 @@ AntJob的核心是**蚂蚁算法**:**把任意大数据拆分成为小块,
|
|||
|
||||
2016年在中通快递某产品项目中使用该算法进行大数据实时计算,成功挑战每日1200万的订单。并进一步发展衍生成为重量级实时计算平台,集分布式计算、集群调度、配置中心、负载均衡、故障转移、跨机房冗余、作业监控告警、百亿级数据清洗、超大Redis缓存(>2T)于一身,于2019年达到每年万亿级计算量(2019年双十一日订单量破亿)。
|
||||
|
||||
AntJob是开源简化版,仅提供分布式计算和集中调度能力,支持百亿级调度(需要改造)。
|
||||
AntJob是开源简化版,仅提供分布式计算和集中调度能力,支持百亿级调度。
|
||||
|
||||
AntJob主要功能点:
|
||||
1. 作业处理器。每一个最小业务模块实现一个处理器类,用于处理这一类作业。例如同步数据表时,每张表写一个处理器类,并在调度中心注册一个作业,调度中心按照作业时间切片得到任务,然后把任务(主要包含时间区间)分派给各个计算节点上的处理器类执行。又如,每天汇总计算是一个作业,而每月汇总计算又是另一个作业;
|
||||
|
@ -40,6 +48,7 @@ AntJob主要功能点:
|
|||
1. 作业面板。在Web控制台上可查看每个应用所有作业的运行状态,或修改参数;
|
||||
1. 作业重置。调整作业参数,让其再次处理某段时间的任务数据,例如重算过去一个月的数据;
|
||||
|
||||
|
||||
# 定时调度
|
||||
以下源码位于 [https://github.com/NewLifeX/AntJob/tree/master/Samples/HisAgent](https://github.com/NewLifeX/AntJob/tree/master/Samples/HisAgent)
|
||||
|
||||
|
|
Loading…
Reference in New Issue