타원체
Elliptics개발자 | Yandex 지원의 Evgeny Polakov |
---|---|
초기 릴리즈 | 전( |
저장소 | |
기입처 | C++, Python, Go |
유형 | NoSQL |
면허증. | GNU 약소 일반 공중 사용 허가서 |
웹 사이트 | www |
Elliptics는 오픈 소스 코드를 가진 분산 키 값 데이터 저장소입니다.기본적으로는 여러 개의 복제본이 서로 다른 그룹(분산 해시)에 배치된 전형적인 분산 해시 테이블(DHT)입니다.타원형은 대용량의 중대형 파일(1KB에서 기가바이트, 수천에서 수십억 개의 객체)을 저장할 때 다중 데이터 센터 및 물리적으로 분산된 스토리지 위치에 대한 요구사항을 충족하기 위해 만들어졌습니다.
역사
Elliptics는 Linux 프로그래머 Evgeni Polyakov에 의해 개발된 캐시 코히런트 분산 파일 시스템인 POHMELFS의 [1][2]일부로 2007년에 작성되었습니다.POHMELFS는 2008년 [3]1월 31일에 발표되어 2009년 6월 9일에 출시된 버전 2.6.30에서 Linux 커널 소스 트리의 스테이징 영역에 통합되었습니다.파일 시스템은 사실상 사용되지 않고 2012년 [4]2월에 다시 삭제되었습니다.
2008년에 Elliptics는 독립 프로젝트로 분리되었습니다.Polyakov는 분산형 데이터 스토리지 시스템에 대해 다양한 접근 방식을 시도했습니다. 그 중 일부는 복잡성 때문에 적합하지 않았고 일부는 실제와 너무 동떨어져 있었습니다(BerkeleyDB, LevelDB, Kyoto 캐비닛 백엔드, 단일 DHT 링에 있는 서로 다른 데이터 센터, 궁극적인 복구).타원은 최종적으로 물리적으로 분산된 장소에 존재할 가능성이 있는 병렬 복제본에서 여러 개의 업데이트가 이루어지는 일관된 시스템입니다.타원에는 낮은 수준의 온디스크스토어(Eblob이라는 이름)부터 SLRU 캐시 및 동적 라우팅 [5]프로토콜까지 여러 레이어가 포함되어 있습니다.
2012년, Polyakov는 Elliptics를 [4]기반으로 한 새로운 버전의 POHMELFS를 발표했습니다.
2014년 현재 Elliptics는 Yandex Maps, Disk, Music, Photos, Market and Infrastructure,[6] Sputnik 검색 엔진 및 Coub에 사용되고 있습니다.
아키텍처
기본적으로 Elliptics는 단일 그룹(복제본)에 분산 해시 테이블을 형성합니다.그룹에는 물리 서버뿐만 아니라 하나 이상의 서버를 포함할 수 있으며 여러 개의 타원형 그룹(복제)을 다른 백엔드에 저장할 수 있습니다.그룹은 다른 물리적 위치에 존재할 수 있으므로 다른 위치에 액세스할 수 없을 때 클라이언트의 요청을 처리할 수 있습니다.P2P(Peer-to-peer) 프로토콜을 사용하여 프록시 없이 스토리지 서버에서 직접 데이터에 액세스할 수 있습니다.Elliptics는 코카인 기술, SLRU 캐시 및 다중 플러그형 백엔드를 기반으로 C++, JavaScript, Python 서버 측 스크립트를 지원합니다(eblob은 중간 규모 및 대규모 데이터에 가장 빠르고 가장 인기 있는 백엔드입니다).
타원형 클라이언트는 모든 스토리지 서버에 직접 연결하여 다음을 지원합니다.
- O(1) 네트워크 요청에서 조회 실행(복제본당 단일 네트워크 요청)
- 여러 복제본에 동시에 쓰기/업데이트 명령 실행
데이터 액세스를 위한 몇 가지 애플리케이션프로그래밍 인터페이스(API)가 있습니다.
- 비동기 기능 약속 C++ 라이브러리
- 파이썬 바인딩
- 바인딩을 하다
- TheVoid 라이브러리를 기반으로 버킷 및 ACL을 포함하는 Lift라는 이름의 HTTP 프록시(boost::asio 사용)
- 커뮤니티 구동형 얼랑바인딩
특징들
- 분산 해시 테이블, 메타데이터 서버 없음, 진정한 수평 확장
- 데이터 리플리케이션– 리플리케이션을 다른 물리 장소에 저장할 수 있습니다.
- 범위 및 벌크 요구
- 서로 다른 I/O 스토리지 백엔드, 자체 로우 레벨 스토리지 백엔드 생성 API
- 노드 삭제 또는 추가 시 자동 데이터 파티셔닝
- 최종적으로는 일관된 복구
- 일관된 해시 어드레싱 모델
- 클러스터 통계
- 프론트 엔드: HTTP, 바인딩: C/C++, Go, Python
- 서버측 스크립트 실행 지원(쓰기 트리거 아날로그)
- TTL을 사용한 분산 SLRU 캐시
- P2P 스트리밍 지원(eblob 및 파일 백엔드만 해당 - Nginx 웹 서버와 같은 외부 애플리케이션은 프록시 없이 eblob 객체 파일에서 클라이언트로 직접 데이터를 스트리밍할 수 있음)
문제 및 제약 사항
- 궁극적인 일관성.Elliptics는 긴급 서버가 실제보다 오래된 파일 복사본을 반환할 수 있는 경우 완전히 배포됩니다.때로는 용납할 수 없는 경우도 있습니다.이러한 경우에는 시간 손실 때문에 보다 신뢰성 높은 데이터 요청 방법을 사용하는 것이 좋습니다.
- 데이터가 여러 서버에 병렬로 기록되기 때문에 클라이언트와 서버 간의 네트워크가 약점이 될 수 있습니다.
- API는 높은 수준의 요청에 불편할 수 있습니다.Elliptics는 사용자에게 SQL과 같은 데이터 요청을 제공하지 않습니다.
- Elliptics는 높은 수준의 트랜잭션을 지원하지 않기 때문에 명령 그룹이 완전히 실행되거나 전혀 실행되지 않는다고 보장할 수 없습니다.
- 트랜잭션은 그룹 내에서 원자성이며 기본 키에 따라 잠깁니다.
문서
Elliptics와 그 지원 프로젝트는 커뮤니티 Wiki에서 문서화되어 있습니다.이 문서에는 고급 설계 문서, 튜토리얼, 하위 세부 정보 및 기술 자료가 포함되어 있습니다.타원형 및 관련 프로젝트는 개방형 구글 그룹에서 논의됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "POHMELFS: A New But Old Distributed Linux File-System - Phoronix". www.phoronix.com. Retrieved 8 May 2017.
- ^ "POHMELFS returns [LWN.net]". lwn.net. Retrieved 8 May 2017.
- ^ "Entry 2008.01.31". Archived from the original on 6 October 2008. Retrieved 8 May 2017.
- ^ a b Evgeniy Polyakov (8 February 2012). "pohmelfs: call for inclusion".
- ^ "Как устроены облака Яндекса: Elliptics". Retrieved 8 May 2017.
- ^ "Elliptics — Yandex Technologies". api.yandex.com. Retrieved 8 May 2017.
외부 링크
- 를 클릭합니다Elliptics (official site).