>  기사  >  백엔드 개발  >  대규모 웹 시스템 아키텍처에 대한 간략한 논의

대규모 웹 시스템 아키텍처에 대한 간략한 논의

WBOY
WBOY원래의
2016-08-08 09:22:15967검색

동적 애플리케이션이란 c/c++, php, Java, perl, .net 등의 서버측 언어로 개발된 포럼, 온라인 사진 앨범, 데이트, BLOG 등의 네트워크 애플리케이션 소프트웨어를 말합니다. 일반적인 응용 프로그램. 동적 애플리케이션 시스템은 일반적으로 데이터베이스 시스템, 캐시 시스템, 분산 스토리지 시스템 등과 분리될 수 없습니다.

대규모 동적 애플리케이션 시스템 플랫폼은 주로 대규모 트래픽, 높은 동시성 웹 사이트를 위해 구축된 기본 시스템 아키텍처를 목표로 합니다. 대규모 웹사이트를 운영하려면 웹사이트 애플리케이션의 원활한 운영을 보장하기 위해 안정적이고 안전하며 확장 가능하고 유지 관리가 쉬운 애플리케이션 시스템 플랫폼의 지원이 필요합니다.

대규모 동적 응용 시스템은 여러 하위 시스템으로 나눌 수 있습니다.

1) 웹 프런트엔드 시스템

2) 로드 밸런싱 시스템

3 ) 데이터베이스 클러스터 시스템

 4) 캐싱 시스템

 5) 분산 스토리지 시스템

 6) 분산 서버 관리 시스템

 7) 코드 배포 시스템

웹 프론트엔드시스템

구조도:

서버 구현을 위해 다양한 애플리케이션에 대한 공유, 단일 장애 방지, 중앙 집중식 관리 및 통합 구성을 위해 서버를 애플리케이션별로 구분하지 않고 모든 서버를 균일하게 사용하여 여러 애플리케이션에 대한 서비스를 제공할 수 있습니다. 특정 응용 프로그램이 증가하면 서버 노드를 추가하면 전체 서버 클러스터의 성능이 향상되고 다른 응용 프로그램에도 이점이 있습니다. 웹 프론트엔드 시스템은 Apache/Lighttpd/Eginx 등의 가상 호스트 플랫폼을 기반으로 PHP 프로그램 운영 환경을 제공합니다. 서버는 개발자에게 투명하며 개발자가 서버 관리에 개입할 필요가 없습니다.

로드 밸런싱 시스템

로드 밸런싱 시스템은 하드웨어 두 가지 유형으로 나뉩니다. 그리고 소프트웨어. 하드웨어 로드 밸런싱은 F5 등과 같이 매우 효율적이지만 비용이 많이 듭니다. 소프트웨어 로드 밸런싱 시스템은 하드웨어 로드 밸런싱 시스템보다 저렴하거나 무료이며 효율성도 떨어지지만 lvs 및 nginx와 같이 평균 또는 약간 더 큰 트래픽이 있는 웹 사이트에는 충분합니다. 대부분의 웹사이트는 하드웨어와 소프트웨어 로드 밸런싱 시스템을 조합하여 사용합니다.

데이터베이스 클러스터 시스템

구조도 :

웹 프런트엔드는 로드밸런싱 클러스터 구조를 채택하므로 효율성과 확장성이 뛰어나다. 따라서 전체 서비스 시스템의 높은 신뢰성을 보장하기 위해서는 데이터베이스의 신뢰성도 높아야 합니다. 대규모 동시 처리가 가능한 신뢰성 높은 데이터베이스 시스템을 구축하려면 어떻게 해야 할까요?

위 그림과 같은 솔루션을 채택할 수 있습니다.

1) 웹 애플리케이션의 데이터베이스가 더 많이 읽고 더 적게 쓰기 기능을 통해 우리는 주로 읽기 데이터베이스를 최적화하고 전용 읽기 데이터베이스와 쓰기 데이터베이스를 제공하며 애플리케이션에서 읽기 작업과 쓰기 작업을 구현하여 각기 다른 데이터베이스에 액세스합니다.  2) MySQL 복제 메커니즘을 사용하여 마스터 데이터베이스(데이터베이스 쓰기)의 데이터베이스를 슬레이브 데이터베이스(데이터베이스 읽기)로 빠르게 복사합니다. 하나의 마스터 데이터베이스는 여러 개의 슬레이브 데이터베이스에 대응되며, 마스터 데이터베이스의 데이터는 슬레이브 데이터베이스와 실시간으로 동기화됩니다. 만두 기계 www.yjlmj.com 정리 및 게시 3) 여러 쓰기 데이터베이스가 있으며 각 데이터베이스는 여러 응용 프로그램에서 사용할 수 있어 쓰기 데이터베이스의 성능 병목 현상 문제와 단일 실패 지점 문제를 해결할 수 있습니다. .

 4) 다수의 독서 데이터베이스가 있으며, 로드 밸런싱 장비를 통해 로드 밸런싱을 이루어 독서 데이터베이스의 고성능, 고신뢰성, 높은 확장성을 구현합니다.

 5) 데이터베이스 서버와 애플리케이션 서버 분리.

 6) 데이터베이스의 로드 밸런싱에는 BigIP를 사용합니다.

