2009-05-01 2 views
2

저희 팀은 PHP로 대형 음악 포털을 개발 중입니다. 포털은 출시 1 년 만에 1 백만 이상의 사용자를 확보 할 것으로 기대됩니다. 이 포털을 통해 사용자는 재생 목록을 만들고, 음악을 스트리밍하고 다운로드 할 수 있습니다.대규모 PHP 프로젝트에 인프라가 필요합니다.

지금까지 최대 1000 명의 동시 사용자가 사용한 응용 프로그램을 개발했습니다. 이 포털의 규모는 다른 순서입니다.

대형 프로젝트의 하드웨어 메모리 요구 사항 및 대역폭 요구 사항을 계산하는 데 사용할 수있는 벤치 마크가 있는지 알고 싶습니다.

또한 CDN (Content Delivery Network)이 모든 트래픽 관련 문제를 처리 할 수 ​​있거나 특정 캐싱과 같은 특정 작업을 수행 할 수 있어야합니다.

어떤 데이터베이스가 적합할까요? mySQL이 그러한로드를 처리 할 수 ​​있습니까, 아니면 다른 것이 필요합니다. 어떤 똑바로 대답이되지 않도록

감사

Vinayak은

답변

1

모든 응용 프로그램은 큰 부하에 다르게 반응한다. 음악 스트리밍은 주로 대역폭 문제에 부딪히지 만 디스크 IO도 들어갑니다. 콘텐츠 서버에서 많은 양의 메모리를 사용할 수 있으므로이를 극복 할 수 있습니다.

MySQL은 제대로 확장되면 엄청난 양의로드를 처리 할 수 ​​있습니다. Wikipedia는 MySQL을 사용하여 많은 수의 히트 곡을 처리합니다. Facebook은 MySQL을 사용하는 또 다른 큰 타자입니다.

편집 : http://highscalability.com/은 다른 사람들이 한 일을 볼 수있는 훌륭한 자료입니다.

1

mySQL은이 수준으로 확장되지만 게임은 1000 명의 사용자에서 100 만 명의 사용자로 크게 변경됩니다. 필요에 따라 추가 하드웨어를 스핀 업할 수 있으려면 AWS을 사용하셨습니까? 클라우드가 필요하다고 생각되면 시작하려면 여기 PHP walkthrough for AWS을 참조하십시오. 그렇게 생각합니다.

5

실제로 사용자 수가 많을 때까지는 걱정할 필요가 없습니다. 프로그래밍의 가장 중요한 규칙 중 하나는 실제로 성능 문제가 발생할 때까지 최적화하지 않는 것입니다. 그렇더라도 에 대한 정보가있을 때까지 최적화하지 마십시오. 여기서 성능 문제가 있습니다. 바로 지금, 당신은 그 중 하나도 가지고 있지 않습니다.

그렇다면 ... MySQL을 확장 할 수 있습니다. 예, 캐싱이 필요할 수 있습니다. 네, CDN이 도움이 될 수 있습니다.

단일 서버로 시작하고 그 이상으로 이동해야하는 경우 프로파일을 사용하여 병목 현상이 발생한 위치를 찾고 거기에서부터 이동하십시오. 가능하다면 당신을 돕기 위해 무엇을하고 있는지 아는 사람을 찾으십시오.

1

이 음악 포털은 "가상 사설 서버"를 가지고 시작하므로 스트리밍, 버퍼링 방법, 파일 형식의 변환을 제어 할 수 있습니다. 또한 설치를 완전히 제어 할 수 있습니다 오픈 소스 라이브러리를 사용하여 확장 성과 성능을 관리하십시오.

유명한 Youtube는 MySQL을 사용하여 많은 사용자에게 데이터를 저장하고 제공합니다.High Scalability Youtube Architechture

귀하의 타겟 고객 데이터베이스 클러스터링 및 내용을 캐시로 마이그레이션 할 수 있습니다 더 큰 성장함에 따라 : 확장 성에 대한 자세한 정보를 원하시면이 링크를 확인하십시오.

1

스케일러 빌리티가 발생합니다. 1M 사용자를 처음부터 사용하는 경우 디자인이 지나치게 복잡해집니다.

그러나 이것은 scalablity를 염두에 두는 데 도움이됩니다.
당신은 내용에 따라 정적 HTML 페이지를 생성 할 수있는 등 분석 필요, 무 $ _SESSION/logindata 또는 데이터베이스의 콘텐츠에 의존
페이지 페이지를 유지

: 말했다 즉, 여기에 몇 가지 엄지 손가락의 규칙입니다 -change-event.

N 기계 단지 1 컴퓨터에 사용자의 콘텐츠를 업로드하지만, 클러스터에 distibute 없다는 뜻 웹 서버에 대한
. 데이터베이스의 경우 데이터를 쓰는 데이터베이스 서버와 데이터를 읽는 데 (오래된) N 개의 서버를 사용합니다.

캐싱
캐시에서 데이터 생성 및 수집에도 시간이 걸립니다. 느린 캐시 조작 만.

1

건물 확장 가능 시스템은 미래의 예측 일 뿐이며, 올바른 아키텍처를 구축하고 영원히 결과를 확장 할 수 있도록 모든 것을 조심스럽게 구축합니다.

대신 다음 몇 단계를 염두에두고 빌드하고 거기에서 작업 해보십시오. 예를 들어 콘텐츠가 많은 사이트를 만드는 경우 대역폭과 저장 용량이 낮은 수준의 초크 포인트가 될 수 있으므로 모든 콘텐츠 URL이 생성되므로 CDN으로 전환하면 많은 사이트를 다시 코딩해야합니다.

필자가 권하는 것 중 하나는 모든 데이터베이스 쿼리가 읽기 전용인지 또는 쓰기 액세스가 필요한지 여부를 나타내는 플래그로 시작하는 것입니다. 이렇게하면 복제 데이터베이스 모델을 훨씬 쉽게 쉽게 분리 할 수 ​​있습니다. 도로.

관련 문제