내가 일하는 회사는 Blackberry 플랫폼 용 응용 프로그램을 만듭니다.확장 가능한 히트/분석 시스템을 설계하는 가장 좋은 방법은 무엇입니까?
우리는 우리의 응용 프로그램 내에 코드를 내장하고 실행될 때마다 응용 프로그램이 일부 통계를 중앙 서버에보고하도록하는 독점적 인 "분석 시스템"을 개발했습니다. 현재 시스템은 정상적으로 작동합니다. 그러나 그것은 시간당 100-200 히트를 가진 베타 버전에서만 있습니다. "히트"는 문제없이 서버로 전송됩니다. 히트 수락 및 저장을 처리 할 수있는 매우 견고한 API를 구축했습니다 (MySQL DB). 우리는 부하를 테스트했으며 문제없이 시간당 수십만 히트를 수용 할 수 있어야합니다. 그것은 정말로 문제가되지 않습니다.
문제는 통계를 표시하고 있습니다. 우리는 민트 (haveamint.com)와 비슷한 디스플레이 패널을 만들었으며, 매 시간, 과거 일, 달, 주, 년 등의 히트 수를 보여줍니다. 주먹 버전은 히트 테이블에서 데이터를 가져 와서 즉시 해석하는 직선 쿼리를 실행했습니다. 그것은 오랫동안 작동하지 않았습니다. 우리의 현재 솔루션은 히트가 프로세싱을 위해 "큐에 대기"되어 있고 매 5 분마다 히트를 취하여 매 시간, 일, 주, 월, 년 등의 "캐시"로 분류하는 cron이 있습니다. 이것은 훌륭하게 작동하며 엄청나게 확장 가능합니다. 그러나 1 시간대에만 작동합니다. 회사 전체가 이에 대한 액세스 권한을 갖고 있기 때문에 다양한 시간대에 수백 명의 사용자를 다루고 있습니다. 내가 산호세에서 "오늘"이라고 정의한 것은 런던의 제 동료가 오늘로 정의한 것보다 훨씬 다릅니다. 현재 솔루션은 오직 하나의 시간대로 캐시되기 때문에 시간대 밖의 데이터를 점검하는 모든 사람들에게는 악몽입니다.
이 문제를 해결하기위한 현재 계획은 모든 시간대 (총 40 개)에 대해 캐시를 만드는 것입니다. 그러나 그것은 우리가 데이터의 양에 40을 곱하는 것을 의미 할 것입니다 ... 그것은 나에게 끔찍한 것이며, 캐시가 매우 커질 수 있다는 점을 감안할 때, 그것은 단지 나쁜 생각처럼 들리지만, 또한 대기열을 처리하기 위해 이동하면 40 개의 다른 캐시에 넣기 위해 더 많은 CPU 시간이 필요합니다.
다른 사람이이 문제를 해결하는 방법에 대해 더 잘 알고 있습니까?
(예 : 긴 question..it 죄송 설명 정확히 쉬운 일이 아니다. 모두 감사합니다!) 여러 시간대에 닿을 소프트웨어를 설계 할 때
귀하의 질문에 구체적으로 말하자면, 실제로는 매우 비슷한 것을 디자인하고 있으며 입력을 위해 여기에 올 것입니다. +1 –
히트 처리/저장 API를 보는 것은 매우 흥미 롭습니다. – Jacco