Collective Intelligence

중국 1위 쇼핑몰 타오바오 (Taobao) 프레임워크 분석자료 본문

개발/Network

중국 1위 쇼핑몰 타오바오 (Taobao) 프레임워크 분석자료

유경파 2016. 4. 26. 17:14

알리바바가 운영중인 쇼핑몰은 여러가지가 있다. 그 중 중국에서 가장 유명한 사이트는 타오바오(taobao.com) 이라고 할 수 있다.

타오바오는 C2C 기반으로 가짜 물건을 올리는 사람이 많아서 문제가 되기도 하지만 여전히 많은 중국인들이 사용하고 있다.


(가짜 문제로 tmall.com이라는 알리바바의 B2C 사이트도 타오바오와 연결이 되어 있기도 하다.)


어쨌든 쌍십절이라고 하는 중국 국경일에는 타오바오의 트래픽이 어마어마하게 늘어난다. 미국의 블랙 프라이데이는 비교할 수도 없을


만큼 수많은 사람들이 쇼핑몰을 이용하고 수량의 제한 때문에 다들 장바구니에 상품들을 담아뒀다가 12시 땡하자 마자 결제를 하기


때문에 대용량 시스템에 관심이 많은 사람들이나 중국에서 크게(?) 사업을 해보고 싶은 사람은 관심을 가질 수 밖에 없다.


그래서 중국의 구글이라고 할 수 있는 바이두에서 타오바오에서 어떻게 쌍십절을 대비하여 대용량 데이터 처리를 준비하는지


찾아봤다. 번역기를 돌린거라 내용이 매끄럽진 않지만 이해는 할 수 있을 정도이다.




Taobao의는 "더블 11"기술 프레임 워크 분석 처리합니다

作者: TJ时间: 2013-11-20 18:10 阅读: 24881 推荐: 164 原文 [收藏] 저자 : TJ 발행일 : 2013 11 20 18 10 읽기 : 24881 추천 : 164 설명 링크 [즐겨 찾기]

“11”热门话题TB ,最近正好和阿里的一朋友聊淘的技发现很多有意思的地方,分享一下他的解析料: 더블 "11"가장 인기있는 주제는 흥미로운 장소를 많이 찾을 자신의 분석 데이터를 공유, 최근 알리 Taobao 기술 아키텍처의 친구와 이야기 TB입니다 :

海量品技 Taobao 대용량 데이터 기술 아키텍처

品的一最大特点是据的非实时写入,正因如此,我可以认为,在一定的时间,整据是只的。 제품의 가장 중요한 특징은 실시간 데이터는 데이터를 기록하고, 이에 따라 일정 시간에, 시스템 전체의 데이터를 읽기 전용으로 말할 수있다. 这为们设计缓存奠定了非常重要的基 이것은 우리의 디자인 캐시 매우 중요한 토대를 마련했다.



1 海量品技 그림 1 Taobao 대용량 데이터 기술 아키텍처

按照据的流向来划分,我把淘宝数品的技(如1所示),分据源、、存储层查询层 분할하는 데이터의 흐름에 따라, 우리는 ( 1) 기술 아키텍처 Taobao 데이터 제품을 가지고, 각각의 데이터 소스, 연산 , 기록 , 쿼리 층과 생성물의 . 位于架构顶端的是我里有淘主站的用、店、商品和交易等有用浏览、搜索等行日志等。 우리의 데이터 아키텍처의 상단에 사용자, 상점, 상품 무역 Taobao 마스터와 다른 데이터베이스뿐만 아니라 사용자 찾아보기, 검색 다른 행동 기록이있다, 소스 레이어입니다. 一系列的据是品最原始的生命力所在。 데이터의이 시리즈는 가장 원시적 데이터 제품의 활력이다.

据源层实时产生的据,通自主研发传输组DataXDbSyncTimetunnel实时传输到一1500个节点的Hadoop集群上,这个集群我们称云梯,是的主要成部分。 하둡 클러스터 노드 (1500) 실시간 전송 근처 Taobao 자체 개발 데이터 전송 컴포넌트 DATAX, DbSync Timetunnel 통해 실시간으로 생성되는 데이터 소스 , 우리는 "사다리"호출 클러스터의 층을 산출한다 주요 구성 요소입니다. 云梯上,我每天有大40000业对1.5PB的原始据按照品需求行不同的MapReduce算。 "사다리", 우리는 매일에게 맵리 듀스 다른 제품 요구 사항에 따라 계산 원시 데이터의 1.5PB 40,000 작업을해야합니다. 程通常都能在凌晨点之前完成。 계산은 보통 2 전에 완료 수있다. 于前端品看到的据,里的很可能是一个处于中间状态果,往往是在据冗余前端算之做了适平衡的果。 데이터를 프런트 엔드 제품에 대해, 여기에 결과 데이터 중복성 적절히 균형 수행 결과 프런트 엔드 컴퓨팅 사이 종종 중간 결과의 상태에있을 가능성이 높다.

