대형 클라우드 컴퓨팅 플랫폼 분포식 기술 구축의 실천
강연자 소개
장문숭 박사는 아리그룹의 고급 연구원과 부회장으로 주로 기초 핵심 소프트웨어 연구와 클라우드 컴퓨팅 제품의 연구 개발을 책임지고 인터넷 소프트웨어와 하드웨어 분야의 성능 최적화를 추진하며 차세대 저탄소 저원가 전자상거래 인프라를 구축한다.그도 원본 코드와 리눅스 핵을 개방한 개발자로 유명한 리눅스 집단 프로젝트 LVS(리눅스 Virtual Server)의 창시자이자 주요 개발자이다.LVS 집단 코드는 리눅스 2.4와 2.6의 공식 내부 핵에서 전 세계에서 수만 세트의 LVS 집단 시스템이 운행되고 있으며 10억 달러에 가까운 가치를 창출했다고 보수적으로 추정된다.알리에 입사하기 전 텔텔의 수석 과학자이자 공동 창시자이며 국방과학기술대학 컴퓨터대학 부교수였다.그는 대형 시스템, 리눅스 운영체제, 시스템 소프트웨어 개발, 시스템 안전과 소프트웨어 개발 관리에 풍부한 경험을 가지고 있다.장문숭 박사는 2009년에 알리바바에 가입한 후에 타오바오의 핵심 시스템 연구와 알리바바그룹의 기초 연구를 맡았다. 2013년 10월부터 알리바바그룹의 시스템 연구와 알리바바그룹의 기초 연구 개발을 동시에 맡았다.
이 강연은 주로 다섯 부분으로 나뉜다.
클라우드 컴퓨팅의 도전과 수요
클라우드 컴퓨팅과 타오바오는 업무 특징에 있어 비교적 큰 차이가 있다. 그 중에서 가장 큰 차이는 타오바오, 티몰은 4천여 개의 작은 응용 프로그램에서 지원되고 모두 분포식 디자인이다. 많은 상황에서 한두 개의 응용 프로그램이 다운되어도 전체적인 서비스에 영향을 주지 않고 순서대로 복구할 수 있다.타오바오의 경우 거래량이 10% 이상 줄어든 경우만 P1 고장으로 간주해 전역에서 사용할 수 없는 시간을 계산하기 시작한다.
클라우드 컴퓨팅의 장면에 있어 하나의 클라우드 호스트가 다운되면 이 고객에게 100% 사용할 수 없다. 이것은 이 고객의 모든'몸과 마음'일 수 있다.그래서 클라우드 컴퓨팅 플랫폼은 신뢰성, 안정성에 대한 수요가 매우 높다.이전에 우리는 네트워크에 문제가 생겼을 수도 있지만 상부의 응용이 잘 되어 이 문제를 은폐했다.한편, 클라우드 플랫폼에 대한 요구는 더욱 높은 신뢰성을 요구하고 데이터를 잃어버려서는 안 되며 시스템이 안정적이고 성능이 좋아야 한다. 현재는 사용자가 물리적 컴퓨터를 사는 것과 성능이 차이가 많지 않다. 또한 문제를 신속하게 포지셔닝할 수 있어야 한다. 사용자가 문제를 발견하기 전에 문제를 해결하고 사용자가 감지하지 못하게 하는 것이 가장 좋다.그리고 원가가 낮아 사용자가 직접 서버를 사는 것보다 싸다는 것이 최하위권이다.
ECS의 분포식 저장 설계
ECS는 알리 클라우드의 클라우드 서버 제품 라인이자 가장 많이 팔리는 제품입니다.그 뒤에는 분포식 파일 저장으로 스냅샷 제작, 스냅샷 롤백, 사용자 정의 렌즈, 고장 이전, 네트워크 그룹 격리, 공격 방지, 동적 업그레이드 등 기능을 지원한다.ECS의 관리는 방대한 제어 시스템을 바탕으로 한다. 현재 하나의 제어 시스템은 3600대의 물리 기기의 규모를 제어할 수 있고 앞으로 5000대에서 2만 대까지 할 계획이다.
그 중에서 데이터의 신뢰성은 매우 관건적이다.아리운의 이전 방법은 데이터를 쓸 때 분포식 저장소의chunk 서버에 세 부를 동시 작성한 후에야 성공한 것이다. 이런 실현의 비용이 크고 시간이 길어서 당시 아리운의 사용자들은 성능이 좋지 않다고 불평했다.이후에 우리는 2-3의 비동기, 즉 2부를 동시 작성하여 성공을 확보했고 3부를 동시 작성하여 IO 성능이 어느 정도 개선되었다.우리는 지금 이 과정에 대해 다시 최적화를 한다. 읽기와 쓰기 성능 최적화의 관건은 성공한 시간을 되돌리는 데 있다. 왜냐하면 삼키는 확률은 시간의 꼴찌이기 때문에 시간 지연과 단축 성능이 향상될 것이다.지연 시간을 단축하는 사고방식 중 하나는 원래 너무 긴 노정을 차단하여 단축하는 동시에 데이터의 신뢰성을 확보하는 것이다.구체적인 사고방식은 다음과 같다.
입출력 경로의 각 층 캐치와 입출력을 쓰는 몇 가지 모드 탐색
응용 프로그램에서 디스크에 데이터를 쓰기 위한 요청을 보내는 경로에는 응용 프로그램의user cache(예를 들어 MySQL buffer pool), 운영체제의 캐시(예를 들어 Linux page cache), 하드웨어를 저장하는cache(예를 들어 디스크의 캐시) 등 3층 캐시가 있다.
따라서 다음과 같은 입출력 쓰기 모드를 설명할 수 있습니다.
클라우드 컴퓨팅 환경에서의 IO
위에서 분석한 것은 로컬의 상황입니다. 쓰기 목표는 로컬의 하드디스크 캐시와 저장 미디어입니다.그러면 클라우드 컴퓨팅 환경에서 우리는 로컬을 선택할 수 있을 뿐만 아니라 분포식 저장도 할 수 있다.분포식 저장은 로컬 저장 매체와 맞먹는다. 우리의 현재 사고방식은 그 위에 분포식 캐시 시스템을 로컬 하드디스크 캐시로 대체하는 것이다.클라우드 컴퓨팅 환경에서 전체 쓰기 IO 경로가 다음과 같습니다.
VM SYNC->PV 프런트엔드 FLUSH-> 백엔드->host->cache 시스템-> 분산 스토리지 시스템
데이터의 완전성을 확보하기 위해 우리의 의미는 모두 POSIX에 부합되고 의미를 상기 경로에서 VM에서 IO 전체 체인으로 전송합니다.
cache 시스템 효과
ECS의 쓰기 성능을 테스트하기 위해 다음 명령을 사용합니다.
./fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=16k -numjobs=2 -runtime=30 -group_reporting -size=30G -name=/mnt/test30G
iodepth=1 , SATA 200 iops, 8ms, ( ) 7ms。
SSD cache ,iops 600 , 3ms, 2ms 。
./fio -direct=1 -iodepth=8 -rw=randwrite -ioengine=libaio -bs=16k -numjobs=2 -runtime=30 -group_reporting -size=30G -name=/mnt/test30G
iodepth 8 , SATA iops 2100 , 7ms, 7ms 。
SSD cache ,iops 2900 , 5ms , 1ms。
cache :
- 。
- 。 ,Google Jeff Dean 2013 2 CACM The Tail at Scale :“ 1% 1S, 100 , , 1S 63%”
ECS의 다른 스토리지 선택
ECS : SATA , ; IO ; SSD , 11 /12 , chunk server 18 iops, ,iops 9 , 6 HT CPU, 。
, Hadoop、HBase、MongoDB 3 , SATA SSD ECS, 。
ECS 。 , 。 , , ——
SLB, RDS 및 OCS
SLB , 4 ( LVS) 7 ( Tengine), Anycast , 。 12 SLB 1200 pps, ; ECS( ) 70 pps, 。
RDS , ( )。RDS , , ; 、 , (MySQL) , , , , MySQL 。RDS , SLB , ODPS ,SLS ,OSS ,OAS , , 。 ,RDS tps ECS 、 。
OCS , Tair , Proxy 、QoS、 。OCS , , 。 ,OCS 99% 2ms , , OCS 。 ,OCS ECS Memcached 。
전 체인 모니터링 및 분석 시스템
RDS 。 RDS , : ,MySQL , , , , 。 , , , 。
, SQL 、 , Kafka , JStorm Spark ,ODPS 。 SQL T, , , , 、 。
RDS , , 。
미래 사업 전망
,ECS IO , 、 。 Cache , SSD , , SSD , ,GPU ,LXC/cgroups 。 SSD ,iops , CPU ?Cache , , , ? SATA , SSD ? 90% , , 。 , , , 。 、 , , ECS 。
RDS , MySQL SQL Server, PostgreSQL Oracle 。 , , , redo log, , , RDS , MySQL ? , 。
, , 。 , 、 AliBench ( )、OCR 、 CNN/DNN 。
。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.