스위프트는 원래는 항상 사용 가능한 분산된 개체 스토리지 서비스 Rackspace 주식 회사에 의해 개발 하 고 2010 년에서 OpenStack http://www.aliyun.com/zixun/aggregation/13856.html에 기여. "> Subprojects 초기 핵심 중 하나는 오픈 소스 커뮤니티의 노바 하위 프로젝트에 대 한 스토리지 서비스를 미러링 하는 가상 컴퓨터 제공 합니다. 스위프트는 상대적으로 저렴 한 표준 하드웨어 저장소 인프라에 구축, 컨테이너와 개체 읽기 / 쓰기 작업, 멀티 테 넌 트 모드를 지원 하도록 데이터 일관성을 어느 정도 희생 일관 된 해싱 기술과 소프트웨어 수준에서 데이터 중복성을 도입 하 여 높은 가용성과 확장성을 달성 하기 위해 RAID (디스크의 중복 배열)에 대 한 필요성을 제거 구조화 되지 않은 데이터 저장소는 인터넷의 응용 프로그램 환경에서의 문제 해결에 적합 합니다.
이 프로젝트는 Python을 사용 하 여 시스템을 사용 하 여 개발자가 사용할 수 있는 아파치 2.0 라이센스 계약에 따라 개발 된다.
원리
일관 된 해시 (일관 된 해시)
개체의 엄청난 수준에 직면, 그들은 서버와 하드 디스크 장치, 이러한 장치 주소를 개체를 배포 하는 방법의 문제를 해결 하는 처음의 수천에 저장 해야 합니다. 스위프트 노드가 추가 되거나 삭제 될 때 개체를 균등 하 게 가상 공간, 이동 하는 데이터의 양 배포할 수 있는 가상 노드 크게 감소 될 수 있다 계산 하 여 일관 된 해싱 기술에 기반, 가상 공간의 크기는 보통 2 n 전력 효율적인 시프트 동작을 용이 하 게 하 고 독특한 데이터 구조를 통해 다음 반지 (루프) 실제 물리적 저장 장치에 가상 노드를 지도 그리고 해결 과정을 완료 합니다.
그림 1입니다. 일관 된 해시
그림 1에서 보듯이, 시계 반대 방향에서 증가 해시 공간에 총 32 비트 4 바이트의 정수 범위 [0 ~ 232-1], 그리고 232 m 가상 노드, m 등을 오른쪽 M 비트 해시 결과 = 29, 8 가상 노드를 생성. 실제 배포는 가상 노드 저장 공간 및 작업 사이의 균형을 달성 하기 위해 적절 한 수 주의 계산을 필요 합니다.
데이터 일관성 모델 (일관성 모델)
3 측면을 한 번에 만날 수 없는, 에릭 브루의 모자 (일관성, 유용성, 파티션 공차) 이론에 따르면 스위프트가 일관성 (ACID 트랜잭션 수준 만족) 마지막 일관성 모델 (결과적인 일관성)는 무제한 수준의 확장성 및 고가용성을 달성 하는 데 사용 됩니다. 이 목표를 달성 하기 위해 스위프트 쿼럼 중재 계약을 (쿼럼 법적 투표 수의 의미)을 채택 한다:
(W: 쓰기 작업에 의해 허용 되 고 인정 된 복사본의 수 n: 총 데이터의 복사본 1) 정의:; r: 읽기 작업 복사본 수
(2) 강한 일관성: R + w > n 되도록 읽기와 쓰기 작업 복사본의 경우는 최신 버전을 읽을 수 있습니다, 있도록 교차로 생산할 예정 이다 w = n, r = 1, 모두 업데이트 해야, 많은 수의에 대 한 적합 한 읽기 몇 가지 쓰기 작업 현장 강한 일관성; r = n, w = 1, 하나의 복사본이 업데이트 됩니다. 최신 버전을 얻을 모든 복사본을 읽기, 쓰기의 많은 수를 위해 적당 한 작은 읽을 장면 강한 일관성.
(3) 약한 일관성: R + w < = n, 읽기 / 쓰기 작업의 복사본 컬렉션 교차로, 생성 하지 않는 경우 커밋되지 않은 데이터 읽을 수 있습니다;
그래서 그것은 즉 더 많은 절충 주의 전략을 사용 하 여 읽기와 쓰기, 더 자주 시나리오에서 스위프트 목표로, 성공적인 W의 절반 이상에 맞게 작업 필요 쓰기 > N/2는 읽기 작업을 확인 하 고 작업 복사본의 설정 하나 이상 교차로, 즉, r + w 쓰기 > n. 스위프트의 기본 구성은 N = 3, w = 2 > n/2, r = 1 또는 2, 즉, 각 개체의 복사본을 3 되며 복제본 노드에서 다른 지역으로 가능 하 고 w에 저장 됩니다 = 2 2 복제본 작성 업데이트할 필요가 나타냅니다 성공적으로; 때 = 1 이면 읽기 작업이 성공 하 고 느낌의이 종류는 즉시 반환 이전 버전 (약한 일관성 모델);에 상태를 읽을 수 있습니다 때는 = 2, X-최신 추가 하 여 2 부는 동시에 메타 데이터 정보를 읽을 필요가 있다 (강한 일관성 모델), 최신 버전입니다 확인 하려면 타임 스탬프 비교 그리고 데이터 일관성이 없으면 읽기 작업 요청 헤더를 진정한 매개 변수 = 백그라운드 서비스 프로세스는 최종 일관성을 보장 하는 시간의 특정 창 내에서 검색 및 복제 프로토콜을 통해 데이터 동기화를 완료 합니다. 그림 2와 같이:
그림 2입니다. 쿼럼 프로토콜 예제
링의 데이터 구조
일련의 물리적 저장 장치에 가상 노드 (파티션)를 지도 하 고 어느 정도의 중복성을 제공 하는 링 설계 및 데이터 구조는 다음 정보로 구성 됩니다.
저장 장치 목록 장치 정보에는 고유 식별 번호 (ID), 지역 번호 (지역), 무게 (중량), IP 주소 (IP), 포트 (포트), 장치 이름 (장치), 메타 데이터 (메타)가 포함 됩니다. 파티션 번호 (Part_shift 정수, 즉, 그림 1에서 m)의 변위를 계산 하는 장치 매핑 관계 (replica2part2dev_id 배열)을 분할
예를 들어, 개체에 대 한 계산 프로세스를 찾을 수 있습니다:
그림 3입니다. 링의 데이터 메커니즘
개체의 계층 구조 계정/컨테이너/개체를 사용 하 여 해시 알고리즘은 해시 값을 가져오는 데 사용 하는 MD5 키로 해시 값의 첫 번째 4 바이트는 파티션 인덱스 번호, 오른쪽으로 이동 및 이동 수 위의 Part_shift 설정에 의해 지정 된 장치 매핑 테이블 (REPLICA2PART2DEV_ID)에 파티션의 파티션 인덱스 번호 찾을 파티션에 있는 개체 상주, 그리고 이러한 장치는 서로 다른 영역 (영역)에 배포 될 선택 및 지역 추상적인 개념, 기계, 선반, 수에 대 한 해당 장치 번호 또는 심지어는 클러스터 중복의 높은 수준을 제공 하는 건물 내는 것이 좋습니다 적어도 5 영역을 배포 하; 가중치 매개 변수는 디스크의 크기에 따라 조정 될 수 있는 상대적인 값 이며 큰 무게 나타냅니다 더 많은 공간을 할당할 수 있습니다, 더 많은 파티션을 배포할 수 있습니다.
빠른 찾기 및 계정에 대 한 컨테이너, 컨테이너, 계정과 별도로 정의 되어 있는 개체의 동일한 과정이입니다.
이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이
페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.
커뮤니티에서 표절 사례를 발견한 경우
info-contact@alibabacloud.com
으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.