不得不提的是,一些对实效性要求很高的据,例如针对搜索统计数据,我希望能快推送到品前端。 I 검색어에 대한 통계 데이터로서, 요구의 효과에 대한 일부 데이터가, 우리는 데이터 자마자 제품 전면에 푸시 것인지 언급한다. 这种需求再采用云梯来计算效率是比低的,此我做了流式据的实时计算平台, 이러한 요구는 상대적으로 낮을 것이다 효율을 계산하는 "사다리"라고 우리는 데이터 컴퓨팅 플랫폼, 스트리밍 실시간 "은하수." 也是一分布式系接收TimeTunnel实时消息,在存中做实时计算,果在可能短的时间内刷新到NoSQL储设备中,供前端用。 「은하는 "TimeTunnel 실시간으로 메시지를 수신하고, 메모리에 리얼 타임 계산을 수행하고, 최단 시간에 결과를 호출 프런트 엔드 제품 NoSQL 저장 장치를 갱신하는 분산 시스템이다.

容易理解,云梯或者不适合直接向品提供实时查询 "래더"또는 "갤럭시" 이해하기 쉬운 제품으로 직접 실시간 데이터 질의 서비스를 제공하기에 적합하지 않다. 是因云梯来说的定位只是做离线计算的,无法支持高的性能和并发需求;而而言,管所有的代都掌握在我手中,但要完整地将数据接收、实时计算、存查询等功能集成在一分布式系中,避免不了分,最仍然落到了目前的架上。 "사다리", 그것은 단지 높은 성능과 동시성 요구 사항을 지원하지 않는 계산에 위치해있어, 때문이고, "갤럭시" 대한, 우리의 손에 비록 모든 코드,하지만 계층화를 피할 수없는 분산 시스템에 통합 실시간 컴퓨팅, 스토리지 쿼리 기능에서 수신 데이터를 완료 끝은 여전히​​ 현재의 구조에 떨어졌다.

此,我们针对前端设计专门的存储层 이를 위해, 기록 층을 위해 특별히 설계된 프런트 엔드 제품에 초점을 맞추었다. ,我有基于MySQL的分布式系型集群MyFOX和基于HBaseNoSQL集群Prom,在后面的文字中,我重点介绍这两个集群的实现原理。 수준에서, 우리는 텍스트의 뒤에, 나는 MySQL 클러스터를 기반으로이 원칙의 실현에 초점을 맞출 것이다, 관계형 데이터베이스 클러스터 MyFOX 기반 HBase, NoSQL 저장 클러스터 댄스 파티를 배포. 除此之外,其他第三方的模也被我们纳入存储层的范 또한, 타사의 모듈은 또한 우리의 기록 층의 범위에 포함된다.

储层异构的增多,前端品的使用带来了挑 이기종 스토리지 계층 모듈 증가 과제 프런트 엔드 제품의 용도. 此,我们设计了通用的据中间层——glider——来屏这个 이를 위해, 우리는이 효과를 보호하기 위해 --glider-- 공통 데이터 중간층을 설계했다. gliderHTTP协议对外提供restful方式的接口。 글라이더 HTTP 프로토콜은 외부 인터페이스에게 편안한 방법을 제공합니다. 品可以通唯一的URL取到想要的据。 고유 URL 통해 제품 데이터는 원하는 데이터를 취득했다.

以上是淘海量品在技方面的一个概括性的介,接下重点方面据魔方设计上的特点。 이러한 일반의 대용량 데이터 제품 Taobao 기술 아키텍처의 도입, 그리고 그때는 데이터 큐브 디자인의 특징을 가지 측면에 초점을 맞출 것이다.

系型仍然是王道 관계형 데이터베이스는 여전히

系型RDBMS)自2070年代提出以,在工中得到了广泛的使用。 산업 생산에서, 1970 년대 이후 관계형 데이터베이스 (RDBMS) 널리 사용되어왔다. 经过三十多年的展,生了一批秀的库软件,例如OracleMySQLDB2SybaseSQL Server等。 급속한 발전의 삼십년 , 오라클, MySQL, DB2, 사이베이스 SQL Server 같은 우수한 데이터베이스 소프트웨어의 숫자의 탄생.



