代码之家  ›  专栏  ›  技术社区  ›  Nasir

从多个工作站收集数据

  •  0
  • Nasir  · 技术社区  · 17 年前

    我目前正在开发一个windows服务,该服务将部署到公司内的所有工作站。该服务的目的是收集各种统计数据,并将其记录在中心位置。

    对于第一次迭代,每次有数据要记录时,服务都直接调用SQL来记录数据。在大约120台工作站上测试它告诉我,这不是一个好主意,不会扩展。

    有人能推荐一种替代策略来收集有问题的数据,而不会使数据库服务器过载吗?这将部署到大约2000台机器上。

    我和C#一起工作。

    谢谢

    2 回复  |  直到 11 年前
        1
  •  1
  •   Jose Basilio    17 年前

    从你的问题来看,你似乎已经有了一个可行的解决方案,你只需要关于如何使其规模化的建议。这是我的两分钱:

    • 不要在工作站的服务中保持SQL连接打开
    • 确保数据库已正确规范化,以避免重复数据

    就个人而言,对于一些需要扩展到2000个工作站的关键任务,我会使用商业产品,而不会重新发明轮子。

        2
  •  0
  •   Nasir    17 年前

    我只是想回答这个问题。下面是我最终实现它的方式。

    数据收集

    • 一个C#服务在工作站上运行。在不同的时间间隔(不是预先确定的,基于系统上的某些事件),它触发数据采集。
    • 数据写入本地工作站上的文件。

    数据解析

    • “导入程序”按计划运行。它遍历自上次运行以来创建的所有文本文件,解析它们并将它们导入SQL。

    我以这种方式实施它的原因是:

    • 创建的文件非常小,1-2KB
    • 进口商在过去运行了几分钟,以避免与任何正在进行的副本发生冲突。
    • 导入器删除已处理的文件,并跳过不在其“lastscantime”和“currentTime Xminute”窗口内的文件。
    推荐文章