我需要解析来自网络中不同用户机器的日志文件。在任何给定的一天,要读取的机器数量可以是10K到40K之间的任何位置。另外,在解析日志文件之后,我希望将每次解析的结果(行或2)存储在一个公共位置(数据库表或平面文件)。日志文件本身并没有那么大。
最优雅、最有效的方式是什么?
编写控制台应用程序,使用线程池并分发任务?或者,在c#中是否有更复杂的解决方案/类?
或
我不熟悉编写Windows服务,但是否可以将服务编写为
将其部署到多台机器上??
或
还有其他方法吗?
发布于 2013-02-20 03:13:48
解决这个问题最有效的方法是什么?
这是一个值得讨论的问题--我敢说这是这篇文章的部分原因。就我个人而言,我会在每台机器上对日志的读取进行线程化,并将这些操作的结果存储在SQL Server后端中。但是,这是一种繁重的生产环境方法,可能不适用,具体取决于您想要投入多少精力。
理想情况下,这应该编写为专用的Windows服务,并且在较新版本的Visual Studio中构建/调试这些服务变得容易得多。另一种可行的方法是创建一个控制台应用程序,您可以轻松地运行并查看的输出。在部署时,您可以使用工具all NSSM来允许控制台应用程序作为windows服务运行。这可能是最不痛苦但略显笨拙的方法-其他海报可能有一个更整洁的解决方案。
让一个应用程序或程序在单个服务器上运行是最简单的方法,但这假设服务器可以访问日志文件所在的每台机器上的相关共享。
如果您希望将服务部署到相关的每台计算机上并使其在本地运行(绕过整个多线程方法,因为您有一个线程按照定义的计划检查一组日志文件),那么使用SQL Server后端是更容易的方法,因为与配置一组计算机上的文件夹共享相比,配置SQL Server帐户和允许远程连接更容易(我不是域管理员,因此我将在这一点上得到纠正)。这样做的缺点是,如果您需要更新应用程序,那么在每台机器上更新都是一件痛苦的事情。
归根结底,哪种方法最适合您的情况?需要机器共享的单个部署还是使用单个SQL Server (或其他数据存储)实例的多个部署?
https://stackoverflow.com/questions/14965359
复制相似问题