캐싱 시스템

캐싱은 파일 캐시, 메모리 캐시, 데이터베이스 캐시로 구분됩니다. 대규모 웹 애플리케이션에서 가장 일반적으로 사용되며 가장 효율적인 방법은 메모리 캐싱입니다. 가장 일반적으로 사용되는 메모리 캐싱 도구는 Memcached입니다. 올바른 캐싱 시스템을 사용하면 다음과 같은 목표를 달성할 수 있습니다.

1. 캐싱 시스템을 사용하면 액세스 효율성이 향상되고 서버 처리량이 증가하며 사용자 경험이 향상될 수 있습니다.

2. 데이터베이스 및 세이브 세트 서버에 대한 액세스 부담을 줄입니다.

3. 단일 장애 지점을 방지하고 높은 안정성과 확장성을 제공하며 성능을 향상시키기 위해 여러 Memcached 서버가 있습니다.

분산 스토리지 시스템

구조도:

웹 시스템 플랫폼

스토리지 1) 저장 용량이 커서 사진 앨범, 동영상, 기타 애플리케이션 등 단일 서버가 제공할 수 없는 규모에 도달하는 경우가 많습니다. 따라서 전문적인 대규모 스토리지 시스템이 필요합니다.  2) 로드 밸런싱 클러스터의 각 노드는 어떤 데이터 객체에도 접근할 수 있으며, 각 노드에서 처리하는 데이터는 다른 노드에서도 공유할 수 있으므로 이들 노드에서 운용할 데이터는 논리적으로만 가능하다 독립적인 데이터 리소스가 아닌 전체가 되어야 합니다.

따라서 대규모 웹사이트 애플리케이션에서는 고성능 분산 스토리지 시스템이 매우 중요한 부분입니다. (분산 스토리지 시스템에 대한 간단한 소개가 필요합니다.)

분산 서버 관리 시스템

구조도:

웹 사이트 액세스 트래픽이 지속적으로 증가함에 따라 대부분의 네트워크 서비스는 로드 밸런싱 클러스터 형태로 외부에서 제공됩니다. 클러스터 규모가 확장됨에 따라 단일 시스템 기반의 기존 서버 관리 모델은 더 이상 우리의 요구를 충족할 수 없습니다. 요구 사항은 중앙 집중식, 그룹화, 일괄 처리 및 자동화된 방식으로 서버를 관리할 수 있어야 하며, 계획된 작업을 일괄적으로 실행할 수 있어야 합니다.

분산 서버 관리 시스템 소프트웨어 중에는 우수한 소프트웨어가 있는데, 그 중 가장 이상적인 소프트웨어가 바로 Cfengine입니다. 서버를 그룹화할 수 있으며, 다양한 그룹이 시스템 구성 파일, 예약된 작업 및 기타 구성을 사용자 정의할 수 있습니다. C/S 구조를 기반으로 하며, 모든 서버 구성 및 관리 스크립트 프로그램은 Cfengine Server에 저장되며, Cfengine Client는 SSL 암호화 연결을 통해 정기적으로 서버에 요청을 보냅니다. 최신 구성 파일 및 관리 명령, 스크립트, 패치 설치 및 기타 작업.

중앙 집중식 서버 관리 도구인 Cfengine을 사용하면 대규모 서버 클러스터 관리를 효율적으로 구현할 수 있습니다. 관리되는 서버와 Cfengine 서버는 네트워크가 연결되어 있는 한 어느 위치에나 분산될 수 있습니다. 자동화된 관리.

코드 릴리즈 시스템

구조도 :

웹사이트 접속 트래픽의 지속적인 증가로 인해 대부분의 네트워크 서비스에 부하가 걸리고 있습니다. 클러스터 규모가 확장됨에 따라 클러스터 환경에서 프로그램 코드의 일괄 배포 및 업데이트를 충족하려면 프로그램 코드 릴리스도 필요합니다. 체계.

이 퍼블리싱 시스템은 다음과 같은 목표를 달성하는 데 도움이 될 수 있습니다.

1) 프로덕션 환경의 서버는 가상 호스트 형태로 서비스를 제공하며 개발자가 유지 관리에 개입할 필요가 없습니다. 퍼블리싱 시스템을 제공하여 서버에 로그인하지 않고도 대상 서버에 프로그램을 배포할 수 있습니다.

2) 내부 개발, 내부 테스트, 프로덕션 환경 테스트, 프로덕션 환경 릴리스의 4가지 개발 단계 관리를 실현해야 합니다. 릴리스 시스템은 각 단계에서 코드 릴리스에 개입할 수 있습니다.

 3) 소스코드 관리와 버전 관리를 구현해야 하는데 SVN이 이를 달성할 수 있습니다.

여기서 일반적으로 사용되는 도구인 Rsync를 사용하면 해당 스크립트 도구를 개발하여 서버 클러스터 간의 코드 동기화 배포를 달성할 수 있습니다.

이상에서는 다양한 측면을 포함하여 대규모 웹 시스템 아키텍처에 대한 간략한 논의를 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.