2010-07-22 10 views
2

나는 20 억 이상의 gzip으로 압축 된 html 페이지를 미리 생성하여 디스크에 저장하고 웹 서버로 제공합니다. 이제이 데이터를 여러 웹 서버에서 액세스 할 수 있어야합니다. 파일을 동기화하는 데 너무 오래 걸립니다. NFS는 너무 오래 걸릴 것 같습니다.바이너리 데이터를 캐시하는 가장 좋은 방법은 무엇입니까?

Redis와 같은 키/값 저장소를 사용하는 것이 좋겠지 만 Redis는 문자열을 값으로 저장하기 만하고 gzipped 파일은 질식 할 것입니다.

현재 나의 생각은 문자열 키와 바이너리 값을 가진 간단한 MySQL/Postgres 테이블을 사용하는 것이다. 이 솔루션을 구현하기 전에 다른 누구도이 분야에서 경험이 있고 조언을 제공 할 수 있는지 알고 싶습니다.

답변

2

나는 레디스에 대해 머리가 좋았다.

나는 또한 memcached에 대해 매우 긍정적 인 말을 들었습니다. 바이너리 데이터에도 적합합니다.
예를 들면 :이 놈들은 memcached를 이미지 용으로도 사용합니다!
아시다시피 이미지는 바이너리 형식입니다.

그래서 memcached를 얻거나 컴퓨터를 사용하거나 PHP 용 바인더 또는 사이트에 사용하는 바인더를 가져오고 사용하지 마십시오! 행운을 빕니다!

+0

memcached 내 문제는 전원이 나가면 내 데이터가 손실됩니다. 따라서 정전으로 인한 복구 외에도 캐시를 다시 빌드해야합니다. – Scott

+0

당신이 무엇을 찾고 있는지, 정확히 무엇인지, 예산은 무엇인가에 달려 있습니다. "거울"이나 데이터를 가지고 있으면 한 대의 기계가 고장 나더라도 다른 기계가 작동 할 수 있습니다. 또한 서버가 실패하고 유일한 서버 일 경우 시작시 hdisk 또는 무언가의 데이터를 다시 업로드하는 스크립트를 작성할 수 있습니다. 많은 옵션이 있습니다. 나는 그 목적을 위해 필요하지 않은 많은 오버 헤드를 가지고 있기 때문에 나는 ACID 데이터베이스로 가지 않을 것이다. 또한 내가 아는 한 memcached가 수행하는 방식으로 데이터를 캐싱하지 않습니다. 후자의 경우 특별히 목적에 맞게 설계되어 최적화되었습니다. – Poni

+0

데이터베이스에 대해서는 동의하지만 제공되었습니다. 몇 가지 옵션을 탐구의 사치 그래서 나는 - 무슨 일이 있었는지. – Scott

1

먼저 gzips를 캐시해야하는 이유는 무엇입니까? 네트워크 대기 시간 및 전송 시간은 파일을 압축하는 데 소요 된 CPU 시간보다 훨씬 길어서 가장 간단한 솔루션 일 수 있습니다.

그러나 확실하게 필요하다면 중앙 데이터베이스가 파일 공유보다 더 빠를 것인지 확신 할 수 없습니다. 물론 이러한 것들을 추측하지 말고 측정해야합니다. 간단한 접근 방법은 NFS 공유에 원본 파일을 호스팅하고 필요할 때마다 각 웹 서버에서 gzip으로 캐시 할 수있게하는 것입니다. memcached (Poni가 제안한대로) 또한 좋은 대안이지만 복잡한 계층을 추가합니다.

+0

저는 파일 시스템, 포스트 그레스 (postgres) 및 토쿄 (tokyo) 캐비닛을 벤치 마크하는 과정에 있습니다. 내 질문을 결과로 업데이트하겠습니다. – Scott

관련 문제