Merge branch 'master' of http://git.newlifex.com/NewLife/Stardust
This commit is contained in:
commit
32a7de8995
BIN
Doc/星尘分布式.emmx
BIN
Doc/星尘分布式.emmx
Binary file not shown.
BIN
Doc/星尘分布式.png
BIN
Doc/星尘分布式.png
Binary file not shown.
Before Width: | Height: | Size: 951 KiB After Width: | Height: | Size: 1.2 MiB |
|
@ -84,7 +84,7 @@ public class StarService : DisposeBase, IApi
|
|||
|
||||
var ai = _agentInfo ??= AgentInfo.GetLocal(true);
|
||||
ai.Server = set.Server;
|
||||
ai.Services = Manager?.Services.Where(e => e.Enable || !e.Name.EqualIgnoreCase("test", "test2")).Select(e => e.Name).ToArray();
|
||||
ai.Services = Manager?.Services?.Where(e => e.Enable || !e.Name.EqualIgnoreCase("test", "test2")).Select(e => e.Name).ToArray();
|
||||
ai.Code = AgentSetting.Code;
|
||||
ai.IP = AgentInfo.GetIps();
|
||||
|
||||
|
@ -95,13 +95,13 @@ public class StarService : DisposeBase, IApi
|
|||
}
|
||||
|
||||
// 更新应用服务
|
||||
var controller = Manager?.QueryByProcess(info.ProcessId);
|
||||
var controller = info == null ? null : Manager?.QueryByProcess(info.ProcessId);
|
||||
if (controller != null)
|
||||
{
|
||||
// 标记为星尘应用,停止Deploy上报进程信息
|
||||
controller.IsStarApp = true;
|
||||
|
||||
controller.WriteEvent("本地探测", raw);
|
||||
controller.WriteEvent("本地探测", raw!);
|
||||
}
|
||||
|
||||
// 返回插件服务器地址
|
||||
|
|
|
@ -108,17 +108,19 @@ public partial class AppMeter : Entity<AppMeter>
|
|||
/// <summary>高级查询</summary>
|
||||
/// <param name="appId">应用</param>
|
||||
/// <param name="clientId">客户端标识</param>
|
||||
/// <param name="source">数据来源。区分Ping/Deploy</param>
|
||||
/// <param name="start">开始时间</param>
|
||||
/// <param name="end">结束时间</param>
|
||||
/// <param name="key">关键字</param>
|
||||
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<AppMeter> Search(Int32 appId, String clientId, DateTime start, DateTime end, String key, PageParameter page)
|
||||
public static IList<AppMeter> Search(Int32 appId, String clientId, String source, DateTime start, DateTime end, String key, PageParameter page)
|
||||
{
|
||||
var exp = new WhereExpression();
|
||||
|
||||
if (appId >= 0) exp &= _.AppId == appId;
|
||||
if (!clientId.IsNullOrEmpty() && clientId != "null") exp &= _.ClientId == clientId;
|
||||
if (!source.IsNullOrEmpty()) exp &= _.Source == source;
|
||||
exp &= _.Id.Between(start, end, Meta.Factory.Snow);
|
||||
if (!key.IsNullOrEmpty()) exp &= _.ClientId.Contains(key) | _.Creator.Contains(key) | _.CreateIP.Contains(key);
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.IP" Version="2.3.2025.601" />
|
||||
<PackageReference Include="NewLife.Redis" Version="6.3.2025.701" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.719-beta0004" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.722-beta0820" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -25,7 +25,7 @@ public class NodeOnlineController : ReadOnlyEntityController<NodeOnline>
|
|||
|
||||
var list = ListFields;
|
||||
list.Clear();
|
||||
var allows = new[] { "ID", "ProjectName", "Name", "Category", "ProductCode", "CityName", "Address", "PingCount", "WebSocket", "Version", "OSKind", "IP", "AvailableMemory", "MemoryUsed", "AvailableFreeSpace", "SpaceUsed", "CpuRate", "ProcessCount", __.Signal, __.Offset, "UplinkSpeed", "DownlinkSpeed", "TraceId", "LocalTime", "CreateTime", "UpdateTime", "UpdateIP" };
|
||||
var allows = new[] { "ID", "ProjectName", "Name", "Category", "ProductCode", "CityName", "Address", "PingCount", "WebSocket", "Version", "OSKind", "IP", "AvailableMemory", "MemoryUsed", "AvailableFreeSpace", "SpaceUsed", "CpuRate", "ProcessCount", __.Signal, __.Offset, "UplinkSpeed", "DownlinkSpeed", "IntranetScore", "InternetScore", "TraceId", "LocalTime", "CreateTime", "UpdateTime", "UpdateIP" };
|
||||
foreach (var item in allows)
|
||||
{
|
||||
list.AddListField(item);
|
||||
|
|
|
@ -23,6 +23,10 @@ public class AppMeterController : EntityController<AppMeter>
|
|||
var df = ListFields.GetField("ClientId") as ListField;
|
||||
df.Url = "/Registry/AppMeter?appId={AppId}&clientId={ClientId}";
|
||||
}
|
||||
{
|
||||
var df = ListFields.GetField("Source") as ListField;
|
||||
df.Url = "/Registry/AppMeter?appId={AppId}&clientId={ClientId}&source={Source}";
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnActionExecuting(ActionExecutingContext filterContext)
|
||||
|
@ -56,6 +60,7 @@ public class AppMeterController : EntityController<AppMeter>
|
|||
|
||||
var appId = p["appId"].ToInt(-1);
|
||||
var clientId = p["clientId"];
|
||||
var source = p["source"];
|
||||
|
||||
// 应用在线多IP时,只取第一个
|
||||
if (!clientId.IsNullOrEmpty())
|
||||
|
@ -90,7 +95,7 @@ public class AppMeterController : EntityController<AppMeter>
|
|||
|
||||
if (p.Sort.IsNullOrEmpty()) p.OrderBy = _.Id.Desc();
|
||||
|
||||
var list = AppMeter.Search(appId, clientId, start, end, p["Q"], p);
|
||||
var list = AppMeter.Search(appId, clientId, source, start, end, p["Q"], p);
|
||||
|
||||
// 如果没有clientId,则可能列表数据里面只有一个,选择它,便于展示图表
|
||||
if (list.Count > 0 && clientId.IsNullOrEmpty())
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
<PackageReference Include="NewLife.Cube.Core" Version="6.5.2025.715-beta1654" />
|
||||
<PackageReference Include="NewLife.IP" Version="2.3.2025.601" />
|
||||
<PackageReference Include="NewLife.Redis" Version="6.3.2025.701" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.719-beta0004" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.722-beta0820" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -47,12 +47,12 @@ public class PingMonitor
|
|||
var threshold = 1f;
|
||||
var successRate = rtTimes.Count / Times;
|
||||
var latency = rtTimes.Average();
|
||||
var latencyScore = 0d;
|
||||
if (latency <= threshold)
|
||||
latencyScore = 1f;
|
||||
else
|
||||
// 衰减系数λ=0.001。1ms为100%,10ms为99.1%,100ms为90.57%,500ms为60.71%,1000ms为36.82%
|
||||
latencyScore = Math.Exp(-0.001 * (latency - threshold));
|
||||
//var latencyScore = 0d;
|
||||
//if (latency <= threshold)
|
||||
// latencyScore = 1f;
|
||||
//else
|
||||
// 衰减系数λ=0.001。1ms为100%,10ms为99.1%,100ms为90.57%,500ms为60.71%,1000ms为36.82%
|
||||
var latencyScore = Math.Exp(-0.001 * (latency - threshold));
|
||||
|
||||
// 确保得分在0-1之间
|
||||
var score = successRate * latencyScore;
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Remoting" Version="3.4.2025.719-beta0004" />
|
||||
<PackageReference Include="NewLife.Remoting" Version="3.4.2025.722-beta0820" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Core" Version="11.5.2025.717-beta0001" />
|
||||
|
|
Loading…
Reference in New Issue