2 MyFOX中的据增线 그림 2 MyFOX 데이터 성장 곡선

管相于非系型而言,系型在分容忍性(Tolerance to Network Partitions)方面存在劣,但由于强大的语义能力以及据之系表能力,在品中仍然占据着不可替代的作用。 관계형 데이터베이스를 기준에도 불구하고, 관계형 데이터베이스는 단점 파티션 허용 오차 (네트워크 파티션에 대한 내성) 측면을 존재하지만, 때문에 데이터 제품의 강력한 기능의 표현과 의미 론적 데이터 사이의 관계를 여전히 점유 대체 수없는 역할.

宝数选择MySQLMyISAM引擎作据存引擎。 기본 데이터 스토리지 엔진으로 Taobao 데이터 제품 선택의 MySQL MyISAM 엔진. 在此基上,应对海量据,我们设计了分布式MySQL集群的查询代理——MyFOX,使得分区对前端用透明。 이를 기초로, 대량의 데이터를 처리하기 위해, 우리는 분산 질의 프록시 디자인 --MyFOX MySQL 클러스터, 프론트 - 엔드 애플리케이션에 대해 투명하게 파티션.



3 MyFOX查询过 그림 3 MyFOX 데이터 쿼리 프로세스

目前,存MyFOX中的统计结据已经达10TB,占据着据魔方总数据量的95%以上,且正在以每天超6亿的增量增着(如2所示)。 현재 MyFOX 저장된 데이터의 통계, 10TB 도달 데이터의 총량 데이터 큐브의 95 % 이상을 점유하고 상당히 일일 증분 증가 ( 2) 이상 600,000,000 성장하고있다. 据被我近似均地分布到20MySQL点上,在查询时MyFOX透明地外服(如3所示)。 이러한 데이터는 고르게 MyFOX 투명 외부 서비스 (그림 3 참조) 통해 쿼리에 20 MySQL 노드에서 우리에게 배포됩니다.



4 MyFOX结构 MyFOX 4 노드 구조 다이어그램

得一提的是,在MyFOX有的20个节点中,不是所有点都是平等的。 또한, 노드가 모든 "동일"없는 20 노드를 기존 MyFOX, 언급 가치가있다. 一般而言,品的用更多地只最近几天据,越早的据,越容易被冷落。 단지 많은 관심을 일반 사용자 데이터 제품에서 "최근에,"데이터, 이전 데이터, 가능성은 생략 있습니다. 此,出于硬件成本考,我20个节点中分出了热节(如4所示)。 이를 위해, 하드웨어 비용 고려를 위해, 우리는 "​​ 노드" 노드 (20)에서 "콜드 접합부"( 4) 분리 하였다.

名思热节存放最新的、被访问频高的据。 이름에서 있듯이, 현재까지 높은 주파수 데이터를 저장하는 " 노드는"액세스 있습니다. 部分据,我希望能提供可能快的查询速度,所以在硬方面,我们选择了每分15000SAS,按照一个节台机器来计算,据的存成本约为4.5W/TB 데이터의이 부분에 대해 저장된 데이터의 단위 비용을 계산하기 위해 노드에 기계에있어서, 우리는 가능한 신속하게 사용자에게 질의 속도를 제공하기 희망 때문에 하드 드라이브, 우리는 15,000 RPM SAS 하드 드라이브를 선택한 4.5W / TB. 对应地,们选择了每分7500SATA碟上能存放更多的据,存成本约为1.6W/TB 이에 대응하여, "콜드 데이터는"우리는 1.6W / 결핵에 대한 자세한 데이터 스토리지 비용을 저장할 수있는 7500 RPM SATA 하드 드라이브 플래터를 선택했다.

热数行分离的另外一是可以有效提高存磁比。 냉온수 데이터를 분리하는 다른 이점은 효과적으로 메모리 디스크 비율을 향상시킬 수있다. 从图4可以看出,热节机只有24GB存,而磁1.8TB300 * 12 * 0.5 / 1024),存磁约为4:300远远低于MySQL器的一合理 300까지 MySQL 서버 아래 그림 4에서 수있는 바와 같이, " 노드는" 4 1.8TB 대한 (300 * 12 * 0.5 / 1024), 메모리, 디스크 비율 가득 전용 메모리의 24기가바이트 디스크 독립형 합리적인 . 存磁致的后果是,有一天,即使所有存用完也存不下据的索引了——这个时候,大量的查询请求都需要取索引,效率大打折扣。 결과보다 낮은 메모리 디스크는, 어느 , 메모리 부족 모든 실행은 또한 어떤 인덱스 데이터 저장해도 - 그리고, 쿼리 많은 수의 디스크에서 인덱스를 읽는 필요한이 시간, 효율이 크게 감소.

