레이어링은 엔터프라이즈 애플리케이션 시스템에서 가장 일반적인 아키텍처 패턴입니다. 시스템을 수평 차원에서 여러 부분으로 나누고 각 부분은 상대적으로 단순하고 단일한 책임을 담당하며 상위 계층을 통해 하위 계층에 의존하고 일정을 관리합니다. .완전한 시스템을 형성합니다.
웹사이트의 계층화된 아키텍처에는 애플리케이션 계층, 서비스 계층, 데이터 계층이라는 세 가지 공통 계층이 있습니다. 애플리케이션 계층은 특히 비즈니스 및 뷰 표시를 담당합니다. 서비스 계층은 애플리케이션 계층에 대한 서비스 지원을 제공합니다. 데이터베이스는 데이터베이스, 캐시, 파일, 검색 엔진 등과 같은 데이터 저장소 액세스 서비스를 제공합니다.
계층화된 아키텍처는 물리적 배포 측면에서 3계층 아키텍처를 동일한 물리적 시스템에 배포할 수 있지만 웹사이트 비즈니스가 발전함에 따라 이미 계층화된 모듈을 별도로 배포해야 합니다. 3계층 구조는 개별적으로 배포되며, 웹 사이트는 점점 더 많은 사용자 방문을 처리할 수 있는 더 많은 컴퓨팅 리소스를 갖습니다.
따라서 계층형 아키텍처 모델의 원래 목적은 개발 및 유지 관리를 용이하게 하기 위해 소프트웨어의 명확한 논리적 구조를 계획하는 것이지만, 웹 사이트 개발 과정에서 계층형 구조는 웹 사이트가 높은 동시성 개발을 지원하는 데 중요합니다. 그리고 분산 방향.
웹사이트는 7×24시간 지속적으로 실행되어야 하므로 특정 시스템이 다운될 때 액세스할 수 없도록 해당 중복성 메커니즘이 있어야 합니다. 중복성은 클러스터를 형성하기 위해 최소 두 대의 서버를 배포하여 높은 서비스 가용성을 달성할 수 있습니다. 정기적인 백업 외에도 데이터베이스는 핫 및 콜드 백업을 구현해야 합니다. 재해 복구 데이터 센터는 전 세계적으로 배포될 수도 있습니다.
레이어링이 소프트웨어를 수평으로 나누는 것이라면 파티셔닝은 소프트웨어를 수직으로 나누는 것입니다.
웹사이트가 커질수록 기능은 더욱 복잡해지고 서비스 및 데이터 처리 유형도 많아집니다. 이러한 다양한 기능과 서비스를 분리하여 응집력이 높고 결합도가 낮은 모듈식 단위로 패키징하는 것은 웹사이트의 개발 및 유지 관리에 도움이 될 뿐만 아니라 소프트웨어 또한 다양한 모듈의 분산 배포를 촉진하고 웹사이트의 동시 처리 기능과 기능 확장 기능을 향상시킵니다.
대규모 웹사이트의 경우 분리 수준이 작을 수 있습니다. 예를 들어, 애플리케이션 계층에서는 쇼핑, 포럼, 검색, 광고 등 다양한 비즈니스가 서로 다른 애플리케이션으로 분리되어 있으며, 이를 담당하는 팀이 서로 다른 서버에 배포됩니다.
비동기를 사용하면 기업 간 메시지 전달이 동기식 호출이 아닌, 비즈니스 운영이 여러 단계로 나누어지고, 각 단계는 데이터 공유를 통한 협업을 위해 비동기식으로 실행됩니다.
특정 구현은 다중 스레드 공유 메모리를 통해 단일 서버 내에서 처리될 수 있으며, 분산 시스템에서는 분산 메시지 대기열을 통해 비동기 구현이 가능합니다.
일반적인 비동기 아키텍처는 생산자-소비자 방식이며 둘 사이에 직접적인 호출이 없습니다.
대규모 웹사이트의 경우 계층화 및 분리의 주요 목적 중 하나는 분할된 모듈의 분산 배포를 용이하게 하는 것, 즉 서로 다른 서버에 서로 다른 모듈을 배포하고 원격 호출을 통해 함께 작업하는 것입니다. 분산이란 동일한 작업을 완료하는 데 더 많은 컴퓨터를 사용할 수 있다는 의미이며, 더 많은 CPU, 메모리, 스토리지 리소스가 많아지고 동시에 액세스할 수 있는 양과 처리할 수 있는 데이터의 양이 늘어나 더 많은 사용자에게 Serve를 제공할 수 있다는 의미입니다.
웹사이트 애플리케이션에는 일반적으로 사용되는 여러 가지 분산 솔루션이 있습니다.
분산 애플리케이션 및 서비스: 계층화되고 분리된 애플리케이션과 서비스 모듈의 분산 배포는 웹 사이트 성능과 동시성을 향상시키고, 개발 및 릴리스 속도를 높이며, 데이터베이스 연결 리소스 소비를 줄일 수 있습니다.
분산 정적 리소스: JS, CSS, 로고 이미지 및 기타 리소스와 같은 웹사이트의 정적 리소스는 분산 방식으로 배포되며 독립적인 도메인 이름을 사용합니다. 이를 종종 정적 리소스와 동적 리소스의 분리라고 합니다. 정적 리소스의 분산 배포는 독립적인 도메인 이름을 사용하여 애플리케이션 서버의 로드 압력을 줄일 수 있습니다.
분산된 데이터 및 스토리지: 대규모 웹사이트는 P 단위로 대용량 데이터를 처리해야 합니다. 이러한 데이터베이스는 분산된 스토리지를 필요로 합니다.
분산 컴퓨팅: 현재 웹사이트에서는 이러한 배치 계산을 위해 일반적으로 Hadoop 및 MapReduce 분산 컴퓨팅 프레임워크를 사용하는데, 이는 모바일 데이터가 아닌 모바일 컴퓨팅이 특징이며, 컴퓨팅 프로그램을 데이터 위치에 배포하여 컴퓨팅 및 분산 컴퓨팅을 가속화합니다.
웹사이트에는 보안 아키텍처 측면에서 다양한 모드가 있습니다. 로봇이 리소스를 남용하는 것을 방지하려면 비밀번호 및 휴대폰 인증 코드를 통한 신원 인증을 암호화해야 합니다. 일반적인 XSS 공격, SQL 주입에는 인코딩 변환이 필요합니다. 스팸 정보를 필터링해야 합니다.
구체적인 내용에는 자동화된 릴리스 프로세스, 자동화된 코드 관리, 자동화된 테스트, 자동화된 보안 감지, 자동화된 배포, 자동화된 모니터링, 자동화된 경보, 자동화된 장애 조치, 자동화된 오류 복구 등이 포함됩니다.
중앙 집중식 사용자 액세스가 있는 모듈의 경우 독립적으로 배포된 서버를 클러스터링해야 합니다. 즉, 여러 서버가 동일한 애플리케이션을 배포하여 클러스터를 형성하고 로드 밸런싱 장비를 통해 외부 서비스를 공동으로 제공해야 합니다.
서버 클러스터는 동일한 서비스에 대해 더 많은 동시 지원을 제공할 수 있으므로 더 많은 사용자가 액세스하면 클러스터에 새 시스템만 추가하면 됩니다. 또한 서버 중 하나에 오류가 발생하면 로드 밸런싱 장애 조치 메커니즘을 사용할 수 있습니다. 요청을 클러스터의 다른 서버로 전송하여 시스템 가용성을 향상시킵니다.
캐싱의 목적은 데이터를 사용자에게 직접 반환할 수 있도록 서버의 계산을 줄이는 것입니다. 오늘날의 소프트웨어 설계에서는 캐싱이 어디에나 있습니다. 특정 구현에는 CDN, 역방향 프록시, 로컬 캐시, 분산 캐시 등이 포함됩니다.
캐시 사용에는 두 가지 조건이 있습니다. 데이터 핫스팟에 대한 불균형 액세스, 즉 자주 액세스하는 일부 데이터를 캐시에 저장해야 합니다. 데이터는 특정 기간 내에 유효하지만 곧 만료됩니다. 그렇지 않으면 더티 읽기가 발생합니다. 데이터 만료로 인해 데이터의 정확성에 영향을 미칩니다.
위 내용은 건조한 것들! 9가지 고성능 및 동시성 기술 아키텍처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!