2013-06-25 39 views
6

Tôi cần một số trợ giúp để đánh giá thiết kế phù hợp của ứng dụng ma trận xoắn. Hoặc bất kỳ url nào để giúp bạn làm như vậy.python, twistedmatrix ... đăng nhập qua ổ cắm

  • nền: tôi bây giờ sử dụng công suất khai thác gỗ kèm twistedmatrix bằng cách sử dụng FileLogObserver, và một tùy chỉnh DailyLogFile để propage và lưu dữ liệu vào hệ thống tập tin và cho sau này phân tích.

Bây giờ, tôi sẽ sử dụng nhiều ứng dụng khác nhau như vậy sẽ thực hiện công việc của họ và gửi thông điệp tường trình dưới dạng sự kiện theo thời gian trong nhiều tệp nhật ký xoắn (tệp phân biệt). Như vậy sự kiện của tôi được cấu tạo của (timestamp, data)

Tôi cần một số cách đọc từng điều này đăng thông điệp (timestamp, data) trong thời gian thựctrung sự kiện nhóm chúng trên cơ sở thời gian, đó là có một số tính toán và nhóm bởi trên tất cả các sự kiện có cùng dấu thời gian.

Tôi có quyền giả sử rằng tôi có thể thực hiện điều này với chức năng nhật ký xoắn không?

bạn sẽ thiết kế nó theo cách đơn giản như thế nào?

ý tưởng hiện tại của tôi là xây dựng một bộ ghi nhật ký xoắn và sao chép tiến trình ghi nhật ký để mỗi sự kiện sẽ được gửi tới bộ ghi tệp (tôi cần lịch sử được tách riêng) mà còn thông qua ổ cắm tới máy thu (tôi cũng cần thời gian thực)). Nếu tôi đào đúng cách này, liệu có ai đó có bộ xương cho bộ ghi ổ cắm xoắn không? làm thế nào tôi có thể chuỗi hai logger từ xoắn?

đối với phần còn lại của bộ thu nhật ký chính xác?

vì tôi cũng sẽ truyền dữ liệu được tính toán/tổng hợp thông qua một máy chủ lighstreamer bằng cách sử dụng sơ đồ dưới đây có thể có một số khó khăn mà tôi có thể chưa thấy, điều đó sẽ cần một số chủ nghĩa mecanism hoặc mecanism khác để tránh một số cuộc gọi chặn mạng?

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

feed.send(mytimestamp, myeventdata) 

như một nhân vật nó có thể được biểu đồ hóa như: với (tất cả mọi thứ gần như thời gian thực)

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

mỗi producerTimedEventLognN cũng đăng nhập vào một tập tin.

tôi quan tâm đến tất cả những ý tưởng hữu ích :)

Trân

+0

Bất kỳ điều gì khác bạn cần biết? –

Trả lời

3

Tôi hiểu rằng nhiều máy (máy tính độc lập) có liên quan đến hệ thống của bạn, phải không? Sau đó, trước hết, bạn cần đảm bảo rằng các đồng hồ của các sự kiện gửi máy khác nhau được đồng bộ hóa ở một mức độ nhất định. Tuy nhiên, vì sẽ luôn có lỗi đồng bộ hóa thời gian, bạn phải quyết định ý nghĩa của mình về "tất cả các sự kiện có cùng dấu thời gian".Theo quan điểm của tôi, bạn cần định nghĩa một giá trị delta thời gian tùy ý. Sau đó bạn chỉ cần xác định tất cả các sự kiện có dấu thời gian trong vùng đồng bằng thời gian này đã xảy ra "cùng một lúc".

Thứ hai, nếu tôi hiểu đúng, bạn muốn "nhà sản xuất" gửi sự kiện của họ tới "người thu thập" qua TCP. Điều này đặt ra câu hỏi liệu bạn đã có một giao thức truyền thông nào đó chưa, bạn có thể chỉ cần thêm thông tin về các sự kiện thời gian, hoặc nếu bạn cần thiết lập một lớp giao tiếp độc lập (một ổ cắm TCP riêng biệt trên bộ thu).

Trong mọi trường hợp, bạn có thể muốn tạo một lớp sự kiện đơn giản lưu trữ thông báo sự kiện (thông điệp tường trình và bất kỳ dữ liệu bắt buộc nào) cũng như dấu thời gian tạo. Các nhà sản xuất tạo ra các trường hợp của lớp này. Sau đó, bạn có thể sử dụng pickle để truyền một sự kiện nhất định thông qua luồng byte (kết nối TCP) tới bộ thu. Người thu thập có thể bỏ chọn và xử lý nó.

Hãy nhận biết thực tế rằng độ phân giải time.time() trên Linux cao hơn trên Windows.

2

Bạn có thể thêm PythonLoggingObserver ngoài FileLogObserver của bạn. Sau đó cấu hình python logger để gửi tin nhắn tới syslog. Syslog có thể được cấu hình để gửi tin nhắn đến máy chủ trung tâm. Trên máy chủ trung tâm, bạn có thể lưu tin nhắn vào tệp nhật ký và có một tệp nhật ký đọc ứng dụng khác với LogReader.

Bạn cũng sẽ cần NTP để đồng bộ hóa đồng hồ.