NoSQLSQL的有益 NoSQL에는 SQL 대한 유용한 보완

MyFOX之后,一切都看起完美,开发甚至不MyFOX的存在,一不用任何特殊修SQL句就可以足需求。 MyFOX 표시 , 모든 개발자는 심지어 SQL 문의 요구를 충족하기 위해 특별한 수정없이 MyFOX, 하나의 존재를 인식하지 않습니다, 너무 완벽 보인다. 这个状态了很一段时间,直到有一天,我们碰到了传统系型无法解问题——选择器(如5所示)。 전체 속성 선택기 ( 5) - 상태는 어느 , 우리는 전통적인 관계형 데이터베이스는 문제를 해결할 수없는 만족 장시간 계속된다.



5 选择 5 완전 속성 선택자

是一非常典型的例子。 이것은 매우 전형적인 예이다. 问题,我仍然以系型的思路描述。 문제를 설명하기 위해, 우리는 여전히 관계형 데이터베이스를 설명하는 생각. 笔记电脑这个类目,用某一次查询选择过滤条件可能包括笔记本尺寸笔记本定位容量等一系列性(字段),且在每可能用在过滤条件的性上,的分布是不均的。 카테고리 필터 노트북의 경우, 사용자는 필터 조건의 "노트북 크기" "노트북 위치", "하드 드라이브 용량" 특성 (필드) 시리즈 모든 가능한 사용을 포함하는 쿼리를 선택할 수있다 재산에, 속성 값의 분포는 매우 고르지입니다. 5中我可以看到,笔记电脑的尺寸性有着10举值,而牙功能这个属布尔据的筛选性非常差。 그림 5에서 우리가이 속성은 10 열거 값이 노트북 "블루투스" 속성 값의 크기가 부울 값입니다 수있는 데이터의 선택은 매우 좋지 않습니다.

在用选择过滤条件不确定的情下,解问题的思路有两个:一穷举所有可能的过滤条合,在云梯算,存入查询;另一是存原始据,在用户查询时根据过滤条筛选出相记录进现场计算。 불확실한 사용자에 의해 선택된 필터 기준의 경우, 전체의 속성의 문제를 해결하는 아이디어는 가지있다 :, 다른 하나는 미리 계산 쿼리에 대해 데이터베이스에 저장된에 "사다리" 필터 조건들의 모든 가능한 조합들의 소모적 하나는 원시 데이터를 저장할 있으며, 사용자의 질의는 필터 기준 필드 계산에 기초하여 대응하는 레코드를 필터링. 很明,由于过滤条件的排列合几乎是无法穷举的,第一方案在现实中是不可取的;而第二方案中,原始据存在什地方? 번째 시나리오 동안, 원래의 데이터가 어디에 저장되어 필터 조건의 순열 조합을 총망라하는 것은 거의 불가능하기 때문에 당연히, 번째 옵션은 실제로 바람직하지 않다? 如果仍然用系型,那么你打算怎样为这个表建立索引? 당신은 여전히​​ 관계형 데이터베이스를 사용하는 경우, 당신은 어떻게 테이블에 대한 인덱스를 구축하는 건가요?

一系列问题把我引到了建定制化的存现场计提供查询的引擎的思路上就是Prometheus(如6所示)。 질문이 시리즈는 우리를 인도 "사용자 정의 저장소를 만들고, 현장 컨설팅 서비스를 제공하는 컴퓨팅 엔진,"아이디어는 프로 메테우스 (그림 6) 최대했다.



6 Prom的存储结构 도의 저장 구조. 6 댄스 파티

从图6可以看出,我们选择HBaseProm的底引擎。 6에서 수있는 바와 같이, 우리는 댄스 파티 HBase 기본 스토리지 엔진으로 선택했다. 之所以选择HBase,主要是因为它是建立在HDFS之上的,MapReduce有良好的程接口。 HBase 그것이 좋은 프로그래밍 인터페이스에 대한 HDFS 맵리 듀스의 상단에 내장되어 주로하기 때문에 선택했다. Prom是一通用的、解共性问题的服框架,但在里,我仍然以全选择为例,来说Prom的工作原理。 비록 댄스 파티는 서비스의 일반적인 문제를 해결하기위한 일반적인 프레임 워크이지만, 여기에 우리가 댄스 파티 작동 설명하기 위해 예를 들어 전체 속성 선택에서 아직도. 里的原始据是前一天在淘上的交易明,在HBase集群中,我与属合)作row-key行存 HBase 클러스터의 Taobao의에 거래 내역, 우리는 저장소로 (속성의 조합과 속성 ) 속성 전에 여기에 원시 데이터는 . row-key对应,我们设计两个column-family,即存放交易ID列表的index字段和原始交易明data字段。 키에 대응하는 , 우리는 , 데이터를 저장하는 필드 트랜잭션 ID 목록 인덱스 필드와 거래의 원본 목록에 개의 가족을 설계했습니다. 在存候,我有意字段中的每一元素都是定的,了支持通偏移量快速地找到相应记录,避免复杂找算法和磁的大量求。 저장하는 경우, 우리는 의식적으로 필드가 레코드를 빠르게 대응하여 오프셋 찾을 지원하는 요소의 ​​ 길이되도록 무작위 읽기 요청 정교한 검색 알고리즘과 많은 수의 디스크를 피하는 .



