2008-09-12 3 views
1

저는 이번 주 RSS 피드를 사용 해왔고 다음 트릭을 위해 내부 애플리케이션 로그 용으로 빌드하려고합니다. 수많은 일괄 처리 및 인트라넷 앱에서 로그 메시지를 게시하는 데 사용되는 중앙 데이터베이스 테이블이 있습니다. 이 테이블에서 RSS 피드를 만들고 싶지만 볼륨을 처리하는 방법이 확실하지 않습니다. 정상적인 날에도 하루에 수백 개의 항목이있을 수 있습니다. 예외적 인 원하는 당신이 원하는 하루의 종은 수천을 볼 수 있습니다. 이견있는 사람?대용량 RSS 피드를 작성하는 방법

+0

나는 볼륨이 있다는 것을 이해하지만이 질문에서 왜 특수한 방식으로 처리해야하는지 이해할 수 있는지 잘 모르겠다. 해당 테이블에서 조회수를 줄이거 나 사료 소비자의 사용자 만족도를 높이려는 중이거나 ... ...? – busse

답변

0

신청서를 모르면 구체적인 조언을 드릴 수 없습니다.

즉, 이러한 종류의 시스템에서는 일반적으로 심각도가 높습니다. 당신은 심각도를 지정하는 URL의 끝 부분에 붙어있는 질의 문자열 매개 변수를 가질 수 있습니다. "DEBUG"로 설정하면 아무리 사소한 경우라도 모든 이벤트를 볼 수 있습니다. "FATAL"로 설정하면 "System Failure"정도의 이벤트 만 볼 수 있습니다.

너무 많은 이벤트가있는 경우 이벤트를 일종의 범주 시스템으로 하위 분할 할 수 있습니다. 다시 말하지만, 쿼리 문자열 매개 변수로 사용했습니다.

그런 다음 다양한 범주 및 심각도에 대해 여러 RSS 피드를 사용할 수 있습니다. 이렇게하면 수용 가능한 수준의 경고 수준을 조정할 수 있습니다.

0

좋아요, 어떻게 처리 할 것인지 결정했습니다. 각 열에 대해 시간 소인 필드를 사용하고 하루 단위로 그룹화합니다. 물론 거기에 전체 타임 스탬프가 있기 때문에 약간의 SQL-fu가 필요합니다. 그룹 내에서 표시 할 로그 메시지를 선택하는 방법에 대해 세미 인텔리전트가되어야하지만 너무 나쁘지 않습니다. 또한 모니터링 할 응용 프로그램을 선택한 다음 특정 날짜의 모든 메시지 (최대 50 개)를 표시하도록 구성하고 있습니다.

그건 나를 합리적으로 만듭니다.

나는 더 일반적인 질문에 대한 좋은 대답을 기대하고있다. "메시지를 놓치면 많은 중요한 메시지를 어떻게 신디케이트합니까?"

2

누락되어서는 안되는 알림 시스템을 구축하려는 경우 신디케이션 메커니즘보다 pub-sub 메커니즘 (XMPP, ApacheMQ에서 지원하는 다른 프로토콜 중 하나 또는 이와 비슷한 것을 사용)이 더 적합합니다. 소비자가 알림을 놓치지 않도록 알림을 생성하는 시스템과 알림을 생성하는 시스템 간의 연결을 측정해야합니다.

(전송 형식으로 RSS 또는 Atom을 사용하여이 작업을 수행 할 수 있지만 일반적으로 사용되는 경우는 아니므로 소비자 및 이전에 본 알림에 따라 달라지는 알림을 변경해야합니다.)

0

이 경우 관리자의 대시 보드가 더 많습니다. 오늘 지원을 얼마나 많이 받았는지, 현재 로그에서 어떤 일이 일어나고 있는지, 그리고 무엇이 잘못되었는지 측정하기 위해 아침에 처음 도착했을 때 일괄 작업.

3

나는 피드 정적 파일 (쉽게이 수천 서비스를 제공 할 수), 주기적 재생 만들 것입니다. 그렇다면 초보다 더 빨리 실행할 필요가 없기 때문에 훨씬 더 광범위한 선택을 할 수 있습니다. 그리고 사용자는 여전히 완벽한 다운로드 속도 및 적당한 업데이트 속도를 얻습니다.

1

나는 가능한 한 피드를 분리하고 사용자가 원하는대로 그들을 재결합하게 할 것이다. 만약 내가 그것을하고 있다면 아마 장고와 신디케이션 프레임 워크를 사용하는 것에 대해 생각할 것이다.

장고의 모델은 관심있는 테이블의 데이터 구조를 표현할 수 있습니다.

r'/rss/(?(\w*?)/)+'과 같은 모든 것을 포착하는 URL을 사용할 수 있습니다 (작동 할 수도 있지만 완벽하지 않을 수 있으므로 지금 테스트 할 수는 없습니다).

이 같은 URL을 사용할 수있는 방법 (예를 들어, URL의 자동 연결 취소 편집) :

  • 에 http : // feedserver/RSS/배치 파일 출력/
  • HTTP : /을/feedserver/RSS/지원 티켓/
  • HTTP : // feedserver/RSS/배치 파일 출력/지원 티켓/(하나에 결합 된 제 둘 모두) 뷰이어서

:

def get_batch_file_messages(): 
    # Grab all the recent batch files messages here. 
    # Maybe cache the result and only regenerate every so often. 

# Other feed functions here. 

feed_mapping = { 'batch-file-output': get_batch_file_messages, } 

def rss(request, *args): 
    items_to_display = [] 
    for feed in args: 
     items_to_display += feed_mapping[feed]() 
    # Processing/returning the feed. 

개별 체인 방식 피드를 사용하면 사용자가 한 번에 하나의 피드를 구독하거나 관심있는 항목을 하나의 큰 피드로 병합 할 수 있습니다. 그들이 읽는 것이 더 쉬운 것이면 무엇이든 할 수 있습니다.

관련 문제