높은 동시성(High Concurrency)은 일반적으로 시스템이 설계를 통해 동시에 많은 요청을 병렬로 처리할 수 있도록 보장하는 것을 의미합니다.
일반적으로 높은 WEB 동시성 문제를 해결하는 효과적인 방법은 선형 확장 가능한 다중 계층 분산 아키텍처를 사용하는 것입니다. 제 제작 프로젝트의 아키텍처는 이렇습니다. 여기에 몇 가지 아이디어가 있습니다.
웹 서버(Nginx): (권장 학습: PHP 비디오 튜토리얼)
이 레이어는 쉽게 배포 및 배포할 수 있으며 지능형 DNS 확인과 결합되어 단일 장애 지점을 쉽게 방지하고 지역 액세스 가속화를 달성할 수 있습니다. LVS와 결합하면 로드 밸런싱을 쉽게 구현할 수 있습니다.
이 레이어는 주로 정적 요청을 처리하고 PHP 요청을 두 번째 레이어의 PHP 처리 노드로 전달하는 역할을 담당합니다. 정적 리소스 주소(http://misc.xxxx.com)는 별도로 배포할 수 있습니다. 클라우드 스토리지 서비스를 직접 사용하세요. (중국에서는 Qiniu가 좋고, 해외에서는 Amazon S3도 가능합니다.)
PHP 처리 노드:
노드는 실제로 웹서버의 요청을 듣는 시스템 프로세스입니다. 배포 및 로드 밸런싱을 달성할 수 있는 배포용 로드 밸런서(저는 AWS의 로드 밸런서를 사용합니다).
저는 아직도 PHP와 함께 제공되는 php-fpm을 사용하고 있습니다. 사실 Facebook에서 제작한 hhvm은 매우 강력하지만 내 프로젝트의 단위 테스트를 100% 통과할 수는 없습니다. hhvm이 성숙해지면 원활하게 교체할 수 있습니다.
캐시:Memcached는 데이터베이스 IO를 줄이고 핫 데이터 액세스 속도를 높이는 데 사용됩니다. 여기서는 자세히 설명하지 않겠습니다. , 두 가지 방법이 있습니다. 하나는 레이어에 캐시를 추가하는 것입니다. 이 방법은 코드 결합이 낮지만 일부 프로젝트는 적합하지 않을 수 있습니다. 특정 데이터 액세스 포인트에 캐시를 추가하는 방법입니다. 이 방법은 프로그램 결합도가 높지만 캐시 적중률이 매우 높고 잘못된 캐시가 거의 없습니다.
데이터베이스:현재 프로젝트 데이터 규모가 크지 않고 당분간 단일 데이터베이스만 사용하지만 프로그램 로직은 데이터베이스의 선형 확장이 가능합니다.
사실 데이터베이스 계층 확장은 진부한 표현입니다. 이는 하위 데이터베이스와 하위 테이블을 사용하는 것입니다. 이는 초기 코드에서 기초를 다지는 데 필요한 또 다른 원활한 방법은 360's와 같은 미들웨어를 사용하는 것입니다. Atlas, Alibaba의 코바, Taobao의 TDDL 및 미들웨어는 광범위한 코드 변경 없이 확장이 가능하지만 구체적인 사용 시나리오는 여전히 제한적이며 특정 프로젝트는 개별적으로 검토해야 합니다.
기타:프로젝트에 따라 아키텍처에서 선택적으로 대기열을 사용할 수도 있으며 현재 beanstalkd를 사용하고 있으며 Redis도 좋은 선택입니다. 대기열의 일반적인 사용 환경은 이메일 전송 및 사이트 내 메시지 푸시입니다. 그러나 일부 시나리오에서는 대규모 동시성 또는 갑작스러운 트래픽을 처리하는 데에도 좋은 선택입니다.
위 내용은 PHP 높은 동시성 웹 사이트는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!