7 Prom查询过 그림 7 댄스 파티 쿼리 프로세스

7用一典型的例子描述的Prom在提供查询务时的工作原理,限于篇幅,里不做详细描述。 전형적인 예와 무도회는 공간이 제한 7 일이 없다 여기서 상세히 설명, 쿼리를 처리도에서 설명. 得一提的是,Prom支持的限于求和SUM算,统计上的常用算都是支持的。 그것은 것을 언급 가치가, 무도회 컴퓨팅 지원 유의성의 계산에 사용 SUM 동작에 한정되지 않고 지원된다. 现场计算方面,我们对HBase行了展,Prom要求每个节点返回的据是已经经过本地的局部最解,最的全局最解只是各个节点返回的局部最解的一个简单汇总 노드가 반환 데이터는 "로컬 컴퓨팅"지역 OPTIMA, 최종 글로벌 최적의 솔루션은 로컬 노드를 반환하기위한 최적의 솔루션입니다 통과 것을 현장 컴퓨팅, 우리는 HBase 확장, 댄스 파티가 필요 간단한 요약. 然,这样设计思路是要充分利用各个节点的算能力,且避免大量明细数据的网络传输开销 분명히, 이러한 설계 개념은 노드의 병렬 계산 능력을 활용하고, 네트워크 트래픽 오버 헤드 정보 데이터를 많이 피하는 것이다.

用中间层隔离前后端 이전과 중간층 아이솔레이션 포트

上文提到MyFOXProm为数品的不同需求提供了据存和底层查询的解方案,但之而问题是,各种异构的存块给前端品的使用带来了很大的挑 위에서 언급 데이터 제품의 다양한 요구에 대한 MyFOX 댄스 파티는 데이터 저장 기본 쿼리에 대한 솔루션을 제공하지만, 다양한 이기종 스토리지 모듈은 프론트 - 엔드 제품을 사용하는 교환 문제 제기 도전. 且,前端品的一个请求所需要的据往往不可能只块获取。 또한, 프론트 - 엔드 제품에 필요한 데이터에 대한 요구는 종종 단지 하나의 모듈로부터 얻을 없다.

举个例子,我要在据魔方中看昨天做热销的商品,首先MyFOX中拿到一个热销行榜的据,但里的商品只是一ID并没ID对应的商品描述、片等据。 예를 들어, 우리는 MyFOX 데이터의 핫리스트를 얻을 어제 상품 판매 데이터 큐브 싶지하지만 "상품" 단지 ID이며, 해당하는 ID 정보가 없다 , 사진 기타 데이터. 这个时候我主站提供的接口中去据,然后一一对应热销排行榜中,最现给 마스터 스테이션으로부터 이번에 우리들은 Taobao 이러한 데이터를 획득하고, 핫리스트에 대응하는 인터페이스, 최종 사용자에게 프리젠 테이션을 제공한다.



8 glider的技 그림 8 글라이더의 기술 아키텍처

经验者一定可以想到,来讲就是广上的异构JOIN操作。 경험이 풍부한 독자는 작업 사이에 "테이블" 가입 광범위하게 이기종 본질에서 생각 수있을 것입니다. 谁来负责这个事情呢? 그래서, 일에 대한 책임 누구인가? 很容易想到,在存储层与前端品之增加一间层它负责个异构JOINUNION算,且隔离前端品和后端存,提供一的查询 이는 통합 데이터 액세스 서비스를 제공하는, 결합하고 UNION 컴퓨팅 사이 다양한 이기종 데이터 "테이블" 담당 중간층을 증가시키고, 선단을 분리 스토리지 제품 백엔드 저장 프런트 엔드 제품 간의 생각하기 쉽다 . 这个间层就是glider(如8所示)。 중간층은 글라이더 (그림 8)입니다.

