2012-12-26 2 views
0

나는 함대 추적 회사에서 일하는데,이 질문은 구체적으로 어떻게 보고서를 작성할 계획인지에 관한 것입니다. 우리 환경에 대해 설명하겠습니다. 우리는 1x Database, 1x Load Distributing 프로세스, 3x Report Processing 서버를 보유하고 있습니다. 고객이 보고서를 요청하면 해당 보고서의 모든 매개 변수가 데이터베이스에 저장됩니다. 현재 데이터베이스에서 보류중인 보고서를 가져 와서 보고서를 작성하고 이메일로 전송하는 3 개의 보고서 처리 서버에 응용 프로그램을 배포하는 부하 분산 작업을하고 있습니다. 서버가 보고서를 완료하거나 오류가 발생하면 부하 분산 응용 프로그램에 알립니다. 1 대의 차량에 대해 1 일간의 GPS 데이터에서 수백 대의 차량에 대해 3 개월의 GPS 데이터까지 모든 규모의 보고서가 제공 될 수 있습니다.로드 균형 조정 가중치 보고서?

로드 균형 조정을 수행하는 몇 가지 방법을 생각해 볼 수는 있지만 실제로 만족스럽지 않습니다. 각 서버는 최대 5 개의 보고서 만 가질 수 있지만, 1 개의 서버는 5 개의 작은 보고서를 얻을 수 있고 다른 하나는 5 개의 큰 보고서를 얻을 수 있습니다. "Round Robin"접근법을 사용하여 보고서를 서버 전체에 순차적으로 전달할 수는 있지만 서버의 오버로드를 막을 수는 없습니다.

지금 당장 생각한 가장 좋은 생각은 각 보고서 (필요한 쉬운 작업)에 GPS 데이터가 얼마나 필요한지 계산하는 것입니다. 보고서를 각 서버에 할당 할 때마다 각각에 대해 누적 합계를 유지합니다 섬기는 사람. 서버가 보고서를 완료하고로드 밸런서에이를 알리면 해당 서버의 누적 합계에서 해당 보고서의 GPS 데이터 양을 뺍니다. 이렇게하면 가장 작은 양의 GPS 데이터가있는 서버에 다음 보고서를 할당 할 수 있습니다. 서버가 작동하지 못하도록 최대 값을 설정할 수도 있습니다.이 문제는 우리가 전체 보고서 프로세스를 리펙토링하도록하는 원인이됩니다. 모든 서버가 최대치에 도달했을 때 더 많은 보고서가 있으면 서버가 대기열에 넣고 서버가 보고서를 끝내면 나중에 시도 할 수 있습니다.

나는 가능한 한 빨리 보고서를 마무리하는 것이 최선의 방법이라고 확신하지 않습니다. 이것들은 제가 지금까지 생각해 낸 최선입니다.

여러 서버에서 다양한 크기의 보고서를로드 균형 조정하는 방법을 어떻게 최적화 할 수 있습니까?

답변

0

데이터를 선택하는 주요 테이블이 하나만 있다고 가정하면 모든 큰 보고서를 먼저 수행하고 다른 두 테이블은 가장 작은 것부터 가장 큰 것으로 수행하도록 한 서버를 구성합니다. 그렇지 않으면 커다란 보고서가 완성되지 않을 수도 있습니다.

더 작은 보고서의 경우, 더 나은 것이없는 경우 '유사한'보고서를 사용해 보도록하십시오. 즉, 주로 사용되는 색인에서 비슷한 값을 중심으로 클러스터링하는 것이 좋습니다. 예를 들어 서버가 2011 년 6 월에 대한 보고서를 방금 완성한 경우 다음 최고의 보고서는 2012 년 11 월에 점프하지 않는 동일한 기간입니다. 이는 실제 테이블에 따라 다르지만 주문한 날짜가 많다고 가정합니다 데이터는 대량의 선택을 포함한다. 정말로 수행하려고하는 것은 캐시 된 인덱스/등을 재사용 할 가능성이있는 그룹 보고서입니다. 이는 최상의 처리량을 제공해야하기 때문입니다.

비슷한 스케줄링 문제가 있으며 주요 테이블로 이동하는 쿼리는 하나의 서버 (느린 큐)로 이동하고 다른 하나는 다른 큐로 이동합니다 (빠른 큐). 특별한 경우는 예외입니다.