gpt4 book ai didi

c# - 确定两台服务器的 "combined availability"比率

转载 作者:行者123 更新时间:2023-11-30 16:56:27 28 4
gpt4 key购买 nike

我需要从两台服务器创建“可靠性”报告 - 服务器 A 和服务器 B

两者都跟踪其正常运行时间 - 或者更确切地说,在它们不可用的任何情况下。这些记录存储在 SQL Server 数据库表中

EventID INT  (PK)
Server CHAR(1) -- 'A' or 'B'
EventStart DATETIME2(3)
EventEnd DATETIME2(3)

示例数据:

EventID  Server   EventStart                 EventEnd
--------------------------------------------------------------------
34 A 2014-12-12 14:00:00.000 2014-12-12 15:00:00.000
35 A 2014-12-20 10:00:00.000 2014-12-21 03:00:00.000
36 A 2014-12-27 16:30:00.000 2014-12-27 17:45:00.000
37 B 2014-12-15 04:00:00.000 2014-12-15 09:35:00.000
38 B 2014-12-20 20:00:00.000 2014-12-20 21:50:00.000
39 B 2014-12-27 15:00:00.000 2014-12-27 17:00:00.000

这些数据行使用 Entity Framework 加载到 .NET 对象中,计算在 C# 中进行。

现在给出这些项目,我需要确定(对于给定的月份)服务器“A”和服务器“B”的可靠性 - 小菜一碟(只需总结每台服务器的停机总分钟数并计算可用性) .

棘手的部分是:我还需要本月两台服务器停机的分钟数 - 这样我就可以计算两台服务器中至少一台服务器停机的“综合可用性”可访问。

当然,我可以枚举服务器“A”的所有条目并检查是否有任何重叠的服务器“B”的条目 - 但这似乎有点低效。

有没有更明智的方法来做到这一点?我基本上在 C# 中有两个 Event 对象列表,它们具有与表中的列相同的字段。

最佳答案

这是一个算法:

  • 合并两个列表
  • EventStart 排序此列表
  • 迭代排序列表
  • 获取当前和下一个条目,比较当前的 [EventStart, EventEnd] 和下一个 EventStart
  • 重叠表示 2 个服务器同时不可用

时间复杂度:O(NLog(N)) = O(O(N) + O(NLog(N)) + O(N))。空间复杂度至少为 O(N)。其中 N 是两个列表中的项目数。

关于c# - 确定两台服务器的 "combined availability"比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28045179/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com