存是系化的工程 캐시는 체계적인 프로젝트

除了起到隔离前后端以及异构据整合的作用之外,glider的另外一不容忽的作用便是存管理。 전방 후방 단부와 분리 이외에 다른 무시할 수없는 캐시 관리는 외부 글라이더의 역할 사이에서 이종 데이터 "" 통합을한다. 上文提到,在特定的时间,我们认为数品中的据是只的,是利用提高性能的理 특정 시간에, 상기 언급 , 우리는 제품 데이터가 이론적 기초의 성능을 향상시키기 위해 사용되는 캐싱, 읽기 전용 믿는다.

8中我看到,glider中存在两层缓存,分是基于各个异构datasource)的二级缓存和整合之后基于求的一级缓存。 그림 8에서, 우리는 각각의 이성질체 "테이블"(데이터 소스) 독립 요구에 기초하여 보조 캐시와 통합 캐시를 기반으로 캐시, 글라이더의 존재를 참조하십시오. 除此之外,各个异构部可能存在自己的存机制。 또한, 개별 이성질체 "" 자체 내부 캐싱 메커니즘을 가질 수있다. 心的者一定注意到了3MyFOX设计,我们没选择对汇总计算后的最终结存,而是针对分片存,其目的在于提高存的命中率,且降低据的冗余度。 조심 리더는 우리가 최종 계산 결과에 여지 캐시에 요약되어 있지만, 캐시 히트 율을 향상시킬 목적으로, 조각에 대한 캐시가없는, MyFOX 3 캐시 설계를 발견하고, 데이터를 감소 있어야 중복.

大量使用存的最大问题就是据一致性问题 가장 문제는 캐시 데이터 일관성 문제가 광범위하게 사용된다. 如何保层数据的化在可能短的时间内现给呢? 어떻게 짧은 시간에 기본 데이터의 변화가 최종 사용자에게 반영 있도록? 一定是一的工程,尤其于分层较多的系统来说 특히 많은 계층 시스템, 체계적인 프로젝트를해야합니다.



9 存控制体系 9 캐시 제어 시스템

9向我展示了据魔方在存控制方面的设计思路。 그림 9 우리에게 캐시 제어 디자인 아이디어의 데이터 큐브를 보여줍니다. 求中一定是存控制的命令的,包括URL中的query string,和HTTP中的“If-None-Match”信息。 사용자 요청 URL 쿼리 스트링을 포함 캐시 "명령" HTTP 헤더 "IF-없음 매치"정보로 제어되어야한다. 且,这个缓存控制命令一定会经过层层传递,最终传递到底异构 또한, 캐시 제어 "명령"층을 통과 것이며, 마지막으로 기본 스토리지 이종 "테이블"모듈로 전달. 异构除了返回各自的据之外,还会返回各自的时间ttl),而glider终输出的时间是各个异构时间的最小 데이터로 돌아 외에 이성질체 "" 의지는 데이터 캐시 만료 시간 (TTL) 복귀하고, 만료 시간 글라이더 최종 출력은 최소 개별 이성질체 "테이블"만료 시간입니다. 时间也一定是储层层传递,最HTTP返回户浏览器的。 유효 시간은 또한 하부 저장 층에서 전달 , 궁극적 HTTP 헤더 브라우저를 통해 사용자에게 반환한다.

存系不得不考的另一个问题存穿透失效的雪崩效 캐시 시스템의 다른 문제가 고려하는 것은 캐시의 애벌란 효과 침투 실패이다. 存穿透是指查询一定不存在的据,由于存是不命中动写的,且出于容,如果储层查不到存,这将导这个不存在的据每次求都要到存储层查询,失去了存的意 캐시 침투 캐시 내결함성을 위해 수동형 쓰고 대가 충돌하지 않기 때문에 존재하지 이어질 것이다 캐시에 기록되지 않은 기록 층에서 데이터를 찾을 수없는 경우, 존재하지 않는 특정 데이터를 쿼리 지칭 데이터 요청이 쿼리 저장 층에 때마다, 캐시의 의미를 잃었다.

