2013-06-25 33 views
6

我需要一些帮助来评估什么是扭曲矩阵应用程序的正确设计。或任何网址来帮助这样做。python,twistedmatrix ...通过套接字登录

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

现在,我要去使用许多型动物,例如应用程序,将做他们的工作,并在许多文件扭曲日志(distincts文件)发送日志信息,定时事件。因此,我的事件是由(timestamp, data)

我需要阅读每本在实时记录的消息(timestamp, data)某种方式集中事件的时间基础上对它们进行分组,这是有一些计算和组通过所有具有完全相同时间戳的事件。

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

你会如何以简单的方式设计它?

我目前的想法是建立一个套接字扭曲记录器和复制日志记录processus,以便每个事件将发送到文件记录器(我需要分开的历史),但也通过套接字到接收器(我现在也需要实时)。如果我是正确的挖掘方式,有人有这样的扭曲套接字记录器的骨架?我如何链接两个记录器扭曲?

对于另一部分应该是什么正确的记录器接收器?

因为我也会通过lighstreamer服务器使用下面的方案传播计算/汇总的数据,可能会有一些我可能没有看到的困难,那就需要一些线程机制或其他机制来避免某些阻塞网络调用?

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

feed.send(mytimestamp, myeventdata) 

为图中可以示意为:用(几乎所有实时)

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

每个producerTimedEventLognN也记录到文件中。

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

问候

+0

还有什么你需要知道的吗? –

回答

3

我了解,多台计算机(独立的计算机)都参与了您的系统,对不对?然后,首先,你需要确保发送事件的各种机器的时钟在一定程度上同步。但是,由于总是存在时间同步错误,因此您必须确定您对“所有具有完全相同时间戳的事件”的含义。从我的角度来看,您需要定义一个任意的时间增量值。然后,您只需在此时间增量内定义所有带时间戳的事件以“同时”发生。其次,如果我理解正确,你希望“生产者”通过TCP将他们的事件发送到“收集器”。这就产生了一个问题:你是否已经有了一个特定的通信协议,你可以简单地添加时间戳事件的通信,或者你需要建立一个独立的通信层(收集器上的一个独立的TCP套接字)。

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

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

2

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

您还需要NTP来同步时钟。