6

我需要一些帮助来评估扭曲矩阵应用程序的正确设计。或任何帮助这样做的网址。

  • 背景:我现在使用twistedmatrix附带的日志记录能力FileLogObserver,以及一个自定义DailyLogFile来将数据传播和保存到文件系统并供以后分析。

现在,我将使用许多不同的应用程序来完成它们的工作,并在许多文件扭曲日志(不同的文件)中将日志消息作为定时事件发送。因此,我的事件由(timestamp, data)

我需要某种方式实时读取每条记录的消息(timestamp, data),并按时间集中事件对它们进行分组,即对具有完全相同时间戳的所有事件进行一些计算和分组。

我是否正确地假设我可以使用扭曲的日志功能来做到这一点?

您将如何以简单的方式设计它?

我目前的想法是构建一个套接字扭曲记录器并复制记录过程,以便每个事件都将发送到文件记录器(我需要单独的历史记录),但也通过套接字发送到接收器(我现在也需要实时)。如果我以这种方式进行挖掘是正确的,那么是否有人有这种扭曲套接字记录器的骨架?我如何从扭曲中链接两个记录器?

另一方面,正确的记录器接收器应该是什么?

因为我还将使用以下方案通过 lightstreamer 服务器传播计算/聚合数据,是否存在一些我可能没有看到的困难,这将需要一些线程机制或其他机制来避免一些阻塞网络调用?

feed = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
feed.connect(("localhost",MYPORT))

feed.send(mytimestamp, myeventdata)

作为一个数字,它可以被模式化为:with (everything about realtime)

producerTimedEventLog1 --->|
producerTimedEventLog2 --->|
...                        |---> loggerReceiverComputingData ---> lighstreamer process ---> mozilla or whatever webclient
...                        |
producerTimedEventLognN--->| 

每个 producerTimedEventLognN 也记录到一个文件。

我对每一个有用的想法都感兴趣:)

此致

4

2 回答 2

3

我了解您的系统涉及多台机器(独立计算机),对吗?那么首先需要保证发送事件的各个机器的时钟有一定的同步性。但是,由于总会出现时间同步错误,因此您必须确定“所有具有完全相同时间戳的事件”的含义。从我的角度来看,您需要定义一个任意时间增量值。然后,您只需将所有具有此时间增量内时间戳的事件定义为“同时”发生。

其次,如果我理解正确,您希望“生产者”通过 TCP 将他们的事件发送到“收集器”。这就提出了一个问题,即您是否已经有一个特定的通信协议,您可以在其上简单地添加时间戳事件的通信,或者您是否需要建立一个独立的通信层(收集器上的一个不同的 TCP 套接字)。

在任何情况下,您都可能希望创建一个简单的事件类来存储事件消息(日志消息和任何所需数据)以及创建时间戳。生产者创建此类的实例。然后,您可以使用pickle以通过字节流(TCP 连接)将某个事件传输到收集器。收集器可以解开并处理它。

请注意,time.time()Linux 上的分辨率高于 Windows 上的分辨率。

于 2013-07-18T10:22:52.907 回答
2

你可以添加PythonLoggingObserver除了你的FileLogObserver. 然后配置 python logger 将消息发送到 syslog。系统日志可以配置为向中央服务器发送消息。在中央服务器上,您可以将消息保存到日志文件,并让另一个应用程序读取日志文件LogReader

您还需要 NTP 来同步时钟。

于 2013-07-17T22:39:46.167 回答