有很多方法可以有效地解决缓存穿透问题,最常是采用布隆过滤器,所有可能存在的据哈希到一大的bitmap中,一一定不存在的这个bitmap截掉,而避免了查询压力。 효과적으로 캐시 통해 문제를 해결할 수있는 여러 가지 방법으로, 가장 일반적인 필터의 사용은, 특정 데이터의 부재에 충분히 비트 맵에 대한 모든 가능한 데이터 해시 따라서 기본 스토리지 시스템 쿼리 압력을 회피 오프 채기. 据魔方里,我采用了一为简单粗暴的方法,如果一个查询返回的空(不管是据不存在,是系故障),我仍然把这个存,但时间会很短,最不超五分 쿼리 (데이터가 존재, 또는 시스템 장애하지 않습니다 여부), 우리는 여전히, 결과 캐시를 있지만 만료 시간을 데이터를 반환하는 경우 데이터 큐브에서 우리는, 간단하고 원유 방법을 채택하고있다 그것은 매우 짧은, 이상 5 이상이 것입니다.

存失效的雪崩效应对的冲非常可怕。 기본 시스템에 눈사태 캐시 실패에 미치는 영향은 매우 끔찍하다. 憾的是,这个问题目前并没有很完美的解方案。 불행하게도, 문제는 완벽한 솔루션은 없습니다. 大多统设计者考用加或者列的方式保证缓存的单线程)而避免失效大量的并发请求落到底上。 대부분의 시스템 설계자들은 동시 요청의 다수의 기본 스토리지 시스템에서 떨어질 고장을 피하기 위해, 로킹 작성 또는 단일 스레드 보장 캐시 (프로세스) 의한 방법을 고려한다. 据魔方中,我们设计期机制理上能够将端的据失效时间地分布在时间轴上,一定程度上能避免存同失效带来的雪崩效 데이터 큐브에서, 각각의 클라이언트의 데이터를 위해 수있는 캐시 만료기구 설계 이론 균일 시간축상에서 분산 시간 실패, 어느 정도까지는 동시에 실패에게에서 캐시 의한 애벌랜치 효과를 피할 .

결론

正是基于本文所描述的架特点,据魔方目前已提供压缩80TB据存据中间层glider支持每天4000万的查询请求,平均响应时间28毫秒(61据),足以足未一段时间内业务需求。 그것은 본원에 기술 구조적 특징에 기초하고, 데이터 큐브 이제 데이터 글라이더 중간층 지원 28 밀리 세컨드의 평균 응답 시간과 하루 40,000,000 쿼리의 미리 압축 데이터 저장 공간 80TB 제공 수있다 (6 1 데이터) 시간에 대한 미래의 수요 증가를 충족하기에 충분.

管如此,整中仍然存在很多不完善的地方。 그럼에도 불구하고, 여전히 시스템에 많은 결함이있다. 典型的例子莫于各使用短接模式的HTTP协议进行通信。 전형적인 예는 다양한 계층 모드 HTTP 프로토콜 간의 짧은 연결의 사용이다. 这样的策略直接致在流量高峰期机的TCP非常高。 독립형 TCP 연결의 피크 트래픽 기간에 직접 인도이 전략은 매우 높다. 所以,一良好的架固然能在很大程度上降低开发维护的成本,但自身一定是据量和流量的化而不断变化的。 그래서, 당연히, 양호한 구조는 정도의 개발 유지 보수 비용을 줄일 있지만, 자체가 데이터 트래픽과 끊임없이 변화의 양에 따라 변화한다. 我相信,不了几年,淘宝数品的技一定是另外的子。 나는 , 기술 아키텍처 Taobao 데이터 제품은 다른 방법이 것으로 판단된다.

其他文章摘要 다른 기사 요약

   1 海量域涵盖分布式、分布式存实时计算、分布式算等多方向。 [1] 분산 데이터베이스, 분산 다수의 저장 기술에 의해 덮여 방대한 데이터 영역은 실시간 데이터 계산, 컴퓨팅 방향 분포.

于海量理,从数库层来讲无非就是点:1力如何分,分的目的就是了把集中式变为分布式。 대용량 데이터 처리의 경우, 그것의 측면에서 데이터베이스 레벨에서, 지점에 지나지 않는다 : (1) 압력을 공유하는 방법, 목적은 분배에 중앙 집중화한다. 2、采用多的存方案,针对不同的业务数据,不同的据特点,采用RDBMS或采用KV Store选择不同库软件,使用集中式或分布式存,或者是其他的一些存方案。 2 다른 비즈니스 데이터, 다른 데이터 특성, RDBMS 또는 KV ​​장소를 사용하는 다양한 저장 솔루션을 이용하여, 중앙 집중 또는 분산 기억 장치, 또는 다른 저장 용액을 사용하여, 다른 데이터베이스 소프트웨어를 선택한다.

2将数库进行拆分,包括水平拆分和垂直拆分。 [2] 수평 수직 스플릿 스플릿을 포함한 데이터베이스를, 분할.

