"에디터의 참고" 윅 스는 오랜 시간에 대 한 사이트를 운영 하고있다 그리고 HTML5 기반 위지윅 웹 플랫폼의 출시 후 사용자가 설정한 54 백만 이상의 사이트는 회사에서 이러한 사이트의 대부분이 100 태양 PV. 각 페이지의 PV 낮은 이기 때문에, 전통적인 캐싱 전략 적용 되지 않습니다. 그러나 그럼에도 불구 하 고,, 회사는 이렇게만 4 웹 서버. 최근, 윅 스의 수석 백엔드 엔지니어, Aviran Mordo 연설 "규모에 윅 스 건축,"에서 그들의 전략을 공유 하 고 우리 토 드 확장성, 높은 호프의 설립자의 요약 보고:
다음 번역
확장성 주위 WiX 노력 "사용자 지정" 3-고가용성 및 고성능 시스템의 면밀 한 검토 후 개선 되었습니다 시스템으로 정리 될 수 있습니다.
윅 스는 여러 데이터 센터 및 클라우드 서비스는 종종 Google 계산 엔진 및 AWS 희귀 하 고 복제 데이터를 사용 합니다. 장애 조치, 그들은 특정 대처 전략이 있다.
처음부터 끝까지, 윅 스는 트랜잭션을 사용 하지 않았다. 대신, 모든 데이터는 변경할 수, 그리고 매우 간단한 최종 일관성 전략을 사용 하 여 사용 사례에 대 한. 윅 스는 캐싱 전략 매니아는, 한마디로 그들은 매우 높은-엔드 캐시 레이어를 생성 하지 않습니다. 대신, 그들은 더 이상 100 밀리초를 표시 하려면 각 페이지를 허용 하는 경로 렌더링 최적화 그들의 에너지의 대부분을 바치 다.
윅 스 모놀리식 아키텍처를 사용 하 여 아주 작은 시스템으로 시작 하 고 사업 개발 과정에서 그들은 자연스럽 게 서비스 지향 아키텍처를 전환. 아키텍처를 통해 그들은 쉽게 집중할 수 그들의 에너지의 모든 하나의 이벤트는 매우 정교한 서비스 식별 전략을 사용 했습니다.
시스템 통계
5400 웹 사이트, 매달 1 백만 추가할 것입니다 800 + TB 정적 데이터, 1.5 t B 3 일 데이터 당 새 파일의 센터 + 두 클라우드 서비스 (Google와 아마존) 300 서버 HTTP 요청 600 직원, 200 사람들의 연구 및 개발 팀의 하루 700 백만 시스템 내에서 서비스의 수에 도달 하면 45 백만 웹 사이트
를 지원 하기 위해 50 4 공용 웹 서버
시스템 구성 요소
MySQL 구글과 아마존의 클라우드 서비스 CDN (콘텐츠 배포 네트워크) Chef
시스템 진화
1. 시스템 사람, 매우 유연 하 고 업데이트 하기가 간단한 초기 전략은 처음에 단 하나의 응용 프로그램 서버와 간단한 단일 아키텍처와 함께 시작 합니다.
톰캣, 최대 절전 모드, 사용자 지정 네트워크 프레임 워크. 상태 저장 로그인을 사용 합니다. 에 어떤 성능 및 확장성에 관련 된.
2. 2 년 후입니다.
는 여전히 모든 것을 지원 하기 위해 단일 서버를 사용 합니다. 개발 팀의 특정 크기 그리고 사용자의 특정 크기를 지원 해야 합니다. 종속성 문제입니다. 특정 지점 변경 일반적으로 변경 될 전체 시스템 그리고 실패 없는 지역에서 일반적으로 시스템을 통해 광범위 한 충돌을 일으킬.
3. 시간은 시스템 분할 왔다.
서비스 지향 아키텍처 변환, 하지만이
는 쉬운 일이 아니다. 예를 들어 어떻게 할 당신이 기능을 분리 한 두 서비스에? 3 카테고리 아래 메인 시스템에는 사용자의 행동에 초점: 사이트 수정, 윅 스 설립 웹 사이트 미디어 서비스를 보고. 웹 사이트 업데이트 데이터 유효성 검사, 보안 및 서버 데이터, 데이터 일관성, 그리고 많은 수의 데이터 수정 작업의 유효성 검사를 포함합니다. 웹사이트 설정 되 면 사용자는 그것을 볼 것입니다. 따라서 전체 시스템에 대 한 방문자의 수는 한정자의 시간 10 배입니다. 그래서 초점 변환 됩니다:
높은 가용성. 하는 시스템의 가장 큰 기능 때문에 된다 사용자의 비즈니스 행동. 높은-performance。 높은 흐름 값입니다. 긴 꼬리 문제입니다. 이미 플랫폼에 웹 사이트의 많은 하지만 그들은 일반적으로 매우 작은. 혼자 웹사이트를 보면만 하루 10 또는 100 PV를 수 있습니다. 이 기능을 감안할 때, 캐시는 없습니다 시스템 확장에 많은 영향. 그 결과, 캐싱 매우 비효율적이 된다.
미디어 지원 HTML, 자바 스크립트, CSS와 이미지를 포함 하 여 두 번째로 큰 서비스입니다. 그들은 800 TB 데이터를 있는 성공에 열쇠는 정적 콘텐츠를 캐시에 많은 수의 요청을 지 원하는 방법이 필요. 새로운 시스템은 네트워크 계층 처럼, 사이트 서비스의 3 부분으로 잘라: 부분 (동작을 수정 하는 데이터 변경), (읽기 전용 정적 콘텐츠 지원) 미디어 섹션, (첫 번째 부분에서 읽기 전용 파일 액세스) 공용 부분을 수정.
서비스 구축 지침
각 서비스는 그것의 자신의 독립적인 데이터베이스 및 각 데이터베이스 서비스에 의해만 쓰여질 수 있다. 데이터베이스 문제를 분리 하 고 다른 서비스에 투명 한 데이터 모델을 만드는 서비스의 API에 의해서만 액세스할 수 있습니다. 성능상의 이유로, 다른 서비스는 데이터베이스에 읽기 전용 액세스 부여만 하 고 데이터베이스는 하나의 서비스에 쓸 수 있습니다. 서비스는 상태 비저장, 수평으로, 확장 하기 쉽게 그것 하 고 비즈니스의 성장만 더 많은 서버를 추가 하 여 지원 해야 합니다. 트랜잭션을 사용 하지 마십시오. 결제/금융 거래 뿐만 아니라 다른 모든 서비스에 트랜잭션을 사용 하지 마십시오, 여기서 데이터베이스 트랜잭션, 성능 향상의 비용을 피하기 위해 하는 것입니다. 없는 트랜잭션을 사용 하는 개발자 불일치를 피하기 위해 트랜잭션 논리 특성을 완료 하는 데 적절 한 데이터 모델을 디자인 하는 고려해 야 합니다. 캐시는 새로운 서비스를 디자인할 때 고려해 야 할 요인이 아니다. 첫째, 가능한 만큼, 서비스를 고려 하 고 신속 하 게 서비스를 실행 하는 방법을 보고 프로덕션 환경에 배포할. 코드 최적화 되지 않은 경우에 성능 문제를 해결 하려면 캐시를 사용 합니다.
업데이트 서비스
업데이트 서비스는 많은 수의 파일을 처리 해야 합니다. 데이터는 불변 JSON 페이지 하루 약 2.5 백만, MySQL에 저장 됩니다. MySQL은 큰 키 값 저장소 이다. 키가 설정 따라 파일의 해시 함수에 열쇠는 변경할 수 없습니다 및 기본 키를 통해 MySQL에 액세스 매우 좋은 성능을 얻을 수 있습니다. 허용 가능한 확장성입니다. 윅 스 확장성 측면에서 무역의 어떤 종류는? 왜 WiX NoSQL을 사용 하지 않는 이유는 nosql 일관성을 희생 하는 경향이 필요 하지 않습니다 그래서 MySQL에 주장 하 게 되는, 처리 능력 개발자에는 하지 않습니다. 동적 데이터베이스입니다. 자주 방문 하는 웹 사이트에 대 한 방법을 수 있도록, 모든 사이트 (일반적으로 데이터를 3 개월 이상)에 대 한 차가운 데이터는 종종 매우 낮은 성능에 다른 데이터베이스에 전송 됩니다 하지만 높은 용량. 사용자의 성장 수 용량에 대 한 왼쪽된 방. 대형 아카이브 데이터베이스는 매우 느린, 하지만 데이터는 사용 된 주파수를 감안할 때, 아무 문제. 하지만 일단 데이터 액세스 데이터 다음 방문 전에 활성 데이터베이스에 전송 됩니다.
업데이트 서비스
의 고가용성 구축
큰 데이터의 볼륨에는 특정 수준에 도달 하면, 모든 것의 높은 가용성 보장 어렵다. 따라서, 요주의 경로에 초점을, 사이트는 사이트의 내용이 의심할 여 지 없이. 사이트 문제의 장식 부분 인 경우에, 그것은 사이트의 가용성에 어떤 치명적인 영향을 발생 하지 않습니다. 그래서, 웹사이트에 대 한 요주의 경로 유일한 관심사입니다. 데이터베이스 충돌을 방지 합니다. 최대한 빨리 장애 조치를 완료 하려면 데이터베이스의 백업을 만들고 복구 발생 하면 데이터베이스를 신속 하 게 전환 해야 합니다. 데이터 무결성 보호입니다. 이것은 반드시 악성 위반, 그리고 버그 데이터 저장소에 영향을 미칠 수 있습니다. 모든 데이터는 변경할 수 없습니다 하 고 수정된 된 버전 데이터에 대 한 저장 됩니다. 데이터 손상 되 고 복구할 수 없는 경우에 최악의 시나리오에서 우리는 개정으로 되돌릴 수 있습니다. 발생에서 사용할 수 없는 상태를 방지합니다. 데스크톱 응용 프로그램과 달리 웹 사이트 이어야 합니다 언제, 어디서 나. 따라서, 시스템 충분 한 유연성을 제공 하는 다른 지리적 데이터 센터에서 다른 클라우드 환경에서 백업 데이터에 중요 하다.
웹 사이트에서 "저장" 버튼을 클릭 하 고 수정 세션 수정 서버에 JSON 파일을 보냅니다. 서버 활성 MySQL 서버에 페이지를 전송 하 고 다른 데이터 센터에 백업. 데이터를 로컬로 수정 될 때 비동기 프로세스 정적 그리드, 소위 미디어 섹션에 대 한 수정 업로드 합니다. 정적 모눈에 데이터를 전송할 때 Google 계산 엔진에 저장 된 보관 서비스에 알림이 전송 됩니다. 보관 서비스가 정적 격자에 연결, 수정 페이지를 다운로드 하 고 Google 클라우드 서비스에 저장. 한정자는 GCE에 저장 된 페이지를 알리는 알림이 다음 보내집니다. 또한, 시스템 GCE 데이터에 기반 하는 아마존에 또 다른 복사본을 저장 합니다. 즉 데이터 3 복사본에 저장 된 마지막 알림 받을 때: 데이터베이스, 정적 그리드와는 GCE. 새 버전에 대 한 3 복제본 있으며 이전 버전에 있을 것입니다 2. 이 프로세스는 자기 치유의 특성이 있다. 가 오류를 다음에 사용자 자신의 웹 사이트의 콘텐츠를 업데이트 하는 경우 완료 되지 않은 모든 변경 내용은 다시 업로드 됩니다. 파일을 비활성화 하면 가비지 수집을 수행할 수 있습니다. 아니 데이터베이스 트랜잭션이
를 사용 하 여 데이터 모델링
서비스 소유자에 대 한 그들은 기대 하지 일이: 사용자는 동시에 두 페이지를 수정 하 고 결과 그 한 페이지 일관성 없는 상태로 만들어 데이터베이스에 저장 됩니다. 모든 JSON 파일을 가져오고 순서 대로 데이터베이스에 저장. 모든 데이터는 저장이 정적 서버 (정적 서버에 파일 이름의 해시 값)에 업로드 하는 모든 저장 된 페이지의 ID 목록을 포함 하는 명령이 나온다.
미디어 섹션
는 많은 수의 파일을 저장합니다. 사용자 미디어 파일, 일 당 3 백만 파일의 평균, 500 백만 레코드 800 TB 이미지를 수정 합니다. 그들은 다른 장치와 화면에 대 한 이미지를 수정합니다. 여기, 필요에 따라 워터 마크를 삽입할 수 있습니다 하 고 오디오 포맷을 변환할 수 있습니다. 일관 된 분산된 파일 시스템을 설정 하 고 여러 데이터 센터 백업 모드를 사용 하 여 데이터 센터에 걸쳐 장애를 달성. 고통을 실행 합니다. 32 서버, 9 개월 마다 두 번입니다. 더 나은 확장성에 대 한 클라우드로 마이그레이션할 계획. 지옥에 공급 업체를 잠급니다. Api를 사용 하는 때문에 구현을 변경 하 여만 주에 클라우드 서비스 공급자 마이그레이션할 수 있습니다. Google 계산 엔진에 실패 했다. 그들은 데이터 센터에서 GCE 마이그레이션, 그들은 신속 하 게 Google 클라우드 서비스에 의해 구속 했다. 그리고 시스템이 정상적으로 작동 하 고 Google에 일부 변경 후. 데이터 불변 이며 따라서 캐시 매우 도움이. 이미지 요청은 CDN에 먼저 전송 됩니다. 요청한 이미지 CDN에 존재 하지 않는 경우 요청 그들의 오스틴 기본 데이터 센터에 직접 전송 됩니다. 기본 데이터 센터에서 이미지를 찾을 수 없습니다, 다음 검색의 위치 구글 클라우드 서비스입니다. 요청한 이미지는 여전히 찾을 수 없는 경우 Google 클라우드 서비스에, 다음 위치 탬파에서 데이터 센터입니다.
일반적인 부품
(45 백만 웹 사이트)에서 url을 확인 하 고는 HTML, XML, 사이트맵 또는 로봇 txt 변환 됩니다 지정 된 렌더러를 할당 합니다. 최대 응답 시간이 100 밀리초의 sla는 공중에서 웹 사이트 가용성 되어야 하며, 매우 높은 성능이 필요로 하지만 캐싱 작동 하지 않습니다. 사용자는 페이지를 수정 하 고 게시, 목록 페이지 요소를 포함 하는 라우팅 테이블 함께 공공 환경으로 밀린 다. 가동 중지 시간을 최소화 합니다. 단일 경로 구문 분석 만들어질 데이터베이스 호출을 해야 합니다. 1 RPC 호출 필요 렌더러로 요청을 할당 합니다. 웹 사이트 목록의 얻을 또한 데이터베이스 호출을 해야 합니다. 쿼리 테이블 메모리에 캐시 되 고 5 분 마다 수정 됩니다. 편집자에 게 전달 하는 데 필요한 때문에 동일한 형식으로 데이터를 저장할 수 없습니다. 데이터는 기본 키에 의해 최적화 된 비표준 형식에 저장 하 고 모든 요구 사항을 단일 요청에 반환 됩니다. 비즈니스 논리를 최소화 합니다. 데이터 비표준 이며 사전에 계산 됩니다. 큰 시나리오에서 두 번째에 내에서 발생 하는 각 작업 곱한 45 백만 번, 각 공용 서버에서 발생 하는 작업을 조정 해야 합니다. 페이지 렌더링
HTML 공용 서버에서 자바 스크립트 쉘을 사용 하 고 JSON 데이터를 포함 하는 부트스트랩 HTML 형식 관련 모든 사이트 목록 및 동적 데이터를 반환 합니다. 렌더링은 클라이언트에 배치 됩니다. 오늘, 노트북 및 모바일 장치 이미 매우 강력한 기능을 완전히 관여 될 수 있다 있다. JSON 구문 분석 하 고 압축 매우 편리 하기 때문에 선택 됩니다. 클라이언트에 대 한 버그는 패치 하기 쉽습니다. 하나의 클라이언트 코드의 재배포만 필요 클라이언트 버그 패치 하 고 서버 쪽에서 렌더링 하는 경우 HTML 캐시, 그래서 사이트의 수천의 새로운 렌더링 필요 버그 패치.
높은 가용성
의
일반적인 부분
목표는 항상 사용할 수, 항상 예기치 않은 상황 될 것 이다:는 부하 분산 장치를 통해 공용 서버에 전송 됩니다, 경로 확인, 전달 하는 렌더러 다음 브라우저에 반환 합니다, 데이터 센터에 전송 하는 브라우저에 의해 요청 브라우저를 사용 하 여 자바 스크립트를 실행 하 고. 브라우저는 다음 브라우저와 동일한 것 하 고 캐시에 데이터를 저장 하는 파일 서비스에 요청을 보냅니다. 어떻게 데이터 센터 손실: 모든 ups 끊 것입니다 및 데이터 센터 손실 됩니다. 모든 DNS 변경 됩니다, 그리고 요청 보조 데이터 센터에 보내질 것 이다. 일반적인 부분 손실: 모든 공용 서버 부하 분산 장치 구성만 중간을 통해 발생 될 때 손실 됩니다. 또는 잘못 된 버전을 배포할 때 서버 오류를 throw 합니다. 윅 스는 부하 분산 장치 코드를 사용자 지정 하 여이 문제를 해결 하 고 공용 서버 손실 될 때에, 그들은 경로 파일 서버, 캐시 시스템 경고 후 복구에 실패 하는 경우에. 불 쌍 한 네트워크 연결의 경우: 부하 분산 장치를 통해 데이터 센터에 전송 하는 브라우저에서 요청 하 고 해당 HTML 반환 됩니다. 이제 자바 스크립트 코드는 모든 JSON 데이터와 페이지를 검색 해야 합니다. 다음 정적 모눈에 보낼 콘텐츠 유통 네트워크에가 서 사이트 렌더링에 대 한 모든 파일을 얻을. 네트워크 카드 수 매우 때 파일 반환 가능 하지 않을 수 있습니다. 자바 스크립트를 선택 하 게: 기본 위치 파일을 받지 못하면, 코드 파일 서비스에서 검색 됩니다.
배운 지식
는
주요도 포인트와 비즈니스의 우려를 나타냅니다, 그리고 제품의 작동 방식을 이해, 사용 시나리오, 개발 그리고 작업 가치가 있도록 하려고 합니다. 흐린 사용 하 고 여러 데이터 센터입니다. 더 나은 가용성에 대 한 중요 한 경로에 중복성을 만듭니다. 성능만에 대 한 모든 프로세스 점프를 최소화 하기 위해 데이터를 변환 합니다. 예상 하 고 있습니다 네트워크 지터를 줄이기 위해 할 수 있는 모든. 여부에 대 한 중요 한 경로에 중복성을 설정 하는 좋은 클라이언트 CPU를 활용 합니다. 작은 시작 하 고 먼저 실행 한 다음 결정 한 다음 찾습니다. 처음부터 끝까지, 윅 스는 우선 서비스를 확인 하는 방법은 수 음, 실행 하 고 다음으로 서비스 지향 아키텍처를 전송. 긴 꼬리는 다른 방법으로 그것을 해결 하기 위해 필요 합니다. 모든 캐싱, 대신 윅 스 렌더링 경로 최적화 하 여 서비스를 향상 하 고 활성 및 보관 데이터베이스에 데이터를 백업. 변경할 수 없는 방법을 사용 합니다. 불변 많은 문제에 대 한 우아한 솔루션은 클라이언트에 백엔드의 모든 처리를 덮어쓰기 서비스의 아키텍처에 광범위 한 영향을 미칠 것 이다. 공급 업체 잠금에 존재 하지 않습니다 전혀. 모든 기능과 API를 통해 구현 됩니다 몇 주 이내 다른 클라우드 공급 업체의 마이그레이션 완료를 구현 수정 하기만. 가장 큰 병목 데이터입니다. 그것은 매우 많은 양의 다른 클라우드 환경에서 데이터 전송 어렵다입니다.
원래 링크: 규모에 윅 스 빌딩 A 출판 플랫폼에서 멋진 아키텍처 트릭 (번역/동양 Zebian/제 남 중)
중국의 대형 데이터 수상 조사 활동, 23 응답 질문에에서 참여 해야한다 2700 원 수상 (10 총)의 가장 높은 값을 가져오는 기회 CSDN 초대 그것에 참여 하도록 속도!
국가 대형 데이터 혁신 프로젝트 선택 활동 풀 스윙에도, 자세한 내용은 여기를 클릭 하십시오.
2014 중국 큰 데이터 기술 회의 (기술 컨퍼런스 2014, 2014 BDTC)는 14 크라운 프라 자 호텔, 새로운 운 남, 2014 년 12 월 12 일에 개최 됩니다. 유산 후 7 강 수, "중국의 큰 데이터 기술 컨퍼런스" 2008 년 이후 현재 가장 영향력 있는, 가장 큰 대규모 데이터 필드 기술 이벤트입니다. 이 세션에만 수 없습니다 이순신 Liu와 Apache Hadoop Tez 프로젝트 관리 위원회 Bikas 위원 Apache Hadoop 제출자 uma maheswara Rao G (프로젝트 관리 위원회의 회원)에 대해 배울 수 없습니다. 사 및 일반 대용량 데이터의 다른 공유 Tencent, 알리, Cloudera, 링크 드 인, NetEase 및 기타 기관에서 드라이 제품의 수십의 공유 뿐만 아니라 최신 성과 및 개발 동향의 소스 프로젝트를 엽니다. 현재 티켓 구매에 대 한 몇 가지 할인 티켓을 확인 하 고 있습니다.
"CSDN 큰 데이터" 마이크로-편지 공개 번호, 실시간의 이해 최신 큰 데이터 진행에 무료 가입!
CSDN 큰 데이터를 큰 데이터 정보, 기술에 집중 하 고 경험을 공유 하 고 토론, Hadoop, 스파크, 임 팔 라, 폭풍, HBase, MongoDB, SOLR, 기계 학습, 지능형 알고리즘 및 기타 관련 큰 데이터 뷰, 대용량 데이터 기술, 대용량 데이터 플랫폼, 대용량 데이터 연습을 제공 하 큰 데이터 산업 정보 및 기타 서비스.