不需要动态步进,只会增加复杂度,不到每天上亿级别的数据,动态步进意义不大,还不如用固定步进硬抗过去

This commit is contained in:
大石头 2020-04-06 23:18:26 +08:00
parent 230f51aca0
commit 00bf09cfa2
9 changed files with 103 additions and 255 deletions

View File

@ -51,8 +51,8 @@ namespace AntJob.Data.Entity
}
// 截断错误信息,避免过长
var len = _.Description.Length;
if (!Description.IsNullOrEmpty() && len > 0 && Description.Length > len) Description = Description.Substring(0, len);
var len = _.Remark.Length;
if (!Remark.IsNullOrEmpty() && len > 0 && Remark.Length > len) Remark = Remark.Substring(0, len);
var app = App;
if (isNew && app != null)

View File

@ -81,59 +81,35 @@ namespace AntJob.Data.Entity
public Int32 MessageCount { get { return _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 { return _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 { return _End; } set { if (OnPropertyChanging(__.End, value)) { _End = value; OnPropertyChanged(__.End); } } }
private Int32 _Step;
/// <summary>步进。最大区间大小,秒</summary>
/// <summary>步进。切分任务的时间区间,秒</summary>
[DisplayName("步进")]
[Description("步进。最大区间大小,秒")]
[Description("步进。切分任务的时间区间,秒")]
[DataObjectField(false, false, false, 0)]
[BindColumn("Step", "步进。最大区间大小,秒", "")]
[BindColumn("Step", "步进。切分任务的时间区间,秒", "")]
public Int32 Step { get { return _Step; } set { if (OnPropertyChanging(__.Step, value)) { _Step = value; OnPropertyChanged(__.Step); } } }
private Int32 _MinStep;
/// <summary>最小步进。默认5秒</summary>
[DisplayName("最小步进")]
[Description("最小步进。默认5秒")]
[DataObjectField(false, false, false, 0)]
[BindColumn("MinStep", "最小步进。默认5秒", "")]
public Int32 MinStep { get { return _MinStep; } set { if (OnPropertyChanging(__.MinStep, value)) { _MinStep = value; OnPropertyChanged(__.MinStep); } } }
private Int32 _MaxStep;
/// <summary>最大步进。默认3600秒</summary>
[DisplayName("最大步进")]
[Description("最大步进。默认3600秒")]
[DataObjectField(false, false, false, 0)]
[BindColumn("MaxStep", "最大步进。默认3600秒", "")]
public Int32 MaxStep { get { return _MaxStep; } set { if (OnPropertyChanging(__.MaxStep, value)) { _MaxStep = value; OnPropertyChanged(__.MaxStep); } } }
private Int32 _StepRate;
/// <summary>步进率。动态调节步进时不能超过该比率百分位默认100%</summary>
[DisplayName("步进率")]
[Description("步进率。动态调节步进时不能超过该比率百分位默认100%")]
[DataObjectField(false, false, false, 0)]
[BindColumn("StepRate", "步进率。动态调节步进时不能超过该比率百分位默认100%", "")]
public Int32 StepRate { get { return _StepRate; } set { if (OnPropertyChanging(__.StepRate, value)) { _StepRate = value; OnPropertyChanged(__.StepRate); } } }
private Int32 _BatchSize;
/// <summary>批大小</summary>
/// <summary>批大小。在任务时间区间内分页处理,或者每个任务的消息数</summary>
[DisplayName("批大小")]
[Description("批大小")]
[Description("批大小。在任务时间区间内分页处理,或者每个任务的消息数")]
[DataObjectField(false, false, false, 0)]
[BindColumn("BatchSize", "批大小", "")]
[BindColumn("BatchSize", "批大小。在任务时间区间内分页处理,或者每个任务的消息数", "")]
public Int32 BatchSize { get { return _BatchSize; } set { if (OnPropertyChanging(__.BatchSize, value)) { _BatchSize = value; OnPropertyChanged(__.BatchSize); } } }
private Int32 _Offset;
@ -248,20 +224,20 @@ namespace AntJob.Data.Entity
[BindColumn("Enable", "启用", "")]
public Boolean Enable { get { return _Enable; } set { if (OnPropertyChanging(__.Enable, value)) { _Enable = value; OnPropertyChanged(__.Enable); } } }
private String _Description;
private String _Remark;
/// <summary>内容</summary>
[DisplayName("内容")]
[Description("内容")]
[DataObjectField(false, false, true, 2000)]
[BindColumn("Message", "内容", "")]
public String Description { get { return _Description; } set { if (OnPropertyChanging(__.Description, value)) { _Description = value; OnPropertyChanged(__.Description); } } }
[BindColumn("Remark", "内容", "")]
public String Remark { get { return _Remark; } set { if (OnPropertyChanging(__.Remark, value)) { _Remark = value; OnPropertyChanged(__.Remark); } } }
private Int32 _CreateUserID;
/// <summary>创建</summary>
[DisplayName("创建")]
[Description("创建")]
/// <summary>创建</summary>
[DisplayName("创建")]
[Description("创建")]
[DataObjectField(false, false, false, 0)]
[BindColumn("CreateUserID", "创建", "")]
[BindColumn("CreateUserID", "创建", "")]
public Int32 CreateUserID { get { return _CreateUserID; } set { if (OnPropertyChanging(__.CreateUserID, value)) { _CreateUserID = value; OnPropertyChanged(__.CreateUserID); } } }
private String _CreateUser;
@ -289,11 +265,11 @@ namespace AntJob.Data.Entity
public String CreateIP { get { return _CreateIP; } set { if (OnPropertyChanging(__.CreateIP, value)) { _CreateIP = value; OnPropertyChanged(__.CreateIP); } } }
private Int32 _UpdateUserID;
/// <summary>更新</summary>
[DisplayName("更新")]
[Description("更新")]
/// <summary>更新</summary>
[DisplayName("更新")]
[Description("更新")]
[DataObjectField(false, false, false, 0)]
[BindColumn("UpdateUserID", "更新", "")]
[BindColumn("UpdateUserID", "更新", "")]
public Int32 UpdateUserID { get { return _UpdateUserID; } set { if (OnPropertyChanging(__.UpdateUserID, value)) { _UpdateUserID = value; OnPropertyChanged(__.UpdateUserID); } } }
private String _UpdateUser;
@ -342,9 +318,6 @@ namespace AntJob.Data.Entity
case __.Start : return _Start;
case __.End : return _End;
case __.Step : return _Step;
case __.MinStep : return _MinStep;
case __.MaxStep : return _MaxStep;
case __.StepRate : return _StepRate;
case __.BatchSize : return _BatchSize;
case __.Offset : return _Offset;
case __.MaxTask : return _MaxTask;
@ -360,7 +333,7 @@ namespace AntJob.Data.Entity
case __.Times : return _Times;
case __.Speed : return _Speed;
case __.Enable : return _Enable;
case __.Description : return _Description;
case __.Remark : return _Remark;
case __.CreateUserID : return _CreateUserID;
case __.CreateUser : return _CreateUser;
case __.CreateTime : return _CreateTime;
@ -387,9 +360,6 @@ namespace AntJob.Data.Entity
case __.Start : _Start = value.ToDateTime(); break;
case __.End : _End = value.ToDateTime(); break;
case __.Step : _Step = value.ToInt(); break;
case __.MinStep : _MinStep = value.ToInt(); break;
case __.MaxStep : _MaxStep = value.ToInt(); break;
case __.StepRate : _StepRate = value.ToInt(); break;
case __.BatchSize : _BatchSize = value.ToInt(); break;
case __.Offset : _Offset = value.ToInt(); break;
case __.MaxTask : _MaxTask = value.ToInt(); break;
@ -405,7 +375,7 @@ namespace AntJob.Data.Entity
case __.Times : _Times = value.ToInt(); break;
case __.Speed : _Speed = value.ToInt(); break;
case __.Enable : _Enable = value.ToBoolean(); break;
case __.Description : _Description = Convert.ToString(value); break;
case __.Remark : _Remark = Convert.ToString(value); break;
case __.CreateUserID : _CreateUserID = value.ToInt(); break;
case __.CreateUser : _CreateUser = Convert.ToString(value); break;
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
@ -448,25 +418,16 @@ namespace AntJob.Data.Entity
/// <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>
/// <summary>步进。切分任务的时间区间,秒</summary>
public static readonly Field Step = FindByName(__.Step);
/// <summary>最小步进。默认5秒</summary>
public static readonly Field MinStep = FindByName(__.MinStep);
/// <summary>最大步进。默认3600秒</summary>
public static readonly Field MaxStep = FindByName(__.MaxStep);
/// <summary>步进率。动态调节步进时不能超过该比率百分位默认100%</summary>
public static readonly Field StepRate = FindByName(__.StepRate);
/// <summary>批大小</summary>
/// <summary>批大小。在任务时间区间内分页处理,或者每个任务的消息数</summary>
public static readonly Field BatchSize = FindByName(__.BatchSize);
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
@ -512,9 +473,9 @@ namespace AntJob.Data.Entity
public static readonly Field Enable = FindByName(__.Enable);
/// <summary>内容</summary>
public static readonly Field Description = FindByName(__.Description);
public static readonly Field Remark = FindByName(__.Remark);
/// <summary>创建</summary>
/// <summary>创建</summary>
public static readonly Field CreateUserID = FindByName(__.CreateUserID);
/// <summary>创建者</summary>
@ -526,7 +487,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
public static readonly Field CreateIP = FindByName(__.CreateIP);
/// <summary>更新</summary>
/// <summary>更新</summary>
public static readonly Field UpdateUserID = FindByName(__.UpdateUserID);
/// <summary>更新者</summary>
@ -568,25 +529,16 @@ namespace AntJob.Data.Entity
/// <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>
/// <summary>步进。切分任务的时间区间,秒</summary>
public const String Step = "Step";
/// <summary>最小步进。默认5秒</summary>
public const String MinStep = "MinStep";
/// <summary>最大步进。默认3600秒</summary>
public const String MaxStep = "MaxStep";
/// <summary>步进率。动态调节步进时不能超过该比率百分位默认100%</summary>
public const String StepRate = "StepRate";
/// <summary>批大小</summary>
/// <summary>批大小。在任务时间区间内分页处理,或者每个任务的消息数</summary>
public const String BatchSize = "BatchSize";
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
@ -632,9 +584,9 @@ namespace AntJob.Data.Entity
public const String Enable = "Enable";
/// <summary>内容</summary>
public const String Description = "Description";
public const String Remark = "Remark";
/// <summary>创建</summary>
/// <summary>创建</summary>
public const String CreateUserID = "CreateUserID";
/// <summary>创建者</summary>
@ -646,7 +598,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
public const String CreateIP = "CreateIP";
/// <summary>更新</summary>
/// <summary>更新</summary>
public const String UpdateUserID = "UpdateUserID";
/// <summary>更新者</summary>
@ -689,25 +641,16 @@ namespace AntJob.Data.Entity
/// <summary>消息数</summary>
Int32 MessageCount { get; set; }
/// <summary>开始。大于等于</summary>
/// <summary>开始。大于等于,下一个任务的起点</summary>
DateTime Start { get; set; }
/// <summary>结束。小于不等于</summary>
/// <summary>结束。小于不等于,默认空表示无止境</summary>
DateTime End { get; set; }
/// <summary>步进。最大区间大小,秒</summary>
/// <summary>步进。切分任务的时间区间,秒</summary>
Int32 Step { get; set; }
/// <summary>最小步进。默认5秒</summary>
Int32 MinStep { get; set; }
/// <summary>最大步进。默认3600秒</summary>
Int32 MaxStep { get; set; }
/// <summary>步进率。动态调节步进时不能超过该比率百分位默认100%</summary>
Int32 StepRate { get; set; }
/// <summary>批大小</summary>
/// <summary>批大小。在任务时间区间内分页处理,或者每个任务的消息数</summary>
Int32 BatchSize { get; set; }
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
@ -753,9 +696,9 @@ namespace AntJob.Data.Entity
Boolean Enable { get; set; }
/// <summary>内容</summary>
String Description { get; set; }
String Remark { get; set; }
/// <summary>创建</summary>
/// <summary>创建</summary>
Int32 CreateUserID { get; set; }
/// <summary>创建者</summary>
@ -767,7 +710,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
String CreateIP { get; set; }
/// <summary>更新</summary>
/// <summary>更新</summary>
Int32 UpdateUserID { get; set; }
/// <summary>更新者</summary>

View File

@ -11,9 +11,9 @@ namespace AntJob.Data.Entity
[Serializable]
[DataObject]
[Description("应用历史。应用的操作历史")]
[BindIndex("IX_devicehistory_AppID_Action", false, "AppID,Action")]
[BindIndex("IX_devicehistory_CreateTime", false, "CreateTime")]
[BindTable("devicehistory", Description = "应用历史。应用的操作历史", ConnName = "Ant", DbType = DatabaseType.None)]
[BindIndex("IX_AppHistory_AppID_Action", false, "AppID,Action")]
[BindIndex("IX_AppHistory_CreateTime", false, "CreateTime")]
[BindTable("AppHistory", Description = "应用历史。应用的操作历史", ConnName = "Ant", DbType = DatabaseType.None)]
public partial class AppHistory : IAppHistory
{
#region
@ -102,7 +102,7 @@ namespace AntJob.Data.Entity
[DisplayName("内容")]
[Description("内容")]
[DataObjectField(false, false, true, 2000)]
[BindColumn("Content", "内容", "")]
[BindColumn("Remark", "内容", "")]
public String Remark { get { return _Remark; } set { if (OnPropertyChanging(__.Remark, value)) { _Remark = value; OnPropertyChanged(__.Remark); } } }
#endregion

View File

@ -123,11 +123,11 @@ namespace AntJob.Data.Entity
public Int64 Error { get { return _Error; } set { if (OnPropertyChanging(__.Error, value)) { _Error = value; OnPropertyChanged(__.Error); } } }
private Int64 _Cost;
/// <summary>耗时。总耗时,秒</summary>
/// <summary>耗时。执行任务总耗时,秒</summary>
[DisplayName("耗时")]
[Description("耗时。总耗时,秒")]
[Description("耗时。执行任务总耗时,秒")]
[DataObjectField(false, false, false, 0)]
[BindColumn("Cost", "耗时。总耗时,秒", "")]
[BindColumn("Cost", "耗时。执行任务总耗时,秒", "")]
public Int64 Cost { get { return _Cost; } set { if (OnPropertyChanging(__.Cost, value)) { _Cost = value; OnPropertyChanged(__.Cost); } } }
private Int64 _Speed;
@ -285,7 +285,7 @@ namespace AntJob.Data.Entity
/// <summary>错误</summary>
public static readonly Field Error = FindByName(__.Error);
/// <summary>耗时。总耗时,秒</summary>
/// <summary>耗时。执行任务总耗时,秒</summary>
public static readonly Field Cost = FindByName(__.Cost);
/// <summary>速度。每秒处理数</summary>
@ -351,7 +351,7 @@ namespace AntJob.Data.Entity
/// <summary>错误</summary>
public const String Error = "Error";
/// <summary>耗时。总耗时,秒</summary>
/// <summary>耗时。执行任务总耗时,秒</summary>
public const String Cost = "Cost";
/// <summary>速度。每秒处理数</summary>
@ -418,7 +418,7 @@ namespace AntJob.Data.Entity
/// <summary>错误</summary>
Int64 Error { get; set; }
/// <summary>耗时。总耗时,秒</summary>
/// <summary>耗时。执行任务总耗时,秒</summary>
Int64 Cost { get; set; }
/// <summary>速度。每秒处理数</summary>

View File

@ -105,11 +105,11 @@ namespace AntJob.Data.Entity
public String Remark { get { return _Remark; } set { if (OnPropertyChanging(__.Remark, value)) { _Remark = value; OnPropertyChanged(__.Remark); } } }
private Int32 _CreateUserID;
/// <summary>创建</summary>
[DisplayName("创建")]
[Description("创建")]
/// <summary>创建</summary>
[DisplayName("创建")]
[Description("创建")]
[DataObjectField(false, false, false, 0)]
[BindColumn("CreateUserID", "创建", "")]
[BindColumn("CreateUserID", "创建", "")]
public Int32 CreateUserID { get { return _CreateUserID; } set { if (OnPropertyChanging(__.CreateUserID, value)) { _CreateUserID = value; OnPropertyChanged(__.CreateUserID); } } }
private String _CreateUser;
@ -137,11 +137,11 @@ namespace AntJob.Data.Entity
public String CreateIP { get { return _CreateIP; } set { if (OnPropertyChanging(__.CreateIP, value)) { _CreateIP = value; OnPropertyChanged(__.CreateIP); } } }
private Int32 _UpdateUserID;
/// <summary>更新</summary>
[DisplayName("更新")]
[Description("更新")]
/// <summary>更新</summary>
[DisplayName("更新")]
[Description("更新")]
[DataObjectField(false, false, false, 0)]
[BindColumn("UpdateUserID", "更新", "")]
[BindColumn("UpdateUserID", "更新", "")]
public Int32 UpdateUserID { get { return _UpdateUserID; } set { if (OnPropertyChanging(__.UpdateUserID, value)) { _UpdateUserID = value; OnPropertyChanged(__.UpdateUserID); } } }
private String _UpdateUser;
@ -267,7 +267,7 @@ namespace AntJob.Data.Entity
/// <summary>内容</summary>
public static readonly Field Remark = FindByName(__.Remark);
/// <summary>创建</summary>
/// <summary>创建</summary>
public static readonly Field CreateUserID = FindByName(__.CreateUserID);
/// <summary>创建者</summary>
@ -279,7 +279,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
public static readonly Field CreateIP = FindByName(__.CreateIP);
/// <summary>更新</summary>
/// <summary>更新</summary>
public static readonly Field UpdateUserID = FindByName(__.UpdateUserID);
/// <summary>更新者</summary>
@ -330,7 +330,7 @@ namespace AntJob.Data.Entity
/// <summary>内容</summary>
public const String Remark = "Remark";
/// <summary>创建</summary>
/// <summary>创建</summary>
public const String CreateUserID = "CreateUserID";
/// <summary>创建者</summary>
@ -342,7 +342,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
public const String CreateIP = "CreateIP";
/// <summary>更新</summary>
/// <summary>更新</summary>
public const String UpdateUserID = "UpdateUserID";
/// <summary>更新者</summary>
@ -394,7 +394,7 @@ namespace AntJob.Data.Entity
/// <summary>内容</summary>
String Remark { get; set; }
/// <summary>创建</summary>
/// <summary>创建</summary>
Int32 CreateUserID { get; set; }
/// <summary>创建者</summary>
@ -406,7 +406,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
String CreateIP { get; set; }
/// <summary>更新</summary>
/// <summary>更新</summary>
Int32 UpdateUserID { get; set; }
/// <summary>更新者</summary>

View File

@ -50,11 +50,11 @@ namespace AntJob.Data.Entity
public String Content { get { return _Content; } set { if (OnPropertyChanging(__.Content, value)) { _Content = value; OnPropertyChanged(__.Content); } } }
private Int32 _CreateUserID;
/// <summary>创建</summary>
[DisplayName("创建")]
[Description("创建")]
/// <summary>创建</summary>
[DisplayName("创建")]
[Description("创建")]
[DataObjectField(false, false, false, 0)]
[BindColumn("CreateUserID", "创建", "")]
[BindColumn("CreateUserID", "创建", "")]
public Int32 CreateUserID { get { return _CreateUserID; } set { if (OnPropertyChanging(__.CreateUserID, value)) { _CreateUserID = value; OnPropertyChanged(__.CreateUserID); } } }
private DateTime _CreateTime;
@ -74,11 +74,11 @@ namespace AntJob.Data.Entity
public String CreateIP { get { return _CreateIP; } set { if (OnPropertyChanging(__.CreateIP, value)) { _CreateIP = value; OnPropertyChanged(__.CreateIP); } } }
private Int32 _UpdateUserID;
/// <summary>更新</summary>
[DisplayName("更新")]
[Description("更新")]
/// <summary>更新</summary>
[DisplayName("更新")]
[Description("更新")]
[DataObjectField(false, false, false, 0)]
[BindColumn("UpdateUserID", "更新", "")]
[BindColumn("UpdateUserID", "更新", "")]
public Int32 UpdateUserID { get { return _UpdateUserID; } set { if (OnPropertyChanging(__.UpdateUserID, value)) { _UpdateUserID = value; OnPropertyChanged(__.UpdateUserID); } } }
private DateTime _UpdateTime;
@ -157,7 +157,7 @@ namespace AntJob.Data.Entity
/// <summary>内容。一般是json格式</summary>
public static readonly Field Content = FindByName(__.Content);
/// <summary>创建</summary>
/// <summary>创建</summary>
public static readonly Field CreateUserID = FindByName(__.CreateUserID);
/// <summary>创建时间</summary>
@ -166,7 +166,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
public static readonly Field CreateIP = FindByName(__.CreateIP);
/// <summary>更新</summary>
/// <summary>更新</summary>
public static readonly Field UpdateUserID = FindByName(__.UpdateUserID);
/// <summary>更新时间</summary>
@ -193,7 +193,7 @@ namespace AntJob.Data.Entity
/// <summary>内容。一般是json格式</summary>
public const String Content = "Content";
/// <summary>创建</summary>
/// <summary>创建</summary>
public const String CreateUserID = "CreateUserID";
/// <summary>创建时间</summary>
@ -202,7 +202,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
public const String CreateIP = "CreateIP";
/// <summary>更新</summary>
/// <summary>更新</summary>
public const String UpdateUserID = "UpdateUserID";
/// <summary>更新时间</summary>
@ -230,7 +230,7 @@ namespace AntJob.Data.Entity
/// <summary>内容。一般是json格式</summary>
String Content { get; set; }
/// <summary>创建</summary>
/// <summary>创建</summary>
Int32 CreateUserID { get; set; }
/// <summary>创建时间</summary>
@ -239,7 +239,7 @@ namespace AntJob.Data.Entity
/// <summary>创建地址</summary>
String CreateIP { get; set; }
/// <summary>更新</summary>
/// <summary>更新</summary>
Int32 UpdateUserID { get; set; }
/// <summary>更新时间</summary>

View File

@ -13,11 +13,11 @@
<Column Name="JobCount" DataType="Int32" Description="作业数" />
<Column Name="MessageCount" DataType="Int32" Description="消息数" />
<Column Name="Remark" DataType="String" Length="500" Description="内容" />
<Column Name="CreateUserID" DataType="Int32" Description="创建" />
<Column Name="CreateUserID" DataType="Int32" Description="创建" />
<Column Name="CreateUser" DataType="String" Description="创建者" />
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
<Column Name="CreateIP" DataType="String" Description="创建地址" />
<Column Name="UpdateUserID" DataType="Int32" Description="更新" />
<Column Name="UpdateUserID" DataType="Int32" Description="更新" />
<Column Name="UpdateUser" DataType="String" Description="更新者" />
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
<Column Name="UpdateIP" DataType="String" Description="更新地址" />
@ -41,7 +41,7 @@
<Column Name="Total" DataType="Int64" Description="总数" />
<Column Name="Success" DataType="Int64" Description="成功" />
<Column Name="Error" DataType="Int64" Description="错误" />
<Column Name="Cost" DataType="Int64" Description="耗时。总耗时,秒" />
<Column Name="Cost" DataType="Int64" Description="耗时。执行任务总耗时,秒" />
<Column Name="Speed" DataType="Int64" Description="速度。每秒处理数" />
<Column Name="LastKey" DataType="String" Description="最后键" />
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
@ -55,7 +55,7 @@
<Index Columns="AppID" />
</Indexes>
</Table>
<Table Name="AppHistory" TableName="devicehistory" Description="应用历史。应用的操作历史">
<Table Name="AppHistory" Description="应用历史。应用的操作历史">
<Columns>
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
<Column Name="AppID" DataType="Int32" Description="应用" />
@ -67,7 +67,7 @@
<Column Name="Server" DataType="String" Description="服务端。客户端登录到哪个服务端IP加端口" />
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
<Column Name="CreateIP" DataType="String" Description="创建地址" />
<Column Name="Remark" ColumnName="Content" DataType="String" Length="2000" Description="内容" />
<Column Name="Remark" DataType="String" Length="2000" Description="内容" />
</Columns>
<Indexes>
<Index Columns="AppID,Action" />
@ -80,10 +80,10 @@
<Column Name="AppID" DataType="Int32" Description="应用" />
<Column Name="Name" DataType="String" Master="True" Description="名称" />
<Column Name="Content" DataType="String" Length="5000" Description="内容。一般是json格式" />
<Column Name="CreateUserID" DataType="Int32" Description="创建" />
<Column Name="CreateUserID" DataType="Int32" Description="创建" />
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
<Column Name="CreateIP" DataType="String" Description="创建地址" />
<Column Name="UpdateUserID" DataType="Int32" Description="更新" />
<Column Name="UpdateUserID" DataType="Int32" Description="更新" />
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
<Column Name="UpdateIP" DataType="String" Description="更新地址" />
</Columns>
@ -102,13 +102,10 @@
<Column Name="Mode" DataType="Int32" Description="调度模式" Type="JobModes" />
<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="Step" DataType="Int32" Description="步进。最大区间大小,秒" />
<Column Name="MinStep" DataType="Int32" Description="最小步进。默认5秒" />
<Column Name="MaxStep" DataType="Int32" Description="最大步进。默认3600秒" />
<Column Name="StepRate" DataType="Int32" Description="步进率。动态调节步进时不能超过该比率百分位默认100%" />
<Column Name="BatchSize" DataType="Int32" 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="偏移。距离实时时间的秒数,部分业务不能跑到实时,秒" />
<Column Name="MaxTask" DataType="Int32" Description="并行。多任务并行处理" />
<Column Name="MaxError" DataType="Int32" Description="最大错误。连续错误达到最大错误数时停止" />
@ -123,12 +120,12 @@
<Column Name="Times" DataType="Int32" Description="次数" />
<Column Name="Speed" DataType="Int32" Description="速度" />
<Column Name="Enable" DataType="Boolean" Description="启用" />
<Column Name="Description" ColumnName="Message" DataType="String" Length="2000" Description="内容" />
<Column Name="CreateUserID" DataType="Int32" Description="创建" />
<Column Name="Remark" DataType="String" Length="2000" Description="内容" />
<Column Name="CreateUserID" DataType="Int32" Description="创建" />
<Column Name="CreateUser" DataType="String" Description="创建者" />
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
<Column Name="CreateIP" DataType="String" Description="创建地址" />
<Column Name="UpdateUserID" DataType="Int32" Description="更新" />
<Column Name="UpdateUserID" DataType="Int32" Description="更新" />
<Column Name="UpdateUser" DataType="String" Description="更新者" />
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
<Column Name="UpdateIP" DataType="String" Description="更新地址" />

View File

@ -234,15 +234,9 @@ namespace AntJob.Server
if (item.Mode > 0) jb.Mode = item.Mode;
if (!item.DisplayName.IsNullOrEmpty()) jb.DisplayName = item.DisplayName;
if (!item.Description.IsNullOrEmpty()) jb.Description = item.Description;
if (!item.Description.IsNullOrEmpty()) jb.Remark = item.Description;
if (!item.ClassName.IsNullOrEmpty()) jb.ClassName = item.ClassName;
if (jb.Mode == JobModes.Message || jb.Mode == JobModes.Alarm)
{
jb.StepRate = 0;
//jb.MaxStep = jb.MinStep = jb.Step;
}
if (jb.Save() != 0)
{
WriteLog("[{0}]更新作业[{1}] @[{2}]", app, item.Name, ns.Remote);
@ -465,14 +459,6 @@ namespace AntJob.Server
jt.Key = task.Key;
jt.Message = task.Message;
// 动态调整步进
if (task.Status == JobStatus.)
{
AdjustStep(job, jt, Session as IExtend);
//// 更新积压数
//UpdateLatency(job, ji);
}
// 已终结的作业,汇总统计
if (task.Status == JobStatus. || task.Status == JobStatus.)
{
@ -579,74 +565,6 @@ namespace AntJob.Server
}
#endregion
#region
public static void AdjustStep(IJob job, JobTask ji, IExtend ext)
{
// 不许动态调节步进
if (job.StepRate == 0 || job.MinStep == job.MaxStep) return;
//// 向前调节步进,避免多线程时间错乱
//var dt = ext["Step_Last"].ToDateTime();
//if (dt.Year > 2000 && ji.Start <= dt) return;
//ext["Step_Last"] = ji.Start;
// 新步进
var st = 0L;
var near = false;
var adjust = false;
// 计算停止线,需要注意偏移量
var end = job.End;
if (end.Year <= 2000 || end > DateTime.Now) end = DateTime.Now.AddSeconds(-job.Offset);
// 距离目标较近时步进减半
if (ji.End.AddSeconds(ji.Step) > end)
{
st = ji.Step;
while (st > 0 && ji.End.AddSeconds(st) > end) st /= 2;
near = true;
}
else
{
if (ji.Total > 0)
{
// 逼近批大小
st = (Int64)ji.BatchSize * ji.Step / ji.Total;
adjust = true;
}
// 踩空逻辑
else
{
// 距离目标较远时加大步进
//st = job.MaxStep;
st = (Int32)(ji.Step * (1 + job.StepRate / 100.0));
}
// 步进率
var jstep = ji.Step;
var rate = jstep == 0 ? 0 : (st - jstep) * 100.0 / jstep;
// 变化不能超过比率
if (Math.Abs(rate) > job.StepRate)
{
rate = job.StepRate;
if (st < jstep) rate = -rate;
st = (Int32)(jstep + rate * jstep / 100);
}
}
// 限制最大最小步进
if (st < job.MinStep)
st = job.MinStep;
else if (st > job.MaxStep)
st = job.MaxStep;
if (st == job.Step) return;
// 踩空时要求步进没有改变过
if (near || adjust || job.Step == ji.Step) job.Step = (Int32)st;
}
#endregion
#region 线
/// <summary>获取当前应用的所有在线实例</summary>
/// <returns></returns>

View File

@ -68,7 +68,7 @@
}
<td class="text-center hidden-md hidden-sm hidden-xs">@entity.ID</td>
<td><a href="JobTask?JobID=@entity.ID">@entity.Name</a></td>
<td title="@entity.Description">@entity.DisplayName</td>
<td title="@entity.Remark">@entity.DisplayName</td>
@if (appid == 0)
{
<td>@entity.AppName</td>
@ -87,17 +87,7 @@
<td class="text-right">
@if (entity.Mode != JobModes.Message)
{
if (entity.StepRate > 0)
{
<span style="color:lightseagreen">
@TimeSpan.FromSeconds(entity.Step)
</span>
}
else
{
@TimeSpan.FromSeconds(entity.Step)
}
@TimeSpan.FromSeconds(entity.Step)
}
</td>
<td class="text-right">@entity.BatchSize.ToString("n0")</td>