水平拆分主要解决两个问题1、底的无性。 1, 독립의 기본 스토리지 : 수평 분할은 주로 가지 문제를 해결합니다. 2、通过线性的去增加机器,支持据量以及访问请求包括TPSTransaction Per Second)、QPSQuery Per Second)的力增 2 선형 기계 증가 할뿐만 아니라, TPS (초당 트랜잭션) 압력, QPS (쿼리 초당) 증가를 포함하여 데이터 액세스 요청의 크기를 지원한다. 其方式如把一据表按一定的方式拆分到不同的器上。 다른 방식으로, 데이터베이스 서버에 분할 데이터 테이블을 특정 방식과 같은.

海量集中式走向分布式,可能涉及跨多IDC容灾备份特性。 분산에 중앙에서 대규모 데이터는 여러 속성에서 IDC 재해 복구를 포함 수있다.

3】阿里巴巴的同地域据的理方法。 [3] 다른 지리적 데이터 알리바바 데이터 처리 방법.

由三个产品密切配合解:是ErosaEromangaOtter 해결과 긴밀하게 협력 가지 제품으로 구성 : Erosa, Eromanga 달입니다.

ErosaMySQL(或其他库库)的Bin-Log时时解析,解析后放到Eromanga Erosa 로그는 항상 Eromanga 해석 해결 MySQL (또는 다른 데이터베이스 라이브러리) 않습니다. Eromanga是增量据的订阅品。 Eromanga 증분 데이터 구독 제품을 출시한다. Erosa生了时时变更的布到Eromanga Erosa 수시로 Eromanga 데이터를 게시로 변경했다. 然后各个业务端(搜索引擎、仓库关联业务方)通过订阅的方式,把时时变更的时时的通PushPull的方式拉到其业务端,行一些业务处理。 그리고 가입의 방법으로 사업 종료 (검색 엔진, 데이터웨어 하우스 또는 비즈니스 관련 당사자), 자주는 비즈니스 측면에 의해 수시로 변경 데이터는 푸시를 당기거나, 어떤 비즈니스 프로세스 방식을 당깁니다. Otter就是跨IDC据同步,把据能及反映到不同的AA站。 오터 데이터는 다른 AA 스테이션에 반영 있고, 크로스 IDC 데이터 동기화이다.

据同步可能有冲突,暂时是以那站点为优先,比如A机房的站点的据是先的,不管怎么样就覆盖到B的。 데이터 동기화 위치의 방은 B 커버에 어떤 상관없이, 그러한 우선 순위없는 데이터로서 일시적으로 우선 순위와 같은 사이트 데이터에 기초하여 충돌을 수있다.

4存。 [4] 캐시.

1、注意切分力度,根据业务选择切分力度。 1 참조하면, 서비스 선택 세그멘테이션 노력에 따라, 분할 노력을 참고. 存力度分的越存命中率相对会越高。 캐시는 미세한 노력을 분할되어, 캐시 히트 율이 상대적으로 높을 것이다.
2
、确认缓存的有效生命周期。 2, 검증 라이프 사이클 캐시.

5】拆分策略 [5] 해결 정책

1、按字段拆分(最力度)。 1, 필드 분할 (최고의 노력) 따라. 如把表的Company字段拆掉,就按COMPANY_ID拆。 이러한 제거 테이블의 회사 필드로, 다음 해체 COMPANY_ID 누릅니다.

2、按表拆,把一表拆到MySQL,那表拆到MySQL集群,更似于垂直拆分。 2, 철거에 표에 따라, MySQL의에 테이블의 철거, MySQL 테이블은 수직 분할에 가깝다 클러스터로 분할.

3、按Schema拆分,Schema拆分跟用相的。 스키마에 의해 분할 3, 스키마는 응용 프로그램과 관련된 분할합니다. 如把某一模据放到某一机群,另一模据放到其他MySQL机群。 다른 MySQL 클러스터 서비스에 다른 모듈에서 함대 데이터로 모듈에 데이터 서비스를 제공합니다. 外提供的整体服些机群的整体合,用Cobar来负责协调处理。 그러나 코바, 클러스터의 전체 조합 외부에 제공하는 전체 서비스는 조정 과정에 대한 책임을 져야합니다.

Cobar似于MySQL Proxy,解析MySQL所有的协议,相于可以把看成MySQL Server来访问的。 MySQL 프록시 같은 코바는, MySQL은이 액세스에 MySQL 서버의 등가로 수있다, 모든 프로토콜을 해결.

 


'개발 > Network' 카테고리의 다른 글

[중국 쇼핑몰 분석] dns-prefetch  (0) 2016.04.22
중국에서의 서버 및 네트워크 구성  (0